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