转载

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

「2016 与我的数字生活」年度征文入围作品

今年,我们在 2016 年度盘点中举办了一次大型年度征文活动,鼓励大家围绕「数字生活」为主题,回顾刚刚过去的 2016 年。 我们给予最开放的选题、最自由的投稿方式、有史以来最丰厚的 奖品,以及跨越春节的两个月充足时间,等你参与。你可以 点此查看 活动规则和奖品清单。

本文是「 2016 与我的数字生活」征文活动的 第 12 篇 入围作品,我们会在两个月的活动期内,不定期从收到的投稿中挑选发布优秀的文章,你可以 点此查看之前的入围文章。所有经此发布的文章,即为已入围征文活动。 本文仅代表作者本人观点,少数派仅对标题和排版略作调整。

2016 年对我来说是特殊的一年,这一年中,收到了谢菲尔德大学的 Offer,生活的地方由中国上海变为了英国的谢菲尔德,同时,也开发出来了数款 App,每一款都有着自己的故事。看了下其他人的征文,都在讲述如何使用他人的 App 提高生活质量,这篇文章将会从开发者的角度讲述一下,我是如何用自己的产品改变数字生活的。

自我介绍

先介绍下自己吧,我是一名大二学生,现在在英国读电子信息工程,这个专业与 App 开发和计算机没有任何关系,所有的知识,都是我自己学习的,相当于是兴趣爱好吧。在学习生涯中,会定期维护自己的科技博客,维护自己开发的各种 App,外出摄影等等,在后面会一一介绍。

走上 Andriod 开发道路

说到我 App 开发生涯的开始是在 2015 年,那一年年初我有了自己的博客 MikeTech , 在那年 7 月,我开始了 Andriod 的开发生涯并且在学习 Andriod 开发一个月后为我的网站开发出来了  App。第一个版本是这个样子的:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

这个 App 从有想法以来到编程到上架 Google Play 一共用了差不多 5 天时间,主要的开发地点是在上海的一个小旅馆里 (当时顺便来上海和朋友看 China Joy,晚上就住那) ,使用的是自己购买的一台二手并经过魔改的 ThinkPad X220,如果真的想写出来一个产品的话其实电脑配置什么的都不是问题。

虽然现在看起来真是怎么看怎么丑,不过当时刚开发出来的时候那感觉真是厉害,毕竟是我开发出来的第一个有实质意义的产品。在之后的时间里,很长时间内我都是只是在维护这一款产品,虽然没什么人用,但是通过维护这一款产品,我的 Andriod 开发水平不断地提高,到了之后的版本中,仅仅去实现一个功能已经不再是我开发时的主要目的。我开始将更多的重心放在了设计和用户体验上。慢慢的开始适配 Google Material Design 设计规范,提升用户的使用体验,并且不断添加更多功能。 MikeTech For Andriod 是我维护时间最长的 App,也是见证了我开发与设计能力提升的 App,在 2016 年的最后几天,我再一次推送了新版本。这一次,是这样的:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

走上 iOS 开发道路

我开始为 iOS 设备开发应用的时候是在 2016 年初,在去年晚些时候突发奇想在自己的 ThinkPad 上鼓捣了一下黑苹果,不过不是很理想,不能装最新版本的 Xcode 开发环境 (不过当时也不会开发 iOS) ,没有网络,没有声卡。当时还发了个朋友圈炫耀了一下。没过多久,我妈发来消息:「如果你真的很想要一台 MacBook 的话就给你买一个」,因为我给她提到过吧,她答应我 2016 年 9 月份如果真的收到了英国大学的 Offer 就给我买一台。不过看来我拥有一台 MacBook 的时候要提前了,之后又过了几周,忙完了学校的论文,在学校旁边的 Apple Store 购买了一台 15 寸的 MacBook Pro。这台 MacBook 是迄今为止我在电子产品中最值得的一笔投资,实在是太好用了,即使已经使用了 1 年多,这台机器速度依旧飞快,满足着我日常的各种需求。

不过之后由于学校的事情比较忙,学习 iOS 开发的事情就被我淡忘掉了。直到寒假,一天晚上睡不着觉,看了看网上 iOS 开发的教程,虽然 iOS 和 Andriod 使用的不是一个开发语言 (一个是 Java,一个是 Swift 或者 Objective-C) 但是看了一会,觉得都是一个套路,可以为自己的博客网站开发出 iOS 客户端了。

