3
本文作者: 李晨 | 2015-11-18 20:30 |
朱凱,筆名扔物線,F(xiàn)lipboard中國區(qū)Android程序員,F(xiàn)lipboard在全球有1億下載量;MaterialEditText(的作者,star數(shù)量近1200;android-cn開源項(xiàng)目源碼分析項(xiàng)目參與者,主要負(fù)責(zé)Square的依賴注入庫Dagger的分析。
在轉(zhuǎn)向Android開發(fā)之前朱凱是一個(gè)JAVA開發(fā),當(dāng)時(shí)他的工作內(nèi)容與移動(dòng)領(lǐng)域的應(yīng)用開發(fā)交集并不多。但現(xiàn)在他是Flipboard的程序員,同時(shí)也是開源社區(qū)的貢獻(xiàn)者。在由北京GDG(谷歌中國開發(fā)者論壇)組織的Devfest2015活動(dòng)上,朱凱講述了自己是如何轉(zhuǎn)向Android程序員,加入開源社區(qū),并一步步進(jìn)入Flipboard的故事。
轉(zhuǎn)向Android走了不少彎路
在2012年2月的時(shí)候,朱凱做了一個(gè)決定,可能對(duì)它今后數(shù)年甚至十幾年的時(shí)間里,都會(huì)產(chǎn)生深刻影響。辭去了JAVA開發(fā)程序員的他,開始對(duì)Android這個(gè)新興的平臺(tái)產(chǎn)生了興趣。但那個(gè)時(shí)候的Android還遠(yuǎn)遠(yuǎn)不健全,靠什么去學(xué)習(xí)和了解?朱凱的做法是看視頻。
看視頻是一種很好的學(xué)習(xí)方式,每一項(xiàng)都能掩飾的清清楚楚,比文字要生動(dòng)有趣的多了。但朱凱在后來的時(shí)候卻認(rèn)為當(dāng)時(shí)實(shí)在是有點(diǎn)「圖樣圖森破」,因?yàn)樗吹氖墙?jīng)過翻譯的「二手視頻」。內(nèi)容的靠譜程度依賴于視頻作者M(jìn)ars對(duì)于Android的理解和講解水平。
但是通過Mars的視頻初次看懂 Activity 的生命周期印象的時(shí)候朱凱還是異常的興奮,那是他在 Android 開發(fā)學(xué)到的第一個(gè)知識(shí),雖然現(xiàn)在那點(diǎn)知識(shí)其實(shí)很淺,甚至已經(jīng)不在他給別人做技術(shù)面試的范圍了。當(dāng)時(shí)從 Java 轉(zhuǎn) Android,周圍沒有任何做 Android 的人,只有自學(xué),因此第一次看懂一樣 Android 開發(fā)的知識(shí),讓他信心倍增。
5月份的時(shí)候,第一個(gè)小軟件做出來了,雖然算是一個(gè)自娛自樂的東西,但畢竟是自己含辛茹苦三個(gè)月,一邊學(xué)習(xí)一邊開發(fā)的成果,就像是父母面對(duì)剛出生的小寶寶,朱凱還是非常興奮的。父母喜歡曬娃,程序員自然也要把寫出來的程序給朋友來測試,聽取他們的反饋來改進(jìn)。
但這畢竟是朱凱第一個(gè)Android程序,需要改進(jìn)的地方很多,他也修修補(bǔ)補(bǔ)調(diào)整了很久,到后來甚至都是無關(guān)緊要的細(xì)節(jié),比如按鈕的位置要移動(dòng)幾個(gè)像素。朱凱也說當(dāng)時(shí)在這個(gè)軟件上耽誤了不少時(shí)間,卻一直沒有更大得進(jìn)步。。
在學(xué)校尚且很難全新全意的學(xué)習(xí),何況是走出學(xué)校之后呢。朱凱雖然愛玩手機(jī),但手機(jī)開發(fā)對(duì)于他完全是個(gè)陌生的領(lǐng)域,再學(xué)習(xí)的辛苦不說,短時(shí)間內(nèi)無法找到工作也讓朱凱猶豫不決。
后來朱凱說,在知乎上看到過一個(gè)問題,是說愛上一個(gè)人是怎樣一種感覺。下面有一條回答特別觸動(dòng)他,「好像突然就有了軟肋,也突然有了鎧甲」,他說老婆就是他的鎧甲。
朱凱的堅(jiān)持終于讓他走上了Android開發(fā)的求職路。
工作上的挑戰(zhàn)和提升是一體兩面
然而朱凱的求職之路并不順利,2013年的北京也還沒有對(duì)創(chuàng)業(yè)執(zhí)著到近乎病態(tài)的程度,「大眾創(chuàng)業(yè),萬眾創(chuàng)新」的口號(hào)也還不曾出現(xiàn)。但對(duì)于朱凱來說,那是一段四處碰壁的艱難歲月。在風(fēng)浪中搖擺的朱凱最后找了一家小公司作為自己的港灣。
入職之后的朱凱一下子變的忙碌了起來,產(chǎn)品總會(huì)提出越來越多的需求,他不會(huì)去管開發(fā)怎么實(shí)現(xiàn),只要最后的效果。這對(duì)于朱凱的技術(shù)水平來說是一個(gè)不小的挑戰(zhàn)。但從另一方面來講,這也逼迫了他去盡力快速提高自己。朱凱自己也承認(rèn)這是繼開始學(xué)習(xí)Android開來以來,技術(shù)提升的第二個(gè)高峰。
13 年剛加入公司時(shí),朱凱的第一件任務(wù)是提高側(cè)滑菜單的性能。那時(shí)候這個(gè)效果還沒有谷歌的官方控件,都是由開發(fā)者來實(shí)現(xiàn)的。對(duì)于當(dāng)時(shí)的他來說,這種效果太復(fù)雜了,而真正幫他解決問題的,是 GitHub 上面的一個(gè)開源庫,花了兩天時(shí)間才把代碼整合進(jìn)項(xiàng)目里。這是他第一次真正和 GitHub 有接觸,當(dāng)時(shí)覺得這種做開源庫的人真是太厲害了
14年底,這家公司倒了,但朱凱水平已經(jīng)足以支撐他選擇更多的公司。朱凱也開始學(xué)習(xí)和寫一些Google推出的Material Design相關(guān)控件的內(nèi)容,隨著對(duì)這些東西的理解加深,他開始做一些自定義的控件。當(dāng)時(shí)他制作了一個(gè) Material Design 的自定義控件 MaterialEditText ,之后有一個(gè)叫 Henri 的人對(duì)這個(gè)庫很感興趣,還熱情的提了很多建議。一開始他并不知道Henri來自于Flipboard,但兩人在技術(shù)上聊的很開心,最后這個(gè)控件得到了Flipboard官方采用,他也因?yàn)殚_發(fā)者朋友的內(nèi)推加入了Flipboard。
進(jìn)入Flipboard之后的朱凱似乎終于苦盡甘來,沒有再遇到過困難的開發(fā)問題。但他覺得有個(gè)愛挑毛病的同事是個(gè)好事,誰也不傻,犯過的錯(cuò)誤之后盡量避免,對(duì)于提高代碼的細(xì)節(jié)和規(guī)整程度很有幫助。
除了工作上的提升,朱凱說開源社區(qū)對(duì)他的幫助意義匪淺。
你看別人的同時(shí)別人也在看你
Github上的開源Android項(xiàng)目
14年的時(shí)候,Android已經(jīng)在市場上占據(jù)了絕對(duì)的優(yōu)勢,在一步步蠶食了大半的手機(jī)份額之后,設(shè)計(jì)語言和開發(fā)環(huán)境也在Google的推動(dòng)下變得越來越好。
這個(gè)時(shí)候,朱凱開始接觸對(duì)他具有深遠(yuǎn)影響的開源社區(qū)。這個(gè)時(shí)候出現(xiàn)了除他老婆之外對(duì)他影響很大另一個(gè)人。領(lǐng)他進(jìn)入社區(qū)的那個(gè)人叫吳更新,目前在杭州。2014 年的時(shí)候,吳更新牽頭和國內(nèi)的一些開發(fā)者做了幾次技術(shù)的分享,朱凱都非常積極去參與其中。從那時(shí)起,朱凱的名字開始被人知道,那也是他進(jìn)入社區(qū)的開始。后來他認(rèn)識(shí)了更多的開發(fā)者,包括GDG北京的活動(dòng)負(fù)責(zé)人韓國愷。
開源社區(qū)對(duì)于各行各業(yè)的開發(fā)者影響都是巨大的,比如Github作為全球最大的開源代碼庫以及版本控制系統(tǒng),在今年早些時(shí)候已經(jīng)宣布用戶數(shù)量突破350萬(碼農(nóng)真多)。上面有無數(shù)的控件、動(dòng)效、軟件源代碼等等,Android項(xiàng)目也只是其中的滄海一粟。
開源有多大的威力?實(shí)際上Android系統(tǒng)就是因?yàn)殚_源才能夠走到今天這一步,成為全球市占率80%的手機(jī)操作系統(tǒng),你說厲不厲害?而Android的底層內(nèi)核來自于Linux,同樣是因?yàn)殚_源才能成就出Ubuntu、Fedora、Debian和Deepin這樣的發(fā)行版。
朱凱說隨著技術(shù)越學(xué)越深,他開始感覺自己會(huì)得太少。
「有一件事讓我印象挺深刻的,有一次我的一個(gè)開源項(xiàng)目中有個(gè)問題解決不了。雖然是個(gè)細(xì)節(jié)問題,卻因?yàn)橐恢睕]有頭緒而被擱置在了一旁,但很快這個(gè)問題就被我的一個(gè)貢獻(xiàn)者解決了,而且用的是我完全不了解的知識(shí)?!?/p>
作為項(xiàng)目的主人,還沒有協(xié)作者對(duì)項(xiàng)目的理解深,這讓朱凱頗有感概。
在朱凱看來,開源社區(qū)的好處主要有兩點(diǎn),在開發(fā)者社區(qū)里,首先是你能知道別人怎樣工作和提升的,然后把別人好的工作學(xué)習(xí)方法學(xué)過來,這是非常重要的一點(diǎn),自己摸索可能有對(duì)有錯(cuò),因?yàn)槁窙]走過。而走別人走過的路就平坦通順的多。開源社區(qū)的特點(diǎn)就在于此,對(duì)于開發(fā)者來說,這是個(gè)可以無限提取的寶庫。
「而在大家都了解你之后,你就可以在一定程度上省下向別人證明自己的時(shí)間,也省下了別人對(duì)你進(jìn)行考察的時(shí)間,這個(gè)對(duì)找工作和在公司的內(nèi)部提級(jí)都有好處。」朱凱自己也有得益于這一點(diǎn)。
不過朱凱認(rèn)為社區(qū)并不會(huì)直接幫助開發(fā)者提升技術(shù)。不要覺得參加了什么什么大會(huì),加入了哪個(gè)大牛云集的微信群,就跟上時(shí)代前沿了,就是技術(shù)牛人了。技術(shù)提升還得是悶頭學(xué)習(xí)和研究,朱凱說挺苦逼的,但是值。
環(huán)境在轉(zhuǎn)好,但開發(fā)者還有更多期待
如今的Android開發(fā)世界已經(jīng)廣闊了不少,也出現(xiàn)了很多和朱凱同樣厲害的「大神」們,比如RxJava大神「大頭鬼」,他在RxJava領(lǐng)域做出了巨大的貢獻(xiàn),并且他精準(zhǔn)的教程翻譯更是讓開發(fā)者們津津稱道。甚至很多后續(xù)的翻譯者會(huì)把翻譯好的稿子交給他來審核。
在新浪微博仍然卡頓掉幀的時(shí)代,qii開發(fā)四次元微博是當(dāng)時(shí)難得遵循Holo設(shè)計(jì)和控件調(diào)用的第三方客戶端。并且在流暢度上完虐了官方版本,在相當(dāng)一段時(shí)間之內(nèi),四次元都是追求簡約,或是Android原教旨主義者的最愛,比如熟知Android Design和Material Design的知乎設(shè)計(jì)師Nova DNG,在上學(xué)時(shí)就參與過了四次元微博的界面設(shè)計(jì)。
「現(xiàn)在國內(nèi) Android 開發(fā)的環(huán)境正在逐漸變好。技術(shù)與經(jīng)驗(yàn)的分享越來越多,而且在質(zhì)量上也在提高。比起前兩年那種到處都是沒營養(yǎng)的半吊子博客的情況好了很多?!怪靹P覺得現(xiàn)在的情況還是樂觀的。
「對(duì)于一個(gè)開發(fā)者而言,目前國內(nèi)使用Google的服務(wù)還是有一些困難的,這的確給開發(fā)工作帶來了一定程度上得不便?!闺m然對(duì)總體情況樂觀,朱凱面對(duì)這個(gè)問題的時(shí)候還是顯得有些無奈。
他希望開發(fā)者的工作環(huán)境能夠更加順暢,讓開發(fā)工作變得更加暢通無阻。這很難,但也是他與大部分程序員一個(gè)共同的愿景。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。