資訊

阿里畢玄:從生物系學生,到技術團隊 leader,他是如何完成自我蛻變的

廣告
廣告

? MSuzanne D. Williams

編者按:

新的技術層數不窮,困擾程序員的不僅有學不完的新技術,還有每個人在職業生涯中必然會面對的成長路線問題。這就像一個產品有了清晰的roadmap,下一步走的才會更自信。本文整理自程序員畢玄的《程序員的成長路線(續)》,講述了自己加入阿里后的技術成長歷程。

本文首發于作者的個人公眾號“Hello Java

技術能力成長

我大學讀的是生物系,缺少了計算機方面的專業訓練,這個使得我在技術能力上欠缺的比較多。回頭想想,在工作的前5年,更多的是在拓寬技術面。例如,剛畢業的時候只會ASP,畢業后的兩年學會了VB、Delphi這些神器,到工作的第三、第四年專注在工作流領域。

技術能力的成長主要是在07年加入阿里之后。在加入阿里前,我是一個連日均訪問量1w PV都沒見過的人,到了阿里,做的第一件事竟然是要寫HSF(阿里內部使用的RPC服務框架),并且要在客服的CRM系統上線,當時的訪問量大概是每天上百萬的服務調用,無知者無畏,然后就那么上線了,神奇的是,竟然沒出現什么問題。

于是繼續把HSF上線到交易中心,當時交易中心每天的服務調用量大概是1億左右,結果上線當天就回滾了,而且還不知道到底是什么原因,這次的回滾是我做技術以來觸動最大的一次(觸動大是因為:如果要是解決不了,可能就要從淘寶滾蛋了)。回滾后開始仔細查問題,最后發現是當時HSF所使用的jboss-remoting默認的超時參數60s的問題,自從這個問題后,才明白:

“要支撐好到了一定量級的系統,最重要的是對整個技術棧的精通,否則出問題都不知道該怎么解決或臨時查。”

? Matt Duncan

于是才開始仔細學習Java的BIO/NIO、Mina、反射和并發編程等,盡管這些東西在加入阿里前也看過一些書和資料,但到了用的時候才發現自己其實不怎么懂。于是那段時間開始更密集、更細致的看書,翻看用到的Mina、甚至是Java各種API背后的源碼,那也是自己的Java技能提升最快的一段時間。在回滾的兩個月后,基于Mina完全重寫了HSF,再次上線時一切順利。

在那之后,隨著HSF應用的場景越來越多,以及在淘寶消防隊需要去查各類問題,Java方面的技能得以獲得了持續的提升。同時,我發現很多的Java問題要處理的好,還要對JVM、操作系統層面有一定的掌握才行,尤其是JVM。于是和當時還在阿里的撒迦,經常一起周末跑到公司結對看JVM代碼,:),在撒迦的幫助下,對JVM的掌握也越來越好,那段時光讓自己明白:

“只有看了代碼,并且有相應的場景去使用,才有機會真正的掌握它。”

在HSF之后,去做HBase,學習到了存儲方面的很多技能,這也是我之前完全不懂的領域,在HBase之后,開始做T4,進入徹底不懂的領域,虛擬化、Cgroup等等都是那個時候才開始學習,但因為沒詳細研究過代碼,而且只是去做改造的工作,所以到今天也只是懂點皮毛而已。

? Jake Hills

對于程序員而言,技術能力的成長顯然是最重要的(程序員行當里最贊的一句就是:Talk is cheap, show me the code!)。我在技術方面的很多成長都是屬于被逼的,但往往這種場景下的成長也是最快的。很多同學會覺得自己沒碰到這樣的機會,所以成長就比較慢,我非常建議大家可以嘗試自己去創造一些類似的場景(當然,如果是工作本身所需就更好了),來學相應的技術能力(例如學Java的通訊框架,可以嘗試自己基于BIO/NIO寫一個,然后對比Mina/Netty這些成熟的,看看為什么寫的不太一樣,又例如學Java的內存管理,可以嘗試自己寫程序去控制GC的行為,例如先來一次ygc,再來兩次fgc,再來5次ygc,再來一次fgc之類的)。此外:

學的時候除了一些入門的書外,我非常建議去翻看源碼,最后你會發現所有的書都不如源碼,這樣才能真正的理解和學會,否則會很容易忘。”

架構能力成長