于是开始为 iPhone 开发自己博客的 App,可能当时也是有点急吧,每次为 Andriod 版推送更新的时候,总会有人很有优越感的说:「可惜我用的是 iPhone 」。开始开发的第一天就写好了原型,不过当时也是什么都不会,摸着石头过河。正好放寒假,除了出门聚会走亲戚就是写代码。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

功夫不负有心人,用了十几天,学习带开发,第一个版本终于问世了,刚好也开学了,可以接着投入到学校的事情中了。用压岁钱交了 99 美元的 Apple 开发者注册费用。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

不过, iPhone 版的上架就没有 Andriod 版那样一帆风顺了,被苹果以各种理由拒绝上架。举几个例子哈,我的博客分类中,有一个类别叫做 Andriod,苹果直接因为这个拒绝上架。之后,有一张应用截图上面出现了 Andriod 字样。又被拒绝。反正来来回回被拒绝了很多次,每次拒绝再审核都要大概一周的时间,折腾了大概一个月,最后还是登上了 App Store,成为了我的第一个 iPhone 应用。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

之后的一个学期,我空余时间也会维护这个 App,进行了若干次更新,改变过数次设计。当我宣布 iPhone 版的 MikeTech 上架的时候,还是会有人跳出来说,可惜我用的是三星 S7,我笑而不语。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

Lens Genius [Andriod]

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

之后就大概是 7 月份了,放暑假了,在家里忙了一个暑假的出国准备,到了 8 月多终于签证什么的都办好了,一切都准备就绪了,可以出去玩一玩放松一下了。我平时也喜欢摄影,平时外出旅游的时候会携带一台 Nikon D810 拍摄照片。

在旅途中难免也为镜头不适合操心,想着买一个其他焦段的镜头来弥补 (也就是想一想) ,但是每次选镜头都要去官网,比对还很麻烦,手机上也不方便,于是我就想看看有没有什么 App可以看下镜头参数,下面是我在网上看到的别人写的 App:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

算了。自己开发一个吧,在旅途中,用了 3 天时间,我开发出了这款镜头数据库 App: Lens Genius 。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活 这个 App 包含了各种厂商 (尼康,佳能,索尼,三星,富士,施耐德等等) 的九百多只镜头的详细参数,还是离线的,并且检索和筛选起来特别的方便,简直是挑选镜头的必备。在设计上遵循了 Google Material Design。在 Google Play 上可以下载,免费!

Costuary [Andriod]

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

9 月份就要出国了,到时候所有的金钱都得自己管理,并且管理的还不是人民币,是英镑。由于汇率诧异过大,当我花掉 5 英镑的时候是感觉不到自己花掉了 40 多人民币的,所以,我预先在国内开发了这款记账 App, Costuary App 名字是花费 (Cost) 和精算师 (Actuary) 的结合。

这个记账 App 是我独立开发过的最大的 Andriod 项目,支持多币种实时自动换算,可以将花掉的英镑用实时汇率转换成人民币显示出来,并且拥有详细的周,月,年报表,支持 Excel 导出。

这是第一个版本:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

结果被吐槽的有点严重。甚至丑的都不让上架,当时我看到这封邮件的时候正好在签证中心,一口老血喷出来。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

之后我重新设计了整个 App:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

在发布了稳定版本之后,决定为这个 App 加上云同步服务,这对我来说可不是一件容易事,要牵扯到后端服务和后端开发。在一个公司中, Andriod 开发者, iOS 开发者,后端服务,是三个不同的职位。可是如果想实现云服务功能,就得自己去学习这些。

开发一个同步服务并没有那么简单,要考虑的事情很多,把账本同步到云端账户上,并且还要同步已经删除的项目,要么在第二台设备上即使删除过的条目还是会同步回来。还有就是需要支持并发性,必须要设计一个可靠的系统来让整个 App 即使再有几千笔账目的时候与服务器同步也能做到不卡。需要考虑的事情太多太多,毕竟这是我第一次开发这样的功能,一点经验都没有。

尽管没有任何经验,开发出来的产品还是要对用户负责的,我不希望我的产品安装到用户的机器上会因为某些设计缺陷而崩溃,任何人都不傻,不会因为情怀买单。在经历了几天的测试之后,终于确定整个功能完善了,我推送了更新。到现在 Costuary 有着稳定的用户群,尽管不多,但很稳定。

为什么选择 Google Play

以上所有的 Andriod App 都可以在 Google Play 上搜索到并且免费下载,至于为什么选择 Google Play 为发布渠道,因为我觉得 Google Play 可以更好的保护用户的权益。

