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