原文:I’m an Android developer
作者:Michell Bak
翻译:ASCE1885
审校:苏宓,关注移动开发领域,寻求报道或投稿请发邮件tumin@csdn.net。
我今年 26 岁,作为一名资深 Android 开发者,同时也是一位大学辍学者,我以牺牲正规教育为代价换取了实践经验,目前就职于丹麦最大的电信和宽带公司-并不是因为我有很好的教育背景,而是因为我有大量的实践经验。接下来是我的故事。
一切的开始
我对 Android 开发的兴趣可以追溯到 2007 年和 Android 的第一个里程碑版本。今年将会发布 Android 8.0,目前代号是 “O”。时间过得真快!
那时我没有 Android 设备,所以偶尔玩几个小时的模拟器就感到满足了。操作系统几乎是裸机,但还是挺有意思的,我对 API demos 极度喜爱。操作系统镜像的更新相当频繁,看到它如何从方向键和键盘导航模式变化到基于触摸的用户界面,是一件很有趣的事情。
从那以后发生了很多变化。我们亲眼目睹数以千计 API 的新增;成百上千的 API 被废弃或者接口发生改变;增加了对平板电脑和各种屏幕显示尺寸的支持;“碎片门”(译者注:指 Android 平台的碎片化)和 support library(或者 libraries);Eclipse 的衰落和 Android Studio 的崛起;Android 智能手表、电视、汽车甚至是“物联网设备”的推出。
作为一名开发者,你需要跟上这一切。学习并紧跟最新技术的最佳途径是实践。我做过大量的 App 项目。有些是小型项目,从来没有其他人见到过,有些是拥有成千上万下载量的中型或者大型的 App。
现在所有东西都有对应的 App,这意味着要创造出真正令人兴奋的东西要难得多。当我开始 Android 开发时,情况不是这样的。我只需要找到没有被系统 Apps 或者 Android 市场上数量有限的第三方 Apps 覆盖到的应用场景,并自己为它创建一个就行了。
于是我那时候就这样做了好几次。
发布到 Android Market
我在 2010 或 2011 年就开始在 Android Market 上发布简单的 Apps。我的 Apps 很快就收到数以万计的下载量。Android Market 上 Apps 的数量有限(约等于 50,000),只要你的 Apps 的标题或者描述中有某些关键字,就可以很容易的实现用户量有机的增长。真的是超现实的。
我的第一个有用的 App 实现拦截手机收到的 SMS 消息的功能,同时弹出一个对话框,在其中显示对方的联系信息同时提供一个文本输入框可用于快速回复。这是我在非 Android 手机上经常使用的一个功能,所以我也很自然的在 Android 手机中引入它。下面是它的样子:
很简单,对吧?嗯,是的,但它使我接触到 Android SDK 的很多特性:Intents、系统广播、activities、window flags、content providers、联系人、图片加载,当然还有隐藏/文档未记录的 APIs(SMS)。
我有很多像这样的小型个人 App 项目,而且每一个在某方面都是有用的。这些年也有过一些小的自由职业项目,这显然也有助于建立个人声誉。
在 2011 年夏天,我买了第一台 Android 平板电脑,因为我要去度假,在飞机上需要消遣一下。我选择了 Acer Iconia Tab A500。它是一头野兽(译者注:性能强劲),非常适合看电影。10.1 英寸的电容显示屏,1280 x 800 像素的分辨率,NVIDIA Tegra 2 芯片组,1 GHz 双核 Cortex-A9 处理器,1 GB内存,它甚至有一个全尺寸 USB 端口和 HDMI 输出!
显然,我需要某种漂亮且易于使用的用户界面来浏览我的电影。我打开 Android Market,出乎意料,没有找到我想要的东西。应用市场上当然有文件管理器,但我需要的是可以让我实际触摸电影封面,并能够充分利用平板电脑大屏幕的 App。像 XBMC(现在的 Kodi)或者 Boxee,它也是基于 XBMC 的,但有一个更好更简单的用户界面。
这是一个创造 Android Market 上缺少的 App 的大好机会。在 2011 年 7 月 14 日,Mizuu Movies 诞生了,后来因添加了对电视节目的支持而改名为 Mizuu。
下面是它当时的样子:
漂亮,对吧?好吧,也没有很漂亮。但在当时,它实际上已经相当不错。请记住,当时没有人真正知道如何设计 Android Apps,更不用说 Android 上的平板 Apps 了。当时没有 Material Design,所有人都是自己独立设计的。尽管如此,我还是不断进行设计的迭代,结果,Google 的设计负责人 Matias Duarte,Material Design 背后的男人,在 Google+ 上写了一篇关于它的文章(https://plus.google.com/u/0/+MatiasDuarte/posts/HQaLCmxJbxp)。
有趣的事实:这个 App 中使用的 Gallery 组件现在已经废弃。大多数人可能甚至都不知道它是什么。它本质上是一个没有视图回收功能的中心锁定(译者注:每次滑动停止后,其中的视图会显示在中心)的横向列表。可以想象,它的内存占用和初次渲染时间会随着列表项的增加而增加。因此,我很快了解了视图回收的重要性以及像 view holder 模式这样的技巧。当时很少人知道这种模式,在应用中使用它确实有种鹤立鸡群的感觉。
开始繁忙的工作
Mizuu 发布后,我开始花大量的时间进行 Android 开发,一年后,我在自己的 App 项目中(主要是 Mizuu)至少保持全职工作的状态,而我在哥本哈根大学的 IT 课程基本处于荒废状态。
在接下来的几年里,我更多的关注 Android 开发,而较少关注我的学业,只处理最重要的作业和考试。对我来说,每周工作 80~100 个小时同时跟上学校的课程,这种情况并不少见。最终改变了我的生物钟,和周围人相反。我大概下午 5~6 点起床,吃晚饭然后开始工作直到第二天中午。洗个澡然后如此循环往复了好几年,这感觉太棒了。
这种紧凑的工作意味着我学习和提升的速度和大部分人不同。全职员工需要花一年才能完成的工作,我大概四个月就可以完成。换句话说,我一个人的工作成果等同于大约三个全职员工。这事真的发生了。
Mizuu 总共下载量超过 250,000 次,尽管这个 app 用户面比较窄。在开发活跃的那些年它收到大约 1,500 个用户评价,平均评级 4.7~4.9。
庞大的用户基数意味着在那些年我每天收到来自成千上万用户的电子邮件和反馈。我的优点是通常在几分钟内回复每一封电子邮件和评论。我听取每一点反馈并实现用户所要求的修改和特性。如果用户遇到问题我很热情的给予帮助。因此往往我与单个用户的电子邮件往来就有几百条消息。
你可以想象,这很难跟上,我花了很多时间在上面。花在写电子邮件上面的时间越多,花在开发上面的时间就越少,而我是一名开发者,所以这种情况并不理想。同时这也很有压力,曾经我一度不停的思考着不能让网上的这些用户失望。我只好继续提供高水平的支持,同时保持技术的领先,不断的为用户体验和 App 设计设定新标准。
高强度的工作和不断涌入的新电子邮件开始给我带来负面影响。我几乎同时体验到每一种可能的压力症状。我不想对其作过细的描述,但足以说明我的情况是不可持续的。不管怎样我需要做出改变。
在这时候,我还在学校学习计算机科学,但我对学校感到厌倦,我想全身心投入 Android 开发。在 Mizuu 上我真的没有赚到一分钱,所以全身心投入 Mizuu 并不是一个可行的职业发展道路。我需要一份工作,也需要离开 Mizuu 一段时间从而好好放松我的神经。
最终我停止 Mizuu 的一切开发工作,同时在邮箱中增加一个过滤规则来忽略所有关于 Mizuu 的邮件。Mizuu 目前作为一个开源项目托管在 GitHub 上(https://github.com/MizzleDK/Mizuu),有 800+ 的 stars。
第一份全职工作
2014 年 12 月,我收到了第一份全职工作的 offer,年薪是 420,000 丹麦克朗(约等于 65,000 美元)。我不敢相信有人愿意付钱让我去做我喜欢做的事情,这笔钱对我而言是一个全新的体验。
我很想接受,但不得不考虑退学。这是一件可怕的事情,也是我一生中做过的最可怕的事情之一。然而,奇怪的是,这也是我真正觉得对我而言是正确的决定。
我相信接受正规教育和获得学位对很多人来说是最好的选择,但我一直都觉得正规教育不如实践经验,实践能够向别人展示你的能力和你擅长做的事情。
我接受了这份工作,很快就注意到和在学校学习相比,我更喜欢工作的一些原因:
- 实践工作比理论工作更令人兴奋。
- 当你结束一天的工作后你就自由了,令人难以置信-没有作业。
- 金钱提供了很多自由,而我渴望自由。
我在工作中干得不错,刚开始工作一个月就得到了第一次加薪。接下来一个月又一次加薪。两个月后,我的年薪是 540,000 丹麦克朗(约等于 83,000 美元)。
一年后,我的年薪是 660,000 丹麦克朗(约等于 101,000 美元)。
我多年的辛勤工作和漫长的夜晚得到了回报。我有一份高薪的工作,我还没有一次面临需要正规教育的情况。
后来我发现最初的加薪是为了让我在那里工作。他们害怕我离职。这给我上了很重要的一堂课。作为一名熟练的软件开发者,你是许多公司的宝贵资产,在这种情况下,你可以选择想去哪里工作。
这也改变了我的心态,我开始考虑供给和需求的概念。原来在我的国家有我这种特殊技能的开发人员是有限的,需求大大超过供给。因此,我能够在多次谈判中获得更高的薪水。
跳槽
我在去年四月离开了我的第一份工作,仅仅在那里呆了一年半。在接下来的一个月内我接受了 TDC 集团的一个新职位。
作为一名高级 Android 开发人员,在就业市场上是相当狂野的,像是一个摇滚明星。第一周,我被招聘人员联系了 10~15 次,几乎可以选择任何我想去的公司。
除了通过招聘人员的途径之外,我还发现了一些感兴趣的工作。通常情况下,你需要把你的简历发送过去,但我有点自大,我不想在这样的东西上面花时间。我的意思是,他们可以在 LinkedIn 上面查找我,或者在 Google 上面搜索我。我就是这么跟他们说的。这样起作用了吗?是的,非常成功。我得到了两个职位,最后选择了 TDC 集团的提供的职位。
在我有空闲时间的那个月里,我又开始做一些业余的 Android 项目,我创建了一个简单的开源 Android 函数库(https://github.com/MizzleDK/IntroActivity)。我也开始一个基于 Mizuu 的新的开源 App ,名为 Jolly,我很快就告诉所有人。这是我直到今天还后悔的一件事。现实是自从开始新工作后,我就没有时间来从事业余项目的开发了。我让许多相信我的人失望了。
现在和将来
我还在 TDC 集团工作。它是一家拥有数千名员工的大公司,你必须适应它。大公司通常比小公司工作节奏要慢得多。我倾向于把这看作一个挑战。如果我能够在一个大的组织中产生影响和改变,那就没有什么能阻止我了。
经过一年的工作,实际上我开始认为我已经产生很大的影响了。虽然现在言之过早,但我可以这样说:作为丹麦最大公司之一的一名员工,我是它未来商业战略的实质性改变背后的驱动力之一。在我开来,这是很酷的,而且值得我为之骄傲。
我知道我将继续从事 Android 开发工作,只要我能跟上 Google 和 Android 社区提供的最新和最伟大的技术发展。当有一天跟不上时,我可能会转向管理职位,在那里我可以激励和引导其他人通过一行一行的代码改变未来。
这篇文章的目的是帮助其他 App 开发者,同时较深入介绍我是如何开始 Android 开发的,以及如何由业余开发者转变为职业开发者。