有人會問,碼農和工程師有區別嗎?有什麼區別?相信每個人都有不同的理解。
「你敲下的每一行**,你想過他會如何在計算機上執行嗎?你想過你的這一行**會產生多少cache miss嗎?你想過你的這段**分支**的概率是多大?你想過你這段**是否適合在邏輯核上執行?你真的想過嗎?」
我是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年的時候,就是那個公司的研發總監了,負責整個公司所有產品線的研發工作。
這段經歷給我很深的認識,碼農要想成長,第一階段就是做深,你所負責的業務和技術,必須吃透,能挖多深挖多深,切記不要淺嘗輒止。只有這樣,當你的業務調整和發展的時候,你才能看出來哪些是本質的不變,哪些是需要調整的。
另外就是要有系統的眼光,不能只看到你乙個模組,你要看的整個系統是怎麼運作的。
2023年的時候,對於這種單機裝置的發展前景不太看好,於是跳槽到了一家國企,做智慧型裝置雲平台。
堅信技術的方向,你努力的方向就不會錯
加入國企的時候比較有趣,因為國企要求是985畢業,但是我畢業的學校不是。可能當時面試我的老闆看中了我這個人吧,所以就簽訂了外包合同才進去的,哈哈。但是不到1年就在公司得到了認可,董事長審批後轉為了正式員工。
我是依靠安全能力加入的,所以一開始是在安全團隊。但是加入公司後,相鄰的儲存團隊遇到了核心panic問題和效能瓶頸,而這兩塊工作對於系統的理解能力要求很高,慶幸工作的前幾年基礎打的不錯,於是很快幫助這個team解決了幾個困擾許久的panic問題,同時將當時分布式儲存的效能提公升了30%多。
工作能力得到認可,差不多13年開始,就開始負責乙個系統軟體所,包括安全、儲存、核心和bi團隊。
那個時候的bi團隊還是使用的oracle datewarehouse,遇到了效能瓶頸,經常出現1天的資料第二天無法計算完成的情況。那時候的我對於大資料一無所知,於是又開始跟行業裡面比較優秀的同學聊這塊的方向,當時就認為我們需要轉型了,不能在用這種單機模式了。於是就組建團隊,建設公司的大資料平台。
說實話,剛開始的時候自己也不知道能不能搞成,但是堅信這個方向是對的。差不多半年多的時間,真的搭建起了公司內部的大資料集群,水平擴張能力完全滿足了當時的業務增長需求。
後來又開始逐步將業務雲化,真正實現了智慧型裝置的雲平台。
這段經歷給我的成長是,碼農走向工程師的關鍵一步,就是你要認清和堅信技術的方向。只要技術的方向不錯,你努力的方向就不會錯。
2023年的時候,個人遇到了管理瓶頸期,同時也想到乙個更大的業務平台上發展,於是跳槽來到了杭州-阿里雲。
每乙個工程師都是對業務場景極其了解的碼農這個時候很大的轉變就是,之前更多的考慮技術怎麼實現,而現在更多的是考慮技術如何解決業務問題,創造技術紅利,拓展商業邊界。你需要深入到不同行業不同客戶,去深挖理解他們的場景,跟他們一塊分析解決客戶的痛點。
你會很好的理解到,所有的技術都是為業務服務,而業務的發展又給了技術更新演進提供的場景。沒有業務,技術都是虛的。
沒有雙11、世界盃的洪峰流量,你很難憑空設計出流量排程的演算法,也更沒有業務場景去驗證你的技術。所以每乙個工程師都是對業務場景及其了解的碼農。
後記
接觸過我的同學都說我是工作狂,當你的工作就是你所興趣的方向,工作可以給客戶、社會和公司帶來價值,你就會非常享受這個過程。
當然對從工作中對收穫,會有對家人照顧對遺憾。我非常感謝我家人對我的支援,從16年隻身一人來到杭州追逐夢想,到現在廈門研發中心開啟新的篇章,她們都是我堅強對後盾。
最後期待更多的行業和業務與雲發生化學反應,一起讓技術業務化,讓業務技術化。
阿里雲喻義 十年牧碼,從碼農走向工程師的進化之路
有人會問,碼農和工程師有區別嗎?有什麼區別?相信每個人都有不同的理解。你敲下的每一行 你想過他會如何在計算機上執行嗎?你想過你的這一行 會產生多少cache miss嗎?你想過你的這段 分支 的概率是多大?你想過你這段 是否適合在邏輯核上執行?你真的想過嗎?給我們丟擲這些問題的是劉廷偉,阿里雲高階技...
十年牧碼,我的平凡之路
我是乙個有著十年碼齡的無證程式設計師,如果算上996那就更長了。我有讀故事的喜好,別人的艱辛 遭遇 苦難,往往能化為我生活的勇氣和前進的動力。今天我想講講自己的故事,它雖不夠精彩和離奇,但卻如同那一行行 平淡 樸素而真實。平凡人的奮鬥 掙扎 彷徨,往往最能打動人心,因為有自己生活的影子。本人80後,...
雲計算這十年
自2006年肇始,雲計算發展至今已逾10年,在技術和產業領域都取得了巨大進展,成為推動網際網路創新的主要資訊基礎設施。隨著網際網路計算越來越呈現出網路化 泛在化和智慧型化趨勢,人類社會 資訊系統和物理世界正逐漸走向 人 機 物 三元融合,這需要新型計算模式和計算平台的支撐,而雲計算無疑將成為其中代表...