天天看點

技術人員上升遇到瓶頸?或許開源能推你一把!

GitHub Tencent賬号下首個開源項目tinker的開發者shwenzhang受邀參加騰訊開源線下沙龍,分享他經過開源後在技術和個人影響力方面獲得了怎樣的成就,并追根溯源,表達開源項目應該“大而全”還是“小而美”的獨特見解。開源不應該是壓在開發者身上的額外負擔,而是技術完善,個人績效提升,塑造公司與團隊形象的有效途徑。

Shwenzhang,張紹文,來自騰訊微信事業群,從事安卓開發,主要負責 Android 的性能優化以及終端品質平台相關工作,參與Android熱更新檔技術tinker的開發。

Android熱更新檔開源架構tinker,具有穩定性高,相容性強,簡單易用等特性,支援在無需重新安裝apk的情況下,完成對dex檔案,庫和資源的更新,緊急修複APP的bug,或釋出新功能。

應用寶Top 1000的應用中,有包括微信之内的60多個應用已經使用了tinker進行APP的熱更新檔。tinker首日star數破千,登上全球日榜熱度第一,取得首周star數4000+的成績。

GitHub位址:https://github.com/tencent/tinker

今天我主要分享一下,開源可以讓我們得到什麼,可以獲得怎樣的成長?tinker開源有比較長的時間了,是以我以tinker為例,結合開源經曆,向大家分享開源給了我怎樣的幫助,希望大家能有所啟發。

重構代碼,取悅自己

程式員的使命,就是寫偉大的代碼取悅自己。但由于曆史原因,或産品需求變更和疊代,我們往往隻能惡心自己,寫出來的代碼連自己都看不下去。開源就不一樣了,代碼不僅自己看,還要放到GitHub上給所有人看。代碼風格代表公司的形象,也代表我們開發人員的形象。于是,我們在代碼規範、注釋、項目架構上面都需要更費心思。這就給了我們對項目進行代碼重構的好機會,可以優化那些寫得不規範的舊代碼,讓它能被讀者更好地接受。

技術視角

我們在公司做産品,要麼跟以前版本做比較,要麼跟公司其他産品做比較。開源就不一樣了,我們的産品需要跟開源社群的業界同類産品做比較,分析他們的優缺點,挖掘他們沒有解決的痛點,找到我們比他們優勝的方面。這是做開源前必須經曆的步驟。當真正把項目開源時,我們會提供對比結果作為項目的介紹文案,例如微信終端跨平台元件Mars的網絡庫與其他網絡庫相比的優勢,Tinker為什麼比其他熱更新檔方案好。

“既要埋頭苦幹,也要擡頭看路”,開源使我們站在很高的視角上,去了解社群的新技術,讓我們意識到改變,闊斧革新了安卓用戶端的開發工具鍊。

社群支援

開源除了把自己的技術向社群展示,同時我們也希望得到社群的支援。tinker對相容性有極高的要求。tinker開源後便得到非常廣的測試場景,先後在2000多個APP中得到驗證,其中不乏UC、百度等知名公司。現在,華為、小米等廠商也會幫我們運作各種自動化的用例,項目出現問題就會及時回報給我們。這是我們期望的社群幫助。

然而,目前國内的開源社群環境不是特别的好,80%左右的使用者僅停留在用的層面,會提出bug或指出待完善的地方,而提出優化解決方案,并做出Pull request的使用者不及20%,而且大部分集中在大公司。是以,我們篩選出一批隻有30多人的來自阿裡、百度、華為等知名公司的tinker種子使用者。他們能給到tinker非常多的Pull request和優化方案。

技術人員上升遇到瓶頸?或許開源能推你一把!

情懷傳遞

開發者,尤其是新員工,都不會很在意個人影響力,認為隻需要寫好代碼就行了。其實作為新時代的程式員,這樣做遠遠不夠。寫好代碼隻是最基本的訴求,程式員還要會做總結,沉澱自己的工作成果,通過分享去引導大家進步。這恰好是開源對程式員的要求。Mars、tinker、WeUI等微信事業群的優秀開源項目,都離不開大量技術文章作為沉澱。項目開源前期和後期,我們都會輸出一些有價值的文檔,收攏起來,讓大家了解一個項目開源的始末。

技術大會/沙龍/直播

開源一個項目就像對外釋出一個産品。我們的項目即使再好,也需要發聲,讓更多的人知道。是以,我們積極參加GMTC、QCon等大型技術大會,還參加一些線下沙龍和直播,把我們的項目放到大舞台上曝光,得到向同行請教和學習的機會,同時也可以了解到業界的新技術。

技術人員上升遇到瓶頸?或許開源能推你一把!

社群交流

項目開源需要跟社群做一些回報與交流,例如處理issue和pull request,篩選出種子使用者并跟他們深入交流。我們還會給tinker項目比較優秀的貢獻者寄禮品作為獎勵,已經寄出兩三批了。

個人發展

個人影響力的提升,無論是對你的晉升還是個人成長都非常有幫助。大部分參與晉升考核的員工,隻是與過去的自己或公司其他人進行比較。可當你拿出的方案是,經過開源社群的驗證,我在業界是什麼水準,達到了怎樣的高度。這顯然比其他人更優勝。以我的晉升經曆看來,tinker開源絕對是錦上添花的一筆。

開源還有一個很重要的意義是,無論你在哪裡,都可以繼續為自己的項目做貢獻。是以我希望大家都能加入到開源的行列當中。

中國人的思維習慣傾向于一個項目做到"大而全",能滿足所有功能。但我認為,不妨嘗試一下"小而美"。項目品質好壞的關鍵,在于它能否直擊一個特定的痛點,能否有特定的市場定位。它與競品相比具備怎樣的性能優勢,在哪些場景下可以解決問題但競品不能。可能是一件簡單的事情,但star數卻非常多。是以,優秀的開源項目不一定是功能全面的軟體,也不一定是超級龐大的系統,隻需要能解決某些人在某個場景下的痛點就可以了。

技術人員上升遇到瓶頸?或許開源能推你一把!

Github位址:https://github.com/tencent/tinker,

歡迎Star Tinker!

去年10月,Tinker在開源社群,尤其是安卓熱更新檔技術領域掀起熱潮,一時名聲大噪,帶動騰訊開源迅猛發展。但事實上,部分開發者認為,做開源勞累于代碼稽核、項目營運和社群交流,而這些工作的成效卻不一定是立竿見影,是以做開源成為了自己的負擔。

打造個人影響力,已經成為新時代程式員對自己職業生涯長期規劃的保證。回顧shwenzhang的經曆,我們看到開源可為自己赢得更多的上升空間。同時,開源能夠為團隊的技術能力注入新鮮血液。這些都将吸引着更多開發者加入到開源的行列當中。

文章來源: 騰訊開源 公衆号