1. 程式人生 > >阿里雲喻義:十年牧碼,從碼農走向工程師的進化之路

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

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

“你敲下的每一行程式碼,你想過他會如何在計算機上執行嗎?你想過你的這一行程式碼會產生多少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等產品線,從2011年的時候,就是那個公司的研發總監了,負責整個公司所有產品線的研發工作。這段經歷給我很深的認識,碼農要想成長,第一階段就是做深,你所負責的業務和技術,必須吃透,能挖多深挖多深,切記不要淺嘗輒止。只有這樣,當你的業務調整和發展的時候,你才能看出來哪些是本質的不變,哪些是需要調整的。 另外就是要有系統的眼光,不能只看到你一個模組,你要看的整個系統是怎麼運作的。2012年的時候,對於這種單機裝置的發展前景不太看好,於是跳槽到了一家國企,做智慧裝置雲平臺。堅信技術的方向,你努力的方向就不會錯加入國企的時候比較有趣,因為國企要求是985畢業,但是我畢業的學校不是。可能當時面試我的老闆看中了我這個人吧,所以就簽訂了外包合同才進去的,哈哈。但是不到1年就在公司得到了認可,董事長審批後轉為了正式員工。我是依靠安全能力加入的,所以一開始是在安全團隊。但是加入公司後,相鄰的儲存團隊遇到了核心panic問題和效能瓶頸,而這兩塊工作對於系統的理解能力要求很高,慶幸工作的前幾年基礎打的不錯,於是很快幫助這個team解決了幾個困擾許久的panic問題,同時將當時分散式儲存的效能提升了30%多。

工作能力得到認可,差不多13年開始,就開始負責一個系統軟體所,包括安全、儲存、核心和BI團隊。那個時候的BI團隊還是使用的Oracle Datewarehouse,遇到了效能瓶頸,經常出現1天的資料第二天無法計算完成的情況。那時候的我對於大資料一無所知,於是又開始跟行業裡面比較優秀的同學聊這塊的方向,當時就認為我們需要轉型了,不能在用這種單機模式了。於是就組建團隊,建設公司的大資料平臺。說實話,剛開始的時候自己也不知道能不能搞成,但是堅信這個方向是對的。差不多半年多的時間,真的搭建起了公司內部的大資料叢集,水平擴張能力完全滿足了當時的業務增長需求。

後來又開始逐步將業務雲化,真正實現了智慧裝置的雲平臺。這段經歷給我的成長是,碼農走向工程師的關鍵一步,就是你要認清和堅信技術的方向。只要技術的方向不錯,你努力的方向就不會錯。2016年的時候,個人遇到了管理瓶頸期,同時也想到一個更大的業務平臺上發展,於是跳槽來到了杭州-阿里雲。每一個工程師都是對業務場景極其瞭解的碼農加入阿里雲後,作為視訊雲的產品架構師,開始更多的與行業客戶溝通視訊業務的解決方案,拓展雲的邊界。如何利用阿里雲的技術能力,更好的服務客戶業務,服務客戶。

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

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

沒有雙11、世界盃的洪峰流量,你很難憑空設計出流量排程的演算法,也更沒有業務場景去驗證你的技術。所以每一個工程師都是對業務場景及其瞭解的碼農。後記接觸過我的同學都說我是工作狂,當你的工作就是你所興趣的方向,工作可以給客戶、社會和公司帶來價值,你就會非常享受這個過程。

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

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

原文連結 本文為雲棲社群原創內容,未經允許不得轉載。