每当开发者要上传 App 到 Play 上的时候,必须要填一个调查问卷,其中会问到,有没有纳粹字符?有没有宗教词汇?有没有暴力言语?根据结果,Play 会为 App 打一个评级,年龄不符合规定或者特定地区的人是无法检索到这个 App 的。

并且,如果有的 App 被检测到安全问题, Google 会及时下架 App 来确保用户安全:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活 某些其他平台只会发这样的邮件,只是为了维护自家商店的利益罢了:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

英国生活

转眼间到了 9 月份,是时候出国了,在出国之前,将主力机器由原本的 iPhone 6 更换为了 Nexus 6P,因为,终于可以享受完整的 Google 服务了,指不定还能体验一波 Andriod Pay! 9 月 17 日,我坐着飞机来到了谢菲尔德,开始了英国的留学生涯。

既然这篇文章是关于数字生活的,那么我就来展示一下我平时学习的地方吧,看看我都使用什么电子产品:

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

我的主力电脑就是这台 MBP 15,在 2016 年,所有 App 都是在这台电脑上开发的。外接了一台显示器 (二手的) ,忘了什么型号了。小米鼠标垫,小米台灯,小米插线板,小米手环2 (比我以前的 Moto 360 好用太多) ,小米五号电池。

除了 MBP 15,我还有一台 ThinkPad X1 Carbon 2016 ,用于泡图书馆和旅游,X1 非常纤薄,放到包里感受不到重量,平时写博客,写论文,旅游时候的照片后期,都是由他完成。

在英国, Google Nexus 6P 原生 Andriod 体验和完整的 Google 服务真的比国内强了不少, Google 服务无处不在,在生活中的时时刻刻都能帮上忙,寻找周围的餐厅,导航,查看周围的旅游景点。分析邮件中的日程,自动翻译界面中不认识的文字 ( Google Now on tap)

不过,在来到英国 1 个多月后,我还是选择将我的主力机换成一台 iPhone SE,主要原因就是 Nexus 6p 电池实在太弱了,一会就没电了,很多次在外面就没电了,根本借不到 type-C 插头,并且 6p 也不兼容我的移动电源,总是充不上电。刚开始的几个月在异国他乡手机突然没电还的确蛮危险的,有时候去山上徒步要是手机没电了那还不死在荒郊野岭,快充顶个毛用,高性能处理器顶个毛用,2K 屏幕顶个毛用,原生 Andriod 顶个毛用。

还有一个原因就是 Apple Pay, Apple Pay 真是太方便了,在英国,所有支持 Contactless payment (在中国叫做闪付) 的地方都可以使用 Apple Pay。在很多超市,比如 Tesco,一般都是可以自己拎着东西自助买单的,走的时候手机在机器上蹭一下就好,很方便,三秒钟解决战斗。并且在伦敦,坐地铁也可以直接刷手机 ( Andriod / Apple Pay都可以) ,很是方便。

所以我将主力机换成了 iPhone SE,毕竟不是每天都要用到 Google 来看周围的餐馆,不过每天买三明治的钱还是要花的。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

Aircraft Pedia [iOS]

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

在英国,多了一个活动,那就是和朋友去曼彻斯特机场拍飞机。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

在没有论文的周末,有时候会坐火车去曼城机场的观景台拍飞机,我和基友也是对客机很感兴趣,喜欢看各种空难纪录片,听见空客 A380 轰鸣的引擎声都能激动半天。有一天突然就有一个想法,可以去写一个 App 来查阅各种飞机的资料,刚好很久没有开发 iPhone 项目了,那就在 iPhone 上写一个吧,于是,用了一周的时间 (上学 + 开发) , Aircraft Pedia 诞生了。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

这款 App 就可以很好地辅助航空爱好者来查阅各种型号的飞行器信息和性能,不光有客机,其中还包括各种战机。由于是一个工具类 App,这也是我第一个收费的 App,国区定价 3 元,有需求的小伙伴可以入一下。

Flat Weather

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

Flat Weather 是我最近的一款作品,也是下载量最多的一个作品。

从前面的作品不难看出,都是使用了普通的 App 设计,真正用到设计来提高美感的地方很少,Flat Weather 是一款风格和我以前作品完全不同的 App,其中每一张图都是我自己设计并且绘制的,是美工占在开发周期中时间最长的一次。关于这个 App 的设计,进过少数派Matrix精选,感兴趣的读者可以去了解下: 天气应用 Flat Weather 的设计历程 。