說起架構,我在剛工作的第三年負責工作流系統的時候,好像也做過,但直到后來在阿里做T4、異地多活我才有了更強烈的感受,以及對架構師的一些理解。我現在理解的架構是一個結構圖,當然有不同視角的結構,但這個圖里的部分是多個團隊來做的,甚至是跨多個專業的團隊。

在做T4的時候,由于T4涉及到標準的Java WebConsole,以及一堆的運維體系和容器技術等,無論是從研發視角還是部署視角,這都是一個至少要跨三個團隊的結構。因此,作為T4的架構師,當時最大的一個感觸是:

“怎么設計好整個架構,以及各自的邊界、接口,以便讓跨專業的多個團隊能更好的協作。在這個階段中,最重要的是怎么根據整個項目的優先級來調整每個部分,以及作為一個非全棧的架構師如何更好的確保項目結果。”

T4這個項目,讓我有機會從一位只做某個專業系統的架構師成長為一位能做跨專業系統的架構師。

在做異地多活的時候,感受就更加強烈了。因為異地多活所涉及的技術領域、以及參與項目的人數規模都上升到了一個非常高的程度,來自各專業、各系統的人都需要在看了整個架構后,才能知道自己應該做什么和扮演的團隊角色。

“在做異地多活的項目過程中,作為總架構師,最重要的職責是如何控制項目的風險,找出項目中的核心,并且從架構上去思考如何去設計這個部分。”

? Jonna konsinska

這也是我在和很多架構師交流時,最喜歡問的問題。一份架構文檔不是說按照模板寫就可以(很多的架構設計文檔都是千篇一律,通常看到的都是什么都考慮,但從架構設計上并沒體現這些需要重點考慮的地方是怎么做的),而是要根據實際的項目/產品情況來突出重點,確保最重要的幾個問題是從架構設計上就去掌控的,尤其是跨多個專業團隊的大型項目。這種項目準確的說,是大架構師帶著很多專業領域的架構師來一起來做的,例如,異地多活項目從架構設計上來說,除了正常的結構、邊界以外,最重要的是數據正確性的設計。異地多活架構師的這段經歷,在我架構能力的積累上起到了非常重要的作用。

“架構師對知識寬度的要求非常高,并且要能非常好的進行抽象,來做結構、邊界的設計,分析出當前階段系統的重點,并從架構層面做好設計來確保項目重點的實現。”

相對技術能力的成長而言,架構能力的成長更需要職業機會和場景。但在機會前,同樣需要有足夠的積累,例如在寫一個系統的時候,是不是主動的去了解過上下游的系統設計,是不是了解過具體的部署結構,對相應的知識點有沒有簡單的了解等。我在做T4前,LVS、機房/網絡結構等完全搞不懂是怎么回事。

技術Leader修煉

技術Leader需要有對技術趨勢的感知和判斷能力,這是非常綜合的能力。同時,具備一到兩個領域的技術深度,大的架構能力,以及對技術歷程的理解、技術發展的思考能力。然后是其他的一些比較綜合的能力,例如組織搭建、建設方面等。不過綜合能力這塊,對技術人來說,通常會欠缺的更多一些,這方面我也還在修煉和學習中,就不講太多了。

總結

總結來說,我覺得和在之前文章里寫的一樣,程序員可發展的路線還是很多的,上面寫的這三條其實都是可發展的路線,沒有孰優孰劣,誰高一等之類的,興趣和個人優勢仍然是最重要的。

畢玄:阿里云開發者中心負責人,阿里系統軟件、中間件、研發效能負責人。

最干貨的java+分布式技術公眾號,兼及研發管理。本號專家陣容:螞蟻金服右軍、易寶CTO陳斌、米么金服總監李偉山、奧琪金科首席架構曲健、螞蟻金服高級技術專家張翔、美團高級技術專家楊彪等。

在2020年及未來,網絡會變成什么樣子?

上一篇

萬萬沒想到,HashMap默認容量的選擇,竟然背后有這么多思考!?

下一篇

你也可能喜歡

阿里畢玄:從生物系學生,到技術團隊 leader,他是如何完成自我蛻變的

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
双色球常规走势图 66河南麻将游戏下载 杭州麻将单机 免费单机麻将游戏 老11选5 山东十一选五在线杀 足球即时指数球探网 湖北11选5开奖走 华体网即时赔率盘口 日本黄色片三级快播 排球比分网址 mba考什么科目 皇冠比分手机版网站