本帖最后由 twq19810302 于 2022-12-10 10:54 編輯 ( X2 i5 ]+ r0 y
) P4 p" P! P* D: I8 b0 G- P
如何成為一名優秀的工程師,來看看華為員工怎么說——- z5 O5 O' S4 {& r" p0 `
# U* r5 {, I6 w$ ]無論是在T、W公司還是在華為,我有幸得以一直從事OS(操作系統)行業,但坦率來講,這是一個擁有無窮樂趣但也充滿了艱辛的行業,很多時候并不像外界所認為的那么光鮮。 很多人問我對OS怎么看時,我都會講這樣一句話:操作系統可能是這個世界上最重要,但也是最沒用的東西。 最沒用是因為只有和芯片、業務等結合,操作系統才具有使用價值;最有用是因為操作系統是連接芯片、硬件和業務的橋梁,誰掌握了操作系統誰就擁有了主動權。 我的職業生涯一直以來都無可救****地和操作系統綁定著,華為公司發起的openEuler社區,一個國內在操作系統領域真正意義上的開放社區,看起來讓我的命運又起了新的變化。 縱然是命運的安排,也不妨礙從職業生涯中總結出一些感觸。作為一個工程師,我認為大體應該經歷四個階段。
華為專家.jpeg (8.2 KB, 下載次數: 59)
下載附件
2022-12-10 10:53 上傳
% t9 ?3 K' Z7 d. ] 01 持續的興趣興趣是成功的基礎。 雖然我將自己的職業生涯歸結為冥冥中命運的安排,但實際上,如果對這個行業沒有興趣,相信我的人生軌跡已經無數次從這個行業脫離開去。 所以我始終認為,興趣是支撐我們職業道路走得遠的唯一。 和Linux、操作系統結緣還是20多年前,我上大學的時候。大三那年,一個同學從北京回學校,帶來了兩樣東西,一個是T公司的安裝光盤,還有一本W公司嵌入式OS開發手冊。 時隔這么多年,我都還能清晰記得光盤上紅白相間的閃電和開發手冊幾乎全黑的封面。我當時拿著這兩個“寶貝”,心想:如果有一天我能在這樣的公司上班,那該是怎樣的人生巔峰。 但是當時的我絕對不可能想到,若干年以后,我會是這兩個公司的研發負責人。 我在研究生、博士期間所學和OS一點關系都沒有,我的專業是分布式計算和大規模存儲。 當我的人生軌跡看起來一切安好地沿著存儲一路狂奔的時候,畢業季到了,我卻面臨找不到工作的窘境。 彼時國內IT能力還處于隨便代理點西方的東西就能發財的階段,沒有什么公司去做深層次的研發。 所幸由于做存儲不得不修改Linux內核,加上平時也喜歡玩玩Linux,雖然我當時的水平放到現在簡直是二把刀的檔次,但在那個能裝上Linux都是高手的時代,這點手藝讓我通過了T公司的面試,進入了這個在大學期間我就心之向往的公司。 當時的工作狀態是什么都得做,而且所有的事情都要靠自己。 我很快認識到,和我上學時想象中的高大上完全不一樣,做Linux發行版實際上是一個很枯燥、乏味的工作。 沒有留著大胡子的hacker(黑客),也沒有穿著T恤寫程序的開源范兒,有的是無窮無盡的制作軟件包,修改有著無數bug的安裝程序,不知什么時候來臨的程序崩潰、系統黑屏。 凌晨兩點被銷售的電話驚醒,回答技術問題也是屢見不鮮,以至于我一直有寫一篇論文的沖動,論文名字是:《論IT故障總在后半夜的社會學基礎和技術背景分析》。 隨著市場和行業的變遷,在T公司工作了4年后我加入了W公司WRLinux產品線,由于產品線剛成立,所以也經歷了一段混亂時期,我們不得不和全球的同事們一起從產品設計、具體實現到流程管理等一點點地將產品線逐步推到正軌上。 公司工作多年后我發現,不論什么行業做到最后,枯燥乏味才是行業的本質。 無論求學時的我對當時的T和W公司懷有多大的憧憬和期待,對OS技術具有多么高的敬意,但是在工作后沒多久,原始的興趣就消退了,隨之而來的是疲倦和乏味。 這其實很正常,任何興趣變成職業以后剩下的多半只有痛苦。 可能在這個時候,恰恰是興趣檢驗你是不是真的喜歡做這行,或者能做這行,甚至很大程度上,興趣也決定了你最終在這個行業能達到的高度。 我很難想象,一個對OS沒有興趣的人會下班以后在家打開電腦,去嘗試學習一種新語言,去安裝一個新的OS玩玩,去了解一下內核的底層機制是怎么樣的,或者無聊到寫一個小玩意保持一下手感。 我還是喜歡用Linus在CNCF2017大會上的一段話來佐證一下興趣的重要性。他說他依然很討厭C++,對maintainer(維護者)依然懷有tough love(又愛又恨) 但當有人問他如何做好一個軟件項目,如何能讓一個開源軟件更成功的時候。 Linus說:“當你做軟件的時候,不要去考慮它是否能成功,你只需要考慮你自己是否喜歡做這個事情,然后去做就好了。” + I# ~( a6 Z1 m' c6 U
02 基于細節的技術基礎誠然,光有興趣,沒有能力也是做不成什么事情的。如果對某一個領域要有深入的理解,一定要有扎實的基礎。 所謂扎實的基礎是,從這個行業的最底層一步步地爬上來,做過這個行業的所有工序,對整個流程都有切身的經驗,這樣才能擁有對所有技術細節的理解,而細節永遠是考驗一個人是否專業的標尺。 在這一點上,我要感謝曾經的經歷,我完整地經歷了一個Linux的發行版本制作的全過程,做過所有的工序。 不管哪里出問題,都需要去修理,這也幫助我對OS這樣一個龐大的系統具有了全面的理解。這些經歷形成的條件反射到現在都還依然清晰。這是技術深度的基礎。 還有一個方面則是技術廣度的基礎,雖然我在學校期間的研究方向和OS沒有什么關系,但是分布式系統、存儲系統中的很多基本理論、設計方法依然為我后面的職業道路提供了很多的幫助。 而博士期間的思維訓練,對細節的重視對我也是影響深遠。甚至在某個時間點,我突然意識到,無論是宏觀的數據中心,還是微觀的處理器設計,整個IT世界都是圍繞“一致性”這個基本準則在繞圈圈。 如果沒有相關細節的基礎知識打底,是完全不可能產生這些化學反應的。 同時長期對細節的關注養成的職業習慣會很大程度上有助于技術判斷。 在OS領域,通常很少出現問題,但是一旦出現問題,都是大問題。 舉一個我親身經歷的例子,若干年前,一個客戶的USB系統出現了問題,當時客戶和FAE(現場應用工程師)團隊已經做了詳細的分析,判定問題出現的版本區間是XX到XX之間,但是問題必須在2天內閉環,否則后果很嚴重。 看起來似乎并不難,只要循著二分查找法,很快就可以定位是什么補丁合入導致的問題,但是我總覺得哪里不太對勁; - 一個是這些合入的代碼雖然和USB有關,但是補丁的內容和問題并不完全匹配;
- 二是長期在這個行業,養成了多疑的習慣,雖然前面幾個團隊都拍著胸脯保證,但我始終對問題總出現在XX和XX之間的結論抱有懷疑。
. c% J9 e X: L. T" N! m1 C" C
# E: T$ [+ g2 [
最終,除了用二分法繼續查找原因外,我又找了一個工程師,把問題梳理了一遍,同時和整個社區進行了細細的比對,并沒有局限在某個版本區間。 幸運的是,最終工程師找到了一個不起眼的、和那個版本區間完全沒有關系的補丁解決了這個問題,我的這種謹慎和小心也幫助公司保住了這個客戶。 無論多高職級的工程師,只有對細節的關注才能避免一些可能是“眼見為實”的偏差,而盡可能多的知識覆蓋,才能讓一個人有足夠的分析和判斷能力,對自己所從事的領域做到心中有數,同時才能產生不同知識之間的交聯反應。
! K1 F; O( F% l7 B2 M' b2 ^/ } 03 深入客戶的行業理解在興趣和技術細節基礎之上,更重要的階段則是要對所在的行業有深刻的理解。 我從職業生涯的一開始就有機會持續接觸市場,多次參與商用操作系統配套多款芯片的全過程,不但技術分析、需求談判是全程參與,甚至最初的商務報價也是我拍腦袋給出來的。 雖然這似乎和純技術沒有直接的關聯,但是一個工程師能具體看到所做的東西怎么轉化成為商品是一件意義非凡的事情。 穿上西裝,打上領帶去見客戶、投標競標并不是傳統意義上的技術范疇,但是我始終認為這種經歷遠遠要比我的技術積累來得更為重要。 它培養了某種“直覺”,行業的“直覺”。 雖然我認為,對于很多事情,人的直覺是不靠譜的,但那是指對確定性事物而言。但是世界上大量的事物是不確定性的,對于不確定事物走向的判斷,除了“直覺”,別無他法。 參與到市場化、產品化的過程中,能夠極大地提升工程師對技術的進一步認知。 以openEuler為例,我們在一開始的設計過程中就始終強調一點,一定要以生態伙伴的利益為最高的設計目標,要幫助合作伙伴更多的贏利。如果只是單純從技術角度來看,這好像聽起來怪怪的,我們花費了成本,卻不主動獲得收益。 但是如果從更為廣泛的市場角度來看,其實,操作系統本身是連接硬件和軟件的橋梁,連接暢通了,交流更順暢了,市場繁榮起來了,在這個市場里的玩家,不論是硬件,還是軟件,都會獲得可觀的收益。 因此就完全沒有必要去收一點點過橋費了! 只有在對行業有深刻的理解的基礎上,我們才能談到技術規劃,我們才能談到版本演進路徑,我們才能談到生命周期,甚至才能談到社區治理、技術方向的投入等內容。 如果要做一個總結的話,可以囊括成為一句話:不光要懂技術,更要懂行。
' c; G4 l6 x5 Y2 I2 R 04 面向完整業務的創新我一直認為只有在懂行的基礎上才談得上創新,我理解的創新并不是一個技巧的改進,一段代碼靈光一閃的優化,而應該是在對所在領域深刻理解的基礎上做出的一些或大或小的變革,或者是一個完整的產品,或者一個完整的系統,而且這些變革、產品、系統能在商業上帶來一些收益。這應該是一個工程師最高的境界了。 從創新的角度來說,個人之見,一個頂級的工程師,并不是那個在發動機的外殼畫上一道線,然后說這道線值1美元,但是知道在哪里畫值49999美元的天才,而是創造了發動機的那個無名工程師。 在我看來,那個天才只是修正了這個工程師的一個bug而已,只是一個“微創新”,而那個工程師才是使得這個故事有一個開始的人。 傳統上,由企業主導的內部創新都會強調必須要和業務強結合,同時要求短期能夠有收益,因此,對于很多長周期的、可能具有顛覆性效用的創新,企業內的研發環境可能并不那么友好。 幸運的是,華為已經正式開始實施鯤鵬產業戰略,操作系統成為了重要的一環。公司成立了openEuler開源社區,按照行業的做法來做生態,目標就是作為一個開放、創新的開源平臺,為第三方的操作系統提供穩固的底座和基礎。 一個全新的鯤鵬架構,一個全新的openEuler的開放社區,我們可以將一些不成熟的,甚至是天馬行空的想法放到社區里孵化,讓寬容的開源社區為這些項目提供一個良好的生長空間。 希望openEuler社區能孕育出更多創造發動機的工程師,而唯一的區別是,你絕不會再默默無聞。 05 結語公司近幾年發生了非常多的變化,對我來講,文化和思想上的變化是最重要的。 而可信、生態、clean code,這些雖然看起來有點形而上學的詞語,現在也逐漸在公司的各個角落以不同的形式產生著些許化學反應。 但我刻意沒有去聊一些代碼方面的經歷和經驗,我始終認為,代碼技巧雖然重要,但是大體只能支持一個工程師到第二個層次,也就是基礎層面。 就像從幼兒園、小學開始我們就接受漢字練習,接受作文技巧方面的訓練,但是會漢字,有技巧并不能保證我們寫出偉大的作品。 任何偉大的文學作品本質還是對生活的深刻理解。 因此,在我看來,除了一步步爬過這四個層次,似乎沒有別的辦法能夠讓我們一步登天,引領世界。所以,當我們各個部門和團隊進行創新的時候,可能要先審視一下是否已經經過了這幾個階段,是否有足夠的人員已經具有了這幾個層次的條件。 在這里對年輕的工程師們提出一些個人的建議吧,最近這兩年,產業環境發生了巨變,一方面指令集、芯片、體系架構、存儲器件等硬件領域經歷著巨大的變革;另一方面,5G、云計算、IoT、邊緣計算等新興領域蓬勃興起,這些都推動操作系統領域發生深刻的變化,它不但是連接硬件和軟件之間的橋梁,更成為軟件生態的控盤手。 操作系統以及附著之上的生態系統已經成為各大公司的必爭之地,讓這個傳統領域以另外一種形式重新回到了舞臺中央。 我希望越來越多的年輕人能培養起對操作系統強烈的興趣,打好技術基礎,接觸市場,逐步積累行業知識,發揮想象,也希望公司能多為工程師,特別是年輕工程師創造這樣的環境。 我相信只有越來越多的年輕工程師擁有這四個層面的能力,華為公司才能真正具有成為引領者的基礎。原文:《華為文摘》第十五輯 6 ^3 A' @8 V# y9 p' q
|