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

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

“你敲下的每一行代碼,你想過他會如何在計算機上運行嗎?你想過你的這一行代碼會產生多少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起來的。
從防火牆產品線,逐步拓展到×××、上網行爲管理、NGFW等產品線,從2011年的時候,就是那個公司的研發總監了,負責整個公司所有產品線的研發工作。
這段經歷給我很深的認識,碼農要想成長,第一階段就是做深,你所負責的業務和技術,必須吃透,能挖多深挖多深,切記不要淺嘗輒止。只有這樣,當你的業務調整和發展的時候,你才能看出來哪些是本質的不變,哪些是需要調整的。
另外就是要有系統的眼光,不能只看到你一個模塊,你要看的整個系統是怎麼運作的。
2012年的時候,對於這種單機設備的發展前景不太看好,於是跳槽到了一家國企,做智能設備雲平臺。

堅信技術的方向,你努力的方向就不會錯
加入國企的時候比較有趣,因爲國企要求是985畢業,但是我畢業的學校不是。可能當時面試我的老闆看中了我這個人吧,所以就簽訂了外包合同才進去的,哈哈。但是不到1年就在公司得到了認可,董事長審批後轉爲了正式員工。
我是依靠安全能力加入的,所以一開始是在安全團隊。但是加入公司後,相鄰的存儲團隊遇到了內核panic問題和性能瓶頸,而這兩塊工作對於系統的理解能力要求很高,慶幸工作的前幾年基礎打的不錯,於是很快幫助這個team解決了幾個困擾許久的panic問題,同時將當時分佈式存儲的性能提升了30%多。

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

後來又開始逐步將業務雲化,真正實現了智能設備的雲平臺。
這段經歷給我的成長是,碼農走向工程師的關鍵一步,就是你要認清和堅信技術的方向。只要技術的方向不錯,你努力的方向就不會錯。
2016年的時候,個人遇到了管理瓶頸期,同時也想到一個更大的業務平臺上發展,於是跳槽來到了杭州-阿里雲。

每一個工程師都是對業務場景極其瞭解的碼農
加入阿里雲後,作爲視頻雲的產品架構師,開始更多的與行業客戶溝通視頻業務的解決方案,拓展雲的邊界。如何利用阿里雲的技術能力,更好的服務客戶業務,服務客戶。

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

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

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

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

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

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

歡迎關注我們的產品:阿里雲視頻雲產品家族,https://promotion.aliyun.com/ntms/apsaravideoall.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章