阿里雲喻義 十年牧碼,從碼農走向工程師的進化之路

2021-08-29 20:29:41 字數 3276 閱讀 5434

有人會問,碼農和工程師有區別嗎?有什麼區別?相信每個人都有不同的理解。

「你敲下的每一行**,你想過他會如何在計算機上執行嗎?你想過你的這一行**會產生多少cache miss嗎?你想過你的這段**分支**的概率是多大?你想過你這段**是否適合在邏輯核上執行?你真的想過嗎?」

給我們丟擲這些問題的是劉廷偉,阿里雲高階技術專家,花名喻義。在團隊裡接觸過喻義的人都知道,他就是這麼乙個較真的人。也許正是因為這份堅持和信仰,才讓他能從一名普通碼農逐漸成長,蛻變成如今的帶領數十位工程師的架構師團隊leader。在1024程式設計師節來臨之際,我們有幸能走進喻義,和他聊聊他這十年來的牧碼之路。

碼農想要成長,必須先吃透

我是08年畢業,數學專業。因為數學專業其實找工作不太好找,所以就從大三開始自學計算機的課程,大三下學期的時候報考了當時比較火的軟體設計師考試,結果一不小心考了全國第十,當時就想看來自己還是比較適合幹計算機這一行。

於是07年底,就拿著這個證去了乙個安全創業的公司實習了。說實話雖然公司不大,但事情還是很多。當時是做軟硬體一體化的防火牆,最開始參與應用層業務邏輯部分的c、c++和ruby的開發。反正是新人,不管什麼活都認真投入去做,有問題就問;從業務邏輯,到資料結構;從資料結構到記憶體和效能優化;從效能優化到編譯優化;最後把我師傅都問蒙了。做了差不多半年不到,老闆看小夥子衝勁不錯,喜歡鑽研,就把我安排到核心團隊去了(後來發現,這個決定對我整個牧碼生涯產生了決定性的影響)。

當時是基於linux核心開發的,最開始只是做業務監控和統計,基於核心協議棧 bridge和ip層的hook開發,真正的新的業務模組參與不多,但是從那個時候接觸linux核心的那一刻開始,就深深的吸引了我,從來沒有見過這麼龐大的**,而且**風格非常好,可以用秀色可餐來形容。(那個時候對於整個核心的框架還沒感覺,只是對**感覺很舒服)。

因為一開始都是做非核心核心業務,當時也覺得自己學的差不多了,就開始給公司**庫提交patch,現在還記憶深刻,是核心鑑權的系統,結果我提交後系統回歸測試就搞出了乙個bug,整個公司研發20多個人,debug了一周沒找到原因,但是我始終感覺不是我**的問題,但是沒辦法,是我的**觸發的問題,只能是把我的**給回滾了(後來證明是**商提供的網絡卡驅動有問題,我的**邏輯恰好觸發了那個bug)。當時真多很傷心,但是沒辦法,我自己也沒法證明到底**出了問題,只能先回滾。那個時候我發現,必須系統化的把linux核心搞懂才行。

於是那段時間就開始看各種核心的書,《linux kernel internals》、《linux核心驅動開發》、《深入理解linux網路技術內幕》、《linux 核心網路源**情景分析》,其實從剛剛那個debug的場景就能想象到,當時整個team到同學在核心這塊功力都不太夠,而且在青島這種二線城市,做核心研發的同學更少。但是這些書和**啃起來很難,有些時候乙個鎖的使用,為什麼需要關閉軟中斷,好幾個晚上想不明白,周圍也沒有可以討論的同學,於是就開始去混核心社群和論壇,後來成了chinaunix核心社群原始碼版的版主,網名「瀚海書香」。那個社群前後有4個版主,現在有3個已經都在阿里雲聚首了。

那段時間很累,但心氣很足,每天都能感受到自己的成長。而且核心這塊熟悉後,看問題的時候,除了業務層面,你還會從整個系統的角度來思考問題。

因為核心裡面有很多涉及驅動和彙編的事情,於是又開始研究編譯原理,讓自己更好的理解整個系統是怎麼用在這個硬體上run起來的。

從防火牆產品線,逐步拓展到vpn、上網行為管理、ngfw等產品線,從2023年的時候,就是那個公司的研發總監了,負責整個公司所有產品線的研發工作。

這段經歷給我很深的認識,碼農要想成長,第一階段就是做深,你所負責的業務和技術,必須吃透,能挖多深挖多深,切記不要淺嘗輒止。只有這樣,當你的業務調整和發展的時候,你才能看出來哪些是本質的不變,哪些是需要調整的。

另外就是要有系統的眼光,不能只看到你乙個模組,你要看的整個系統是怎麼運作的。