至于我为什么要去开发这样一个 App,其一是想去开发一个与众不同的天气 App,还有就是想去提升一下自己设计后端服务的能力,Flat Weather 的后端服务,也就是服务器端,同样是我编写的,为此,我每个月要支付 60 多元的服务器租赁费用。我对每一个项目都有明确的目的,比如 Costuary,这个项目就在数据库编写中为我累积了很多宝贵的经验。Flat Weather 也是,为我在后端服务编写中累计了很多的经验。

Flat Weather 的故事很多,在少数派发表我文章的那天我获得了大量的下载,有很多人评论并且支持我,并且有很多人向我发邮件反馈不足的地方。这些举动都令我感动,毕竟,想要做好一个产品,只有一个开发者是远远不够的。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活 不过也难免会得到不好的评价,第一个版本的主要问题就是不支持中文,和自动定位功能的缺失。自动定位的缺失是我的不对,因为我没有考虑到这个 App 在第一个版本就会获得这样的下载量,这个功能,如果你们看到了这篇文章的话,那么应该已经加进去了。

评论中有一句话我是不赞同的:「不管是不是国内开发者开发的,支持中文是必须的」,我只是不知道为什么是必须的。用 Steam 买游戏的人应该都知道,有很多人因为游戏没有中文支持就给差评,这是一个很不人道的行为,因为很多独立游戏工作室的开发者根本没有资金去聘请翻译,汉化一个软件或者游戏的代价有时候是巨大的。我的 App 加入中文是早晚的事情,在最新的版本中我已经加入了简体中文和繁体中文的支持,也是因为那一周太忙,你们都在过年,我还在上课,所以更新版本推到了周末。

作为一个人人都适用的工具类 App,适配 VoiceOver 功能还是必要的, iPhone 的 VoiceOver 可以通过朗读屏幕上的内容来辅助视力障碍的人适用 iPhone 。在 MacBook 2016 发布会开始,播放了这样一段视频,片中一个手脚不便的残疾人在使用头部动作控制一台 iMac 通过 Final Cut Pro 剪辑视频;一个盲人,划开了 iPhone 的相机,当 iPhone 读出:「One face, smile face, focus lock」的时候,相信很多人都震惊了,这才是科技的伟大,尽管每年唱衰苹果的声音不断,不过 Apple 在各个领域做出的贡献大家都是有目共睹的。OviceOver 功能的适配已经加入到了我的开发计划中。

2016, 一个独立开发者的心路历程 | 2016 与我的数字生活

总之还是感激大家的支持和评论,你们的反馈会使我更好的完善我的作品,Flat Weather 还会不断更新,去完善那些缺失的功能。我知道我没有能力去让那些不喜欢我 App 的人去使用他,但我不会让支持我的人失望。

尾巴

以上就是我的 2016 个人量化,我 2016 年作为独立开发者的心路历程。我通过不断地开发新的 App 来提升我的开发能力,增长经验。一个人经历完整的项目:规划,设计,美工,开发,后端,运维,我很享受这一过程,怕以后工作了就找不回这样的感觉了。这就是我为什么选择当一个独立开发者。在这一路上,有家人朋友的支持,有自己的努力,这一切都是值得的。

还记得刚进入大学的那天,爸妈把我送到了上海,那天他们给我买了一台 iPhone 5S,我换掉了我才用了三个月的魅族 MX3。在车上,我妈问我,你是不是早都想换一台 iPhone ,我说是的,她回我那你怎么当时换了魅族。我当时回道,因为我在学习 Andriod 开发,其实是觉得太贵了。不过,我并没有说谎,一年后我真的成为了一个出色的 Andriod 开发者,并且还因为这个找到了自己的第一份实习,一开始就买一台 iPhone 指不定都不会是现在的样子。

智能手机的出现的确为人们提供了数不清的便利,我热爱电子产品,热爱开发,希望通过自己的一份力来提升人们的数字生活品质。相信其他的独立开发者也是因为这个信念支持着自己,掏着自己的钱包支付每年 99 刀的开发者和服务器的费用,为的只是为他人提供方便。

2017 年已经到来,我会继续努力,为大家带来更好的 App。

(如果你喜欢这篇文章,我们鼓励你在文末点赞和评论,这会成为 征文活动最后评奖的参考之一,你可以 点此查看之前的入围文章。

原文  http://sspai.com/37402
正文到此结束
Loading...