互聯(lián)網(wǎng)的蓬勃發(fā)展讯赏,讓無數(shù)的「屌絲」程序員在一夜之間,仿佛都變成了「香餑餑」冷尉。但是待逞,沒有幾個(gè)做開發(fā)的同學(xué)真的想做一輩子「碼農(nóng)」,很多同學(xué)都希望當(dāng)上CTO网严,最終迎娶「白富美」识樱,從此過上幸福美滿的生活。
誠(chéng)然,CTO 的路不是那么好走的怜庸,而其中最重要的先決條件就是你要先成為一名優(yōu)秀的架構(gòu)師当犯,那么普通程序員如何才能成為架構(gòu)師呢?讓我們聽聽移動(dòng)開發(fā)精英群里割疾,這些國(guó)內(nèi)頂級(jí)的大牛怎么說嚎卫!本文系 OneAPM 市場(chǎng)部王鵬整理。
三生社群副總裁拓诸,ThinkPHP核心開發(fā)者羅飛總結(jié):
程序員可能的發(fā)展路線是什么?
先說說這張圖麻昼,它幾乎表示出了一個(gè)程序員可能走的所有職業(yè)路線奠支。 當(dāng)我們剛開始還是個(gè)初級(jí)開發(fā)的時(shí)候只能把自己變成高級(jí),開發(fā)者才能有更多的選擇抚芦。你可以選擇管理線倍谜、專家線或者小老板線。(圖有四個(gè)象限叉抡,x軸代表金錢尔崔, y軸代表時(shí)間。)
我們學(xué)習(xí)知識(shí)的路線是: 技術(shù)->技術(shù)+管理->技術(shù)+管理+商業(yè)褥民。但是隨著階段不一樣季春,我們學(xué)習(xí)的知識(shí)也有不同,剛開始我們只做開發(fā)消返,只需要學(xué)習(xí)技術(shù)知識(shí)就行了载弄,后面我們做到了管理職位,不僅要懂技術(shù)還要學(xué)習(xí)管理知識(shí)侦副,然后我們想要成為CTO\CEO或小老板,必須得學(xué)習(xí)一些商業(yè)知識(shí)才行驼鞭。
想成為架構(gòu)師秦驯,你需要經(jīng)歷3個(gè)階段的磨練!
從技術(shù)上來講挣棕,要成為高級(jí)工程師或架構(gòu)師译隘,我認(rèn)為可能需要經(jīng)歷3個(gè)階段: 實(shí)現(xiàn)->借鑒->優(yōu)化。
第一個(gè)階段: 實(shí)現(xiàn)
在這階段我們只在乎功能的實(shí)現(xiàn)洛心,不會(huì)考慮性能優(yōu)化固耘,我們會(huì)覺得一些功能不會(huì)做,一些功能自己沒做词身,我們只要實(shí)現(xiàn)了功能厅目,就覺得很有成就感。在這個(gè)階段中,我們要多去做事损敷,沒做過的就去做葫笼。要注意培養(yǎng)自己的全面能力,前端拗馒、后端路星、服務(wù)器等要去接觸。其實(shí)诱桂,這個(gè)階段就好比人類的居住環(huán)境洋丐,原始人的時(shí)候只考慮實(shí)現(xiàn)遮風(fēng)避雨就行了,不考慮住得舒不舒服挥等,所以找個(gè)山洞住就可以了友绝。
第二個(gè)階段:借鑒
當(dāng)我們覺得基本所有功能自己都能實(shí)現(xiàn)的時(shí)候,我們會(huì)遇到自己的第一個(gè)瓶頸触菜,這時(shí)候不要自滿九榔,要發(fā)現(xiàn)那只是自己的第一個(gè)瓶頸而已。其實(shí)涡相,我們每個(gè)人自己的提升空間還很大哲泊,這時(shí)候建議大家多借鑒別人的東西,看一些開源程序的代碼催蝗,其實(shí)讀別人的程序能學(xué)到很多東西切威。或許有人認(rèn)為別人能實(shí)現(xiàn)的自己也能實(shí)現(xiàn)丙号,不屑于看別人的東西先朦,但這顯然阻礙了自己進(jìn)步的空間!
美國(guó)一位大師Matt Zandstra說過這樣一句話:“我們正在努力開發(fā)的功能犬缨,或許已經(jīng)被其他程序員實(shí)現(xiàn)過無數(shù)次喳魏,我們?cè)趺床唤梃b他們的,而是把重心放在自己特有的業(yè)務(wù)邏輯上呢怀薛?”這個(gè)階段我還是拿人類居住環(huán)境來做比喻:人類在一定階段后刺彩, 好像能借鑒鳥搭鳥窩的形式,自己能“搭建”茅草屋了枝恋。
第三個(gè)階段:優(yōu)化
當(dāng)我們功能都能實(shí)現(xiàn)了创倔,也借鑒了許多別人的東西時(shí)候,借鑒階段也是有瓶頸的焚碌,當(dāng)我們看了一兩年開源代碼后畦攘, 再看新的程序,已經(jīng)看不出新的編程思想了十电,感覺編程思想都是以前看過的知押。這個(gè)時(shí)候叹螟,我們的重心會(huì)想著怎么優(yōu)化我們的代碼:
我們會(huì)考慮代碼的可讀性、安全性朗徊、可擴(kuò)展性首妖。這時(shí)候建議大家可以看一些設(shè)計(jì)模式、編程思想爷恳、安全方面的書有缆。 我說的這三個(gè)階段可能屬于從初級(jí)程序員到高級(jí)程序員的階段,離真正的架構(gòu)師可能還有點(diǎn)距離温亲,因?yàn)檎嬲芘5募軜?gòu)師還會(huì)理解公司業(yè)務(wù)需求棚壁,能知道什么階段用什么技術(shù)!這是非常重要的栈虚。
經(jīng)典語(yǔ)錄分享:
唐巧:我的觀點(diǎn)是袖外,程序員能夠成長(zhǎng)為架構(gòu)師,不僅要靠自己的努力魂务,很大程度上也依賴于機(jī)遇曼验。淘寶的系統(tǒng)經(jīng)歷過10次重寫,每次都面臨新的挑戰(zhàn)粘姜,這些參與其中的每個(gè)人都得到了親自的鍛煉和成長(zhǎng)鬓照,這也是他們趕上了好時(shí)候:電子商務(wù)和淘寶的快速發(fā)展。
在這波人過了之后孤紧,現(xiàn)在的新人如果想在電商系統(tǒng)上有所深入的成長(zhǎng)豺裆,再想成為架構(gòu)師就很難了,因?yàn)樗麄儫o法深入理解這些設(shè)計(jì)原理号显,為什么這樣設(shè)計(jì)能夠避免各種“坑”臭猜?
當(dāng)然,移動(dòng)開發(fā)領(lǐng)域正經(jīng)歷快速變革和發(fā)展的時(shí)期押蚤,這幾年做移動(dòng)開發(fā)的人蔑歌,可以看到這個(gè)系統(tǒng)的演進(jìn)過程,他們很可能成為移動(dòng)開發(fā)專家揽碘。他們也有機(jī)會(huì)去設(shè)計(jì)一些非炒瓮溃基礎(chǔ)的、有挑戰(zhàn)的系統(tǒng)钾菊,來解決現(xiàn)在移動(dòng)開發(fā)中遇到的問題帅矗≠怂啵總的來說煞烫,就是找準(zhǔn)趨勢(shì),順勢(shì)而為累颂,才可能在技術(shù)上接觸到挑戰(zhàn)和機(jī)會(huì)滞详,單純的努力可能不一定有效果凛俱。
馮軍:我覺得架構(gòu)師不在于掌握多少前沿的技術(shù)語(yǔ)言和牛逼的技術(shù),而是在于對(duì)業(yè)務(wù)和技術(shù)發(fā)展的理解料饥,能站在公司的角度蒲犬,明確在不同的階段用不同的技術(shù)架構(gòu),能夠快速支持業(yè)務(wù)的發(fā)展岸啡,保障平臺(tái)的穩(wěn)健原叮。
而且,架構(gòu)師的技術(shù)棧會(huì)多元化巡蘸,因?yàn)榧軜?gòu)師不僅僅要做好技術(shù)(技術(shù)不僅僅是包含于開發(fā)層面奋隶,還有前端構(gòu)建,運(yùn)維悦荒,測(cè)試等領(lǐng)域)唯欣,還要理解業(yè)務(wù),不懂業(yè)務(wù)的架構(gòu)師不是一名好架構(gòu)師搬味。當(dāng)然境氢,架構(gòu)也不是設(shè)計(jì)出來的,而是伴隨著項(xiàng)目的發(fā)展一步步不斷演進(jìn)出來的碰纬。**
薛偉:程序員在基于本位模塊開發(fā)上萍聊,應(yīng)該多想想支撐業(yè)務(wù)及整體需求,多考慮支撐業(yè)務(wù)問題的實(shí)際解決嘀趟,以及突破所轄模塊及端的協(xié)作兄弟的換位技術(shù)思考脐区。只要多實(shí)踐,多務(wù)實(shí)解決切實(shí)問題她按,就能自然發(fā)展成為架構(gòu)師牛隅,所有技術(shù)架構(gòu)思維其實(shí)都是相通的。
Sama:這個(gè)世界上最重要的是人酌泰,我們索要學(xué)習(xí)的也都是人創(chuàng)造的媒佣。所以跟隨大師和領(lǐng)會(huì)大師的意圖也非常重要,試想一下你有關(guān)注過大師的社交號(hào)或者社區(qū)嗎陵刹?大師的作品有沒有詳細(xì)研究過默伍?有沒有每天堅(jiān)持用谷歌查看現(xiàn)在世界上任何與架構(gòu)有關(guān)的文章?有沒有遇到問題去學(xué)習(xí)背后的原理衰琐?如果你做到了也糊,就說明你已經(jīng)在架構(gòu)師的路上了!
還有一點(diǎn)就是工具集羡宙,架構(gòu)師的工具集都是精心對(duì)比研究過的狸剃,因?yàn)樵诩軜?gòu)師眼里效率是至上的。正如「王牌特工」里師傅帶給徒弟的特工「武器庫(kù)」一樣狗热!
富麗餅干:沒有完美的架構(gòu)钞馁,只有最適合需求的架構(gòu)虑省!架構(gòu)師更要理解需求,理解產(chǎn)品方向和產(chǎn)品經(jīng)理的思維僧凰,一味追求技術(shù)上完美的架構(gòu)探颈,最后很容易做成空中樓閣,百度騰訊都很強(qiáng)調(diào)架構(gòu)師對(duì)產(chǎn)品的理解和產(chǎn)品經(jīng)理的溝通能力训措。
陳馳遠(yuǎn):在技術(shù)方面伪节,我覺得架構(gòu)師首先得了解自己做的業(yè)務(wù),業(yè)務(wù)上有規(guī)劃绩鸣,能找到現(xiàn)階段最適合解決業(yè)務(wù)上問題的方案架馋,并且對(duì)之后的發(fā)展有概念和對(duì)策。同時(shí)全闷,保持對(duì)業(yè)界技術(shù)的關(guān)注叉寂,知道如何使用新技術(shù)解放生產(chǎn)力。永遠(yuǎn)只有最合適業(yè)務(wù)的架構(gòu)总珠!
此外屏鳍,借力也很關(guān)鍵,架構(gòu)師得有一定的人脈局服,遇到自己不擅長(zhǎng)的問題钓瞭,能找到擅長(zhǎng)問題的牛人,向他們學(xué)習(xí)淫奔,可以少走很多彎路山涡!
伍星:架構(gòu)師的成長(zhǎng)離不開平臺(tái)的發(fā)展。小平臺(tái)很難造就優(yōu)秀架構(gòu)師唆迁,架構(gòu)師都是在瓶頸和崩潰中成長(zhǎng)的!
李帥:基礎(chǔ)扎實(shí)鸭丛,多思考,多實(shí)踐唐责!而且每個(gè)人的情況都不太一樣鳞溉,需要因人而異,但最根本的就是對(duì)編程的熱愛以及對(duì)美的思考J蟾纭(貌似已經(jīng)提升到哲學(xué)的范疇了J旆啤)
牛逼的人都是自學(xué)成才的,別指望有人能把你教成大牛F涌摇(送給所有閱讀本文的程序員同學(xué))