互聯(lián)網(wǎng)的蓬勃發(fā)展,讓無數(shù)的「屌絲」程序員在一夜之間,仿佛都變成了「香餑餑」。但是,沒有幾個做開發(fā)的同學真的想做一輩子「碼農(nóng)」,很多同學都希望當上CTO,最終迎娶「白富美」,從此過上幸福美滿的生活。
誠然,CTO 的路不是那么好走的,而其中最重要的先決條件就是你要先成為一名優(yōu)秀的架構(gòu)師,那么普通程序員如何才能成為架構(gòu)師呢?讓我們聽聽移動開發(fā)精英群里,這些國內(nèi)頂級的大牛怎么說!本文系 OneAPM 市場部王鵬整理。

三生社群副總裁,ThinkPHP核心開發(fā)者羅飛總結(jié):
程序員可能的發(fā)展路線是什么?
先說說這張圖,它幾乎表示出了一個程序員可能走的所有職業(yè)路線。 當我們剛開始還是個初級開發(fā)的時候只能把自己變成高級,開發(fā)者才能有更多的選擇。你可以選擇管理線、專家線或者小老板線。(圖有四個象限,x軸代表金錢, y軸代表時間。)
我們學習知識的路線是: 技術(shù)->技術(shù)+管理->技術(shù)+管理+商業(yè)。但是隨著階段不一樣,我們學習的知識也有不同,剛開始我們只做開發(fā),只需要學習技術(shù)知識就行了,后面我們做到了管理職位,不僅要懂技術(shù)還要學習管理知識,然后我們想要成為CTO\CEO或小老板,必須得學習一些商業(yè)知識才行。
想成為架構(gòu)師,你需要經(jīng)歷3個階段的磨練!
從技術(shù)上來講,要成為高級工程師或架構(gòu)師,我認為可能需要經(jīng)歷3個階段: 實現(xiàn)->借鑒->優(yōu)化。
第一個階段: 實現(xiàn)
在這階段我們只在乎功能的實現(xiàn),不會考慮性能優(yōu)化,我們會覺得一些功能不會做,一些功能自己沒做,我們只要實現(xiàn)了功能,就覺得很有成就感。在這個階段中,我們要多去做事,沒做過的就去做。要注意培養(yǎng)自己的全面能力,前端、后端、服務器等要去接觸。其實,這個階段就好比人類的居住環(huán)境,原始人的時候只考慮實現(xiàn)遮風避雨就行了,不考慮住得舒不舒服,所以找個山洞住就可以了。
第二個階段:借鑒
當我們覺得基本所有功能自己都能實現(xiàn)的時候,我們會遇到自己的第一個瓶頸,這時候不要自滿,要發(fā)現(xiàn)那只是自己的第一個瓶頸而已。其實,我們每個人自己的提升空間還很大,這時候建議大家多借鑒別人的東西,看一些開源程序的代碼,其實讀別人的程序能學到很多東西?;蛟S有人認為別人能實現(xiàn)的自己也能實現(xiàn),不屑于看別人的東西,但這顯然阻礙了自己進步的空間!
美國一位大師Matt Zandstra說過這樣一句話:“我們正在努力開發(fā)的功能,或許已經(jīng)被其他程序員實現(xiàn)過無數(shù)次,我們怎么不借鑒他們的,而是把重心放在自己特有的業(yè)務邏輯上呢?”這個階段我還是拿人類居住環(huán)境來做比喻:人類在一定階段后, 好像能借鑒鳥搭鳥窩的形式,自己能“搭建”茅草屋了。
第三個階段:優(yōu)化
當我們功能都能實現(xiàn)了,也借鑒了許多別人的東西時候,借鑒階段也是有瓶頸的,當我們看了一兩年開源代碼后, 再看新的程序,已經(jīng)看不出新的編程思想了,感覺編程思想都是以前看過的。這個時候,我們的重心會想著怎么優(yōu)化我們的代碼:
我們會考慮代碼的可讀性、安全性、可擴展性。這時候建議大家可以看一些設(shè)計模式、編程思想、安全方面的書。 我說的這三個階段可能屬于從初級程序員到高級程序員的階段,離真正的架構(gòu)師可能還有點距離,因為真正很牛的架構(gòu)師還會理解公司業(yè)務需求,能知道什么階段用什么技術(shù)!這是非常重要的。
經(jīng)典語錄分享:
唐巧:我的觀點是,程序員能夠成長為架構(gòu)師,不僅要靠自己的努力,很大程度上也依賴于機遇。淘寶的系統(tǒng)經(jīng)歷過10次重寫,每次都面臨新的挑戰(zhàn),這些參與其中的每個人都得到了親自的鍛煉和成長,這也是他們趕上了好時候:電子商務和淘寶的快速發(fā)展。
在這波人過了之后,現(xiàn)在的新人如果想在電商系統(tǒng)上有所深入的成長,再想成為架構(gòu)師就很難了,因為他們無法深入理解這些設(shè)計原理,為什么這樣設(shè)計能夠避免各種“坑”?
當然,移動開發(fā)領(lǐng)域正經(jīng)歷快速變革和發(fā)展的時期,這幾年做移動開發(fā)的人,可以看到這個系統(tǒng)的演進過程,他們很可能成為移動開發(fā)專家。他們也有機會去設(shè)計一些非常基礎(chǔ)的、有挑戰(zhàn)的系統(tǒng),來解決現(xiàn)在移動開發(fā)中遇到的問題。總的來說,就是找準趨勢,順勢而為,才可能在技術(shù)上接觸到挑戰(zhàn)和機會,單純的努力可能不一定有效果。
馮軍:我覺得架構(gòu)師不在于掌握多少前沿的技術(shù)語言和牛逼的技術(shù),而是在于對業(yè)務和技術(shù)發(fā)展的理解,能站在公司的角度,明確在不同的階段用不同的技術(shù)架構(gòu),能夠快速支持業(yè)務的發(fā)展,保障平臺的穩(wěn)健。
而且,架構(gòu)師的技術(shù)棧會多元化,因為架構(gòu)師不僅僅要做好技術(shù)(技術(shù)不僅僅是包含于開發(fā)層面,還有前端構(gòu)建,運維,測試等領(lǐng)域),還要理解業(yè)務,不懂業(yè)務的架構(gòu)師不是一名好架構(gòu)師。當然,架構(gòu)也不是設(shè)計出來的,而是伴隨著項目的發(fā)展一步步不斷演進出來的。**
薛偉:程序員在基于本位模塊開發(fā)上,應該多想想支撐業(yè)務及整體需求,多考慮支撐業(yè)務問題的實際解決,以及突破所轄模塊及端的協(xié)作兄弟的換位技術(shù)思考。只要多實踐,多務實解決切實問題,就能自然發(fā)展成為架構(gòu)師,所有技術(shù)架構(gòu)思維其實都是相通的。
Sama:這個世界上最重要的是人,我們索要學習的也都是人創(chuàng)造的。所以跟隨大師和領(lǐng)會大師的意圖也非常重要,試想一下你有關(guān)注過大師的社交號或者社區(qū)嗎?大師的作品有沒有詳細研究過?有沒有每天堅持用谷歌查看現(xiàn)在世界上任何與架構(gòu)有關(guān)的文章?有沒有遇到問題去學習背后的原理?如果你做到了,就說明你已經(jīng)在架構(gòu)師的路上了!
還有一點就是工具集,架構(gòu)師的工具集都是精心對比研究過的,因為在架構(gòu)師眼里效率是至上的。正如「王牌特工」里師傅帶給徒弟的特工「武器庫」一樣!
富麗餅干:沒有完美的架構(gòu),只有最適合需求的架構(gòu)!架構(gòu)師更要理解需求,理解產(chǎn)品方向和產(chǎn)品經(jīng)理的思維,一味追求技術(shù)上完美的架構(gòu),最后很容易做成空中樓閣,百度騰訊都很強調(diào)架構(gòu)師對產(chǎn)品的理解和產(chǎn)品經(jīng)理的溝通能力。
陳馳遠:在技術(shù)方面,我覺得架構(gòu)師首先得了解自己做的業(yè)務,業(yè)務上有規(guī)劃,能找到現(xiàn)階段最適合解決業(yè)務上問題的方案,并且對之后的發(fā)展有概念和對策。同時,保持對業(yè)界技術(shù)的關(guān)注,知道如何使用新技術(shù)解放生產(chǎn)力。永遠只有最合適業(yè)務的架構(gòu)!
此外,借力也很關(guān)鍵,架構(gòu)師得有一定的人脈,遇到自己不擅長的問題,能找到擅長問題的牛人,向他們學習,可以少走很多彎路!
伍星:架構(gòu)師的成長離不開平臺的發(fā)展。小平臺很難造就優(yōu)秀架構(gòu)師,架構(gòu)師都是在瓶頸和崩潰中成長的!
李帥:基礎(chǔ)扎實,多思考,多實踐!而且每個人的情況都不太一樣,需要因人而異,但最根本的就是對編程的熱愛以及對美的思考?。菜埔呀?jīng)提升到哲學的范疇了!)
牛逼的人都是自學成才的,別指望有人能把你教成大牛?。ㄋ徒o所有閱讀本文的程序員同學)
