云棲專輯| 阿里畢玄:程序員的成長(zhǎng)路線

摘要:阿里基礎(chǔ)設(shè)施負(fù)責(zé)人畢玄結(jié)合自己的經(jīng)歷跟大家講述了他在各個(gè)角色上成長(zhǎng)的感受,值得所有正為職業(yè)發(fā)展而迷茫的技術(shù)同學(xué)細(xì)細(xì)品味。

【編者按】2018年12月20日,云棲社區(qū)3周歲生日。阿里巴巴常說(shuō)“晴天修屋頂”,所以我們特別策劃了這個(gè)專輯——分享給開(kāi)發(fā)者們20個(gè)阿里故事,50本書(shū)籍。第一位是林昊(畢玄)。

在這篇《程序員的成長(zhǎng)路線》里,阿里基礎(chǔ)設(shè)施負(fù)責(zé)人畢玄結(jié)合自己的經(jīng)歷跟大家講述了他在各個(gè)角色上成長(zhǎng)的感受。在他的職業(yè)經(jīng)歷中,在成長(zhǎng)方面經(jīng)歷了技術(shù)能力的成長(zhǎng)、架構(gòu)能力的成長(zhǎng),以及現(xiàn)在作為一個(gè)在修煉中的技術(shù)

Leader 的成長(zhǎng)。其中技術(shù)能力和架構(gòu)能力的成長(zhǎng)是所有程序員都很需要的,值得所有正為職業(yè)發(fā)展而迷茫的技術(shù)同學(xué)細(xì)細(xì)品味。

技術(shù)能力成長(zhǎng)

我大學(xué)讀的是生物系,缺少了專業(yè)的訓(xùn)練,這個(gè)使得我在技術(shù)能力上其實(shí)欠缺的更多?;仡^想想,在工作的前5年,更多的都是在拓寬技術(shù)面,剛畢業(yè)的時(shí)候只會(huì) ASP,工作前兩年學(xué)會(huì)了 VB、Delphi這些神器,到工作的第三、四年比較專注的做了工作流領(lǐng)域。

技術(shù)能力的成長(zhǎng)主要還是在 2007 年加入阿里以后,在加入阿里前,我是一個(gè)連日均訪問(wèn)量 1萬(wàn) PV

都沒(méi)見(jiàn)過(guò)的人,到了阿里后,做的第一件事竟然就是寫(xiě) HSF,并且在客服的 CRM

系統(tǒng)上線,訪問(wèn)量大概是每天上百萬(wàn)的服務(wù)調(diào)用,無(wú)知者無(wú)畏,當(dāng)時(shí)也就那么上線了,更神奇的是竟然沒(méi)出現(xiàn)什么問(wèn)題,于是繼續(xù)把HSF上線到當(dāng)時(shí)的交易中心,當(dāng)時(shí)交易中心每天的服務(wù)調(diào)用量大概是億級(jí),結(jié)果上線當(dāng)天就回滾了,而且還不知道到底是什么原因,這次的回滾是對(duì)我觸動(dòng)最大的一次(當(dāng)然,觸動(dòng)大也有可能是后面要是解決不了,就該從淘寶滾蛋了)。

回滾后開(kāi)始仔細(xì)查問(wèn)題,最后發(fā)現(xiàn)是當(dāng)時(shí) HSF 所使用的 jboss-remoting 默認(rèn)的超時(shí)參數(shù) 60s

的問(wèn)題,自從這個(gè)問(wèn)題后,才明白要支撐好到了一定量級(jí)的系統(tǒng),最重要的是對(duì)整個(gè)技術(shù)棧的精通,否則出問(wèn)題都不知道該怎么解決或臨時(shí)查,于是才開(kāi)始仔細(xì)學(xué)習(xí)

Java 的

BIO/NIO,Mina,反射,并發(fā)編程等,盡管這些東西很多在加入阿里前也看過(guò)一些書(shū)、資料學(xué)過(guò),但到了這個(gè)時(shí)候才發(fā)現(xiàn)自己其實(shí)不怎么懂,那段時(shí)間密集的開(kāi)始更細(xì)致的看書(shū),翻看用到的

Mina、甚至是 Java 的各種 API 背后的源碼,是自己的 Java 技能提升最快的一段時(shí)間,在回滾的兩個(gè)月后,基于 Mina

完全重寫(xiě)了 HSF,再次上線終于一切順利。

在那之后,隨著 HSF 應(yīng)用的場(chǎng)景越來(lái)越多,以及加上后來(lái)自己在淘寶消防隊(duì)查比較多的問(wèn)題,Java

方面的技能也得到了不少成長(zhǎng),而同時(shí)也發(fā)現(xiàn)了很多的 Java 問(wèn)題還得對(duì) JVM、操作系統(tǒng)層面有一定掌握才行,尤其是

JVM,于是當(dāng)時(shí)和還在阿里的撒迦經(jīng)常一起周末跑到公司來(lái)結(jié)對(duì)看 JVM 代碼,:)。在撒迦的幫助下對(duì) JVM

