这个人来自Flipboard,他讲了一个Android程序员的故事
朱凯,笔名扔物线,Flipboard中国区Android程序员,Flipboard在全球有1亿下载量;MaterialEditText(的作者,star数量近1200;android-cn开源项目源码分析项目参与者,主要负责 Square 的依赖注入库Dagger的分析。
在转向Android开发之前朱凯是一个JAVA开发,当时他的工作内容与移动领域的应用开发交集并不多。但现在他是Flipboard的程序员,同时也是开源社区的贡献者。在由北京GDG(谷歌中国开发者论坛)组织的Devfest2015活动上,朱凯讲述了自己是如何转向Android程序员,加入开源社区,并一步步进入Flipboard的故事。
转向Android走了不少弯路
在2012年2月的时候,朱凯做了一个决定,可能对它今后数年甚至十几年的时间里,都会产生深刻影响。辞去了JAVA开发程序员的他,开始对Android这个新兴的平台产生了兴趣。但那个时候的Android还远远不健全,靠什么去学习和了解?朱凯的做法是看视频。
看视频是一种很好的学习方式,每一项都能掩饰的清清楚楚,比文字要生动有趣的多了。但朱凯在后来的时候却认为当时实在是有点「 图样图森破 」,因为他看的是经过翻译的「二手视频」。内容的靠谱程度依赖于视频作者Mars对于Android的理解和讲解水平。
但是通过Mars的视频初次看懂 Activity 的生命周期印象的时候朱凯还是异常的兴奋,那是他在 Android 开发学到的第一个知识,虽然现在那点知识其实很浅,甚至已经不在他给别人做技术面试的范围了。当时从 Java 转 Android,周围没有任何做 Android 的人,只有自学,因此第一次看懂一样 Android 开发的知识,让他信心倍增。
5月份的时候,第一个小软件做出来了,虽然算是一个自娱自乐的东西,但毕竟是自己含辛茹苦三个月,一边学习一边开发的成果,就像是父母面对刚出生的小宝宝,朱凯还是非常兴奋的。父母喜欢晒娃,程序员自然也要把写出来的程序给朋友来测试,听取他们的反馈来改进。
但这毕竟是朱凯第一个Android程序,需要改进的地方很多,他也修修补补调整了很久,到后来甚至都是无关紧要的细节,比如按钮的位置要移动几个像素。朱凯也说当时在这个软件上耽误了不少时间,却一直没有更大得进步。。
在学校尚且很难全新全意的学习,何况是走出学校之后呢。朱凯虽然爱玩手机,但手机开发对于他完全是个陌生的领域,再学习的辛苦不说,短时间内无法找到工作也让朱凯犹豫不决。
后来朱凯说,在知乎上看到过一个问题,是说爱上一个人是怎样一种感觉。下面有一条回答特别触动他,「好像突然就有了软肋,也突然有了铠甲」,他说老婆就是他的铠甲。
朱凯的坚持终于让他走上了Android开发的求职路。
工作上的挑战和提升是一体两面
然而朱凯的求职之路并不顺利,2013年的北京也还没有对创业执着到近乎病态的程度,「大众创业,万众创新」的口号也还不曾出现。但对于朱凯来说,那是一段四处碰壁的艰难岁月。在风浪中摇摆的朱凯最后找了一家小公司作为自己的港湾。
入职之后的朱凯一下子变的忙碌了起来,产品总会提出越来越多的需求,他不会去管开发怎么实现,只要最后的效果。这对于朱凯的技术水平来说是一个不小的挑战。但从另一方面来讲,这也逼迫了他去尽力快速提高自己。朱凯自己也承认这是继开始学习Android开来以来,技术提升的第二个高峰。
13 年刚加入公司时,朱凯的第一件任务是提高侧滑菜单的性能。那时候这个效果还没有谷歌的官方控件,都是由开发者来实现的。对于当时的他来说,这种效果太复杂了,而真正帮他解决问题的,是 Github 上面的一个开源库,花了两天时间才把代码整合进项目里。这是他第一次真正和 GitHub 有接触,当时觉得这种做开源库的人真是太厉害了
14年底,这家公司倒了,但朱凯水平已经足以支撑他选择更多的公司。朱凯也开始学习和写一些Google推出的Material Design相关控件的内容,随着对这些东西的理解加深,他开始做一些自定义的控件。当时他制作了一个 Material Design 的自定义控件 MaterialEditText ,之后有一个叫 Henri 的人对这个库很感兴趣,还热情的提了很多建议。一开始他并不知道Henri来自于Flipboard,但两人在技术上聊的很开心,最后这个控件得到了Flipboard官方采用,他也因为开发者朋友的内推加入了Flipboard。
进入Flipboard之后的朱凯似乎终于苦尽甘来,没有再遇到过困难的开发问题。但他觉得有个爱挑毛病的同事是个好事,谁也不傻,犯过的错误之后尽量避免,对于提高代码的细节和规整程度很有帮助。
除了工作上的提升,朱凯说开源社区对他的帮助意义匪浅。
你看别人的同时别人也在看你
Github上的开源Android项目
14年的时候,Android已经在市场上占据了绝对的优势,在一步步蚕食了大半的手机份额之后,设计语言和开发环境也在Google的推动下变得越来越好。
这个时候,朱凯开始接触对他具有深远影响的开源社区。这个时候出现了除他老婆之外对他影响很大另一个人。领他进入社区的那个人叫吴更新,目前在杭州。2014 年的时候,吴更新牵头和国内的一些开发者做了几次技术的分享,朱凯都非常积极去参与其中。从那时起,朱凯的名字开始被人知道,那也是他进入社区的开始。后来他认识了更多的开发者,包括GDG北京的活动负责人韩国恺。
开源社区对于各行各业的开发者影响都是巨大的,比如Github作为全球最大的开源代码库以及版本控制系统,在今年早些时候已经宣布用户数量突破350万(码农真多)。上面有无数的控件、动效、软件源代码等等,Android项目也只是其中的沧海一粟。
开源有多大的威力?实际上Android系统就是因为开源才能够走到今天这一步,成为全球市占率80%的手机操作系统,你说厉不厉害?而Android的底层内核来自于Linux,同样是因为开源才能成就出Ubuntu、Fedora、Debian和Deepin这样的发行版。
朱凯说随着技术越学越深,他开始感觉自己会得太少。
「有一件事让我印象挺深刻的,有一次我的一个开源项目中有个问题解决不了。虽然是个细节问题,却因为一直没有头绪而被搁置在了一旁,但很快这个问题就被我的一个贡献者解决了,而且用的是我完全不了解的知识。」
作为项目的主人,还没有协作者对项目的理解深,这让朱凯颇有感概。
在朱凯看来,开源社区的好处主要有两点,在开发者社区里,首先是你能知道别人怎样工作和提升的,然后把别人好的工作学习方法学过来,这是非常重要的一点,自己摸索可能有对有错,因为路没走过。而走别人走过的路就平坦通顺的多。开源社区的特点就在于此,对于开发者来说,这是个可以无限提取的宝库。
「而在大家都了解你之后,你就可以在一定程度上省下向别人证明自己的时间,也省下了别人对你进行考察的时间,这个对找工作和在公司的内部提级都有好处。」朱凯自己也有得益于这一点。
不过朱凯认为社区并不会直接帮助开发者提升技术。不要觉得参加了什么什么大会,加入了哪个大牛云集的微信群,就跟上时代前沿了,就是技术牛人了。技术提升还得是闷头学习和研究,朱凯说挺苦逼的,但是值。
环境在转好,但开发者还有更多期待
如今的Android开发世界已经广阔了不少,也出现了很多和朱凯同样厉害的「大神」们,比如RxJava大神「大头鬼」,他在RxJava领域做出了巨大的贡献,并且他精准的教程翻译更是让开发者们津津称道。甚至很多后续的翻译者会把翻译好的稿子交给他来审核。
在新浪微博仍然卡顿掉帧的时代,qii开发四次元微博是当时难得遵循Holo设计和控件调用的第三方客户端。并且在流畅度上完虐了官方版本,在相当一段时间之内,四次元都是追求简约,或是Android原教旨主义者的最爱,比如熟知Android Design和Material Design的知乎设计师Nova DNG,在上学时就参与过了四次元微博的界面设计。
「现在国内 Android 开发的环境正在逐渐变好。技术与经验的分享越来越多,而且在质量上也在提高。比起前两年那种到处都是没营养的半吊子博客的情况好了很多。」朱凯觉得现在的情况还是乐观的。
「对于一个开发者而言,目前国内使用Google的服务还是有一些困难的,这的确给开发工作带来了一定程度上得不便。」虽然对总体情况乐观,朱凯面对这个问题的时候还是显得有些无奈。
他希望开发者的工作环境能够更加顺畅,让开发工作变得更加畅通无阻。这很难,但也是他与大部分程序员一个共同的愿景。