2012

年的時候,對於這種單機裝置的發展前景不太看好,於是跳槽到了一家國企,做智慧型裝置雲平台。

堅信技術的方向,你努力的方向就不會錯

加入國企的時候比較有趣,因為國企要求是985畢業,但是我畢業的學校不是。可能當時面試我的老闆看中了我這個人吧,所以就簽訂了外包合同才進去的,哈哈。但是不到1年就在公司得到了認可,董事長審批後轉為了正式員工。

我是依靠安全能力加入的,所以一開始是在安全團隊。但是加入公司後,相鄰的儲存團隊遇到了核心panic問題和效能瓶頸,而這兩塊工作對於系統的理解能力要求很高,慶幸工作的前幾年基礎打的不錯,於是很快幫助這個team解決了幾個困擾許久的panic問題,同時將當時分布式儲存的效能提公升了30%多。

工作能力得到認可,差不多13年開始,就開始負責乙個系統軟體所,包括安全、儲存、核心和bi團隊。

那個時候的bi團隊還是使用的oracle datewarehouse,遇到了效能瓶頸,經常出現1天的資料第二天無法計算完成的情況。那時候的我對於大資料一無所知,於是又開始跟行業裡面比較優秀的同學聊這塊的方向,當時就認為我們需要轉型了,不能在用這種單機模式了。於是就組建團隊,建設公司的大資料平台。

說實話,剛開始的時候自己也不知道能不能搞成,但是堅信這個方向是對的。差不多半年多的時間,真的搭建起了公司內部的大資料集群,水平擴張能力完全滿足了當時的業務增長需求。

後來又開始逐步將業務雲化,真正實現了智慧型裝置的雲平台。

這段經歷給我的成長是,碼農走向工程師的關鍵一步,就是你要認清和堅信技術的方向。只要技術的方向不錯,你努力的方向就不會錯。

2016

年的時候,個人遇到了管理瓶頸期,同時也想到乙個更大的業務平台上發展,於是跳槽來到了杭州-阿里雲。

每乙個工程師都是對業務場景極其了解的碼農

這個時候很大的轉變就是,之前更多的考慮技術怎麼實現,而現在更多的是考慮技術如何解決業務問題,創造技術紅利,拓展商業邊界。你需要深入到不同行業不同客戶,去深挖理解他們的場景,跟他們一塊分析解決客戶的痛點。

你會很好的理解到,所有的技術都是為業務服務,而業務的發展又給了技術更新演進提供的場景。沒有業務,技術都是虛的。

沒有雙11、世界盃的洪峰流量,你很難憑空設計出流量排程的演算法,也更沒有業務場景去驗證你的技術。所以每乙個工程師都是對業務場景及其了解的碼農。

後記接觸過我的同學都說我是工作狂,當你的工作就是你所興趣的方向,工作可以給客戶、社會和公司帶來價值,你就會非常享受這個過程。

當然對從工作中對收穫,會有對家人照顧對遺憾。我非常感謝我家人對我的支援,從16年隻身一人來到杭州追逐夢想,到現在廈門研發中心開啟新的篇章,她們都是我堅強對後盾。

最後期待更多的行業和業務與雲發生化學反應,一起讓技術業務化,讓業務技術化。

阿里雲喻義 十年牧碼,從碼農走向工程師的進化之路

有人會問,碼農和工程師有區別嗎?有什麼區別?相信每個人都有不同的理解。你敲下的每一行 你想過他會如何在計算機上執行嗎?你想過你的這一行 會產生多少cache miss嗎?你想過你的這段 分支 的概率是多大?你想過你這段 是否適合在邏輯核上執行?你真的想過嗎?我是08年畢業,數學專業。因為數學專業其實...

十年牧碼,我的平凡之路

我是乙個有著十年碼齡的無證程式設計師,如果算上996那就更長了。我有讀故事的喜好,別人的艱辛 遭遇 苦難,往往能化為我生活的勇氣和前進的動力。今天我想講講自己的故事,它雖不夠精彩和離奇,但卻如同那一行行 平淡 樸素而真實。平凡人的奮鬥 掙扎 彷徨,往往最能打動人心,因為有自己生活的影子。本人80後,...

雲計算這十年

自2006年肇始,雲計算發展至今已逾10年,在技術和產業領域都取得了巨大進展,成為推動網際網路創新的主要資訊基礎設施。隨著網際網路計算越來越呈現出網路化 泛在化和智慧型化趨勢,人類社會 資訊系統和物理世界正逐漸走向 人 機 物 三元融合,這需要新型計算模式和計算平台的支撐,而雲計算無疑將成為其中代表...