的掌握終于也越來(lái)越好,那段時(shí)光會(huì)讓自己明白很多東西只有看了代碼,并且有相應(yīng)的使用機(jī)會(huì)才能真正的掌握。

在 HSF 之后,去做 HBase,學(xué)習(xí)了很多在存儲(chǔ)方面的技能,這也是我之前完全不懂的領(lǐng)域,在HBase之后,開(kāi)始做第一代容器產(chǎn)品

T4(寓意是第四代淘寶技術(shù)),進(jìn)入徹底不懂的領(lǐng)域,虛擬化、Cgroup

等等都是那個(gè)時(shí)候才開(kāi)始學(xué)習(xí),但因?yàn)闆](méi)詳細(xì)研究過(guò)代碼,并自己去做改造,其實(shí)到今天也就是點(diǎn)皮毛而已。

對(duì)于程序員而言,技術(shù)能力的成長(zhǎng)顯然是最重要的(程序員行當(dāng)里最贊的一句就是:Talk is cheap, show me the

code!),我自己其實(shí)很多都屬于被逼的成長(zhǎng),當(dāng)然這樣通常反而也是最快的,很多同學(xué)會(huì)覺(jué)得自己沒(méi)碰到這樣的機(jī)會(huì),所以成長(zhǎng)就比較慢,我會(huì)非常建議的是可以嘗試自己去創(chuàng)造一些場(chǎng)景(當(dāng)然,如果本來(lái)就是工作需要就更好了),來(lái)學(xué)相應(yīng)的技術(shù)能力(例如學(xué)

Java 的通訊框架,可以嘗試自己基于 BIO/NIO 寫(xiě)一個(gè),然后對(duì)比 Mina/Netty 這些成熟的,看看為什么寫(xiě)的不太一樣,又例如學(xué)

Java 的內(nèi)存管理,可以嘗試自己寫(xiě)程序去控制 GC 的行為,例如先來(lái)一次 ygc,再來(lái)兩次 fgc,再來(lái) 5 次 ygc,再來(lái)一次

fgc之類的,學(xué)的時(shí)候除了一些入門(mén)的書(shū)外,我非常建議去翻看源碼,最后你會(huì)發(fā)現(xiàn)所有的書(shū)都不如源碼),這樣才能真正的理解和學(xué)會(huì),否則其實(shí)很容易忘。

架構(gòu)能力成長(zhǎng)

說(shuō)起架構(gòu),在我剛工作的第三年負(fù)責(zé)工作流系統(tǒng)的時(shí)候也做過(guò),但直到后來(lái)在阿里做

T4、異地多活,我才有了真正更強(qiáng)烈的感受,對(duì)架構(gòu)師也有更深的一些理解。架構(gòu)呢,我現(xiàn)在的理解基本是一個(gè)結(jié)構(gòu)圖,當(dāng)然有不同視角的結(jié)構(gòu),但這個(gè)圖里的部分呢是多個(gè)團(tuán)隊(duì)來(lái)做的,甚至是跨多個(gè)專業(yè)的團(tuán)隊(duì)。

在做 T4 的時(shí)候,由于 T4 涉及到了標(biāo)準(zhǔn)的一個(gè) Java

WebConsole,一堆的運(yùn)維體系,容器技術(shù)等,這是一個(gè)至少要跨三個(gè)團(tuán)隊(duì)的結(jié)構(gòu),無(wú)論是從研發(fā)視角還是部署視角都是如此,因此作為 T4

的架構(gòu)師,怎么設(shè)計(jì)好整個(gè)的結(jié)構(gòu),各自的邊界、接口是我當(dāng)時(shí)最大的感受,讓跨專業(yè)的多個(gè)團(tuán)隊(duì)能更好的協(xié)作,在這個(gè)階段中最重要的要考慮的是怎么根據(jù)整個(gè)項(xiàng)目的優(yōu)先級(jí)來(lái)調(diào)整每個(gè)部分,以及作為一個(gè)不是全懂的架構(gòu)師怎么更好的確保結(jié)果,我自己的感受是

T4 讓我學(xué)會(huì)了從一個(gè)只做自己專業(yè)系統(tǒng)的架構(gòu)師成長(zhǎng)為了能做跨專業(yè)的系統(tǒng)的架構(gòu)師。

在做異地多活的時(shí)候,感受就更加強(qiáng)烈,因?yàn)檫@個(gè)跨的專業(yè)數(shù)、整個(gè)參與的人數(shù)完全是上升到了一個(gè)非常大的程度,各個(gè)專業(yè)、系統(tǒng)的人都需要看整個(gè)架構(gòu)才能知道自己應(yīng)該做什么,扮演的角色,在做異地多活整個(gè)項(xiàng)目過(guò)程中,作為總的架構(gòu)師,我自己感覺(jué)的是最重要的職責(zé)是怎么控制項(xiàng)目的風(fēng)險(xiǎn),或者說(shuō)作為架構(gòu)師,你覺(jué)得一個(gè)項(xiàng)目中最重要的要掌控住的是,并且從架構(gòu)上怎么設(shè)計(jì)這個(gè)部分,這也是后來(lái)我在問(wèn)很多架構(gòu)師時(shí)最喜歡問(wèn)的問(wèn)題,一份架構(gòu)文檔不是說(shuō)按照模板寫(xiě)就可以(很多的架構(gòu)設(shè)計(jì)文檔都是千篇一律,通??吹降亩际鞘裁炊伎紤],但從架構(gòu)設(shè)計(jì)上并沒(méi)體現(xiàn)這些考慮的地方是怎么做的),而是要根據(jù)實(shí)際的項(xiàng)目/產(chǎn)品情況來(lái)突出重點(diǎn),確保最重要的幾個(gè)問(wèn)題是從架構(gòu)設(shè)計(jì)上就去掌控的,尤其是跨多個(gè)專業(yè)團(tuán)隊(duì)的大型項(xiàng)目,這種項(xiàng)目準(zhǔn)確的說(shuō)是大架構(gòu)師帶著一堆的專業(yè)領(lǐng)域的架構(gòu)師來(lái)做的,例如異地多活項(xiàng)目從架構(gòu)設(shè)計(jì)上來(lái)說(shuō)除了正常的結(jié)構(gòu)、邊界以外,最重要的是數(shù)據(jù)正確性的設(shè)計(jì),我自己最強(qiáng)的感受就是異地多活才讓我明白了一個(gè)大型系統(tǒng)的架構(gòu)師是怎么樣的。

所以就我自己的感受而言,架構(gòu)師對(duì)知識(shí)的寬要求非常廣,并且要能非常好的進(jìn)行抽象,來(lái)做結(jié)構(gòu)、邊界的設(shè)計(jì),分析出當(dāng)前階段系統(tǒng)的重點(diǎn),并從架構(gòu)層面做好設(shè)計(jì)來(lái)確保重點(diǎn)的實(shí)現(xiàn),這個(gè)相對(duì)技術(shù)能力的成長(zhǎng)而言我覺(jué)得更需要機(jī)會(huì),但同樣在機(jī)會(huì)前需要有足夠的積累(例如寫(xiě)一個(gè)系統(tǒng)的時(shí)候,是不是主動(dòng)的去了解過(guò)上下游的系統(tǒng)設(shè)計(jì),是不是了解過(guò)具體的部署結(jié)構(gòu),對(duì)相應(yīng)的知識(shí)點(diǎn)有沒(méi)有簡(jiǎn)單的了解等,我自己在做

T4 前,LVS、機(jī)房/網(wǎng)絡(luò)結(jié)構(gòu)等完全搞不懂是怎么回事)。

技術(shù)Leader修煉

技術(shù) Leader 我比較傾向于有前面兩步積累的同學(xué),技術(shù) Leader

非常重要的一點(diǎn)是對(duì)技術(shù)趨勢(shì)的感知和判斷能力,這其實(shí)是個(gè)非常綜合的能力,一到兩個(gè)領(lǐng)域的技術(shù)深度,大的架構(gòu)能力,對(duì)技術(shù)歷程的理解、技術(shù)發(fā)展的思考能力,作為技術(shù)

Leader 是很需要的,然后是其他的一些作為 Leader

方面的比較綜合的一些能力(例如組織搭建、建設(shè)方面的能力等,不過(guò)這些能力呢通常對(duì)技術(shù)的人來(lái)說(shuō)確實(shí)會(huì)欠缺的更多一些),這個(gè)我自己還在修煉和學(xué)習(xí)中,就不講太多了。

總結(jié)

總結(jié)來(lái)說(shuō)呢,我認(rèn)為程序員可發(fā)展的路線還是很多的,上面寫(xiě)的這三條其實(shí)都是可發(fā)展的路線,沒(méi)有孰優(yōu)孰劣,誰(shuí)高一等之類的,興趣、個(gè)人優(yōu)勢(shì)仍然是最重要的。

作為《OSGi原理與最佳實(shí)踐》和《分布式Java應(yīng)用:基礎(chǔ)與實(shí)踐》的作者,畢玄推薦了他的書(shū)單給到我們:

《硅谷之謎》

《智能時(shí)代:大數(shù)據(jù)與智能革命重新定義未來(lái)》


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 露從今夜白 月是故鄉(xiāng)明 —杜甫 到宿舍了...
    Alyss閱讀 472評(píng)論 0 4
  • 爸爸:我們要去買(mǎi)紫薯給媽媽才行 女兒:紫薯,和我的幼兒園一樣是嗎 爸爸:是紫薯阿,不是你的幼兒園 女兒:我的幼兒園...
    阿拉噹與潘小蝦閱讀 221評(píng)論 0 1
  • 開(kāi)始進(jìn)入復(fù)習(xí)階段。期末考試及暑假開(kāi)始2周倒計(jì)時(shí)。 大偵探福爾摩斯小學(xué)生版入了全套,已經(jīng)開(kāi)啟了。一個(gè)人的理解能力和邏...
    童年太短只讀經(jīng)典閱讀 164評(píng)論 0 0

友情鏈接更多精彩內(nèi)容