天天看點

華為IoT首席架構師王啟軍:全棧工程師“養成記”

在王啟軍的公衆号裡,有一篇《My Team》的文章,裡面記錄了早年他所帶團隊成長的心得。

這個被他稱為完美組合的團隊,并不是來自大廠名企,彼時王啟軍給不起高待遇,團隊核心成員中還有很多人是專科學曆。

但就是這樣一支團隊,建立了IaaS平台,搭建了私有雲,雲緩存,分布式檔案中心……甚至還有自己的開發架構,工作流平台,配置中心,而彼時,是在2013年前後。

王啟軍在文章裡寫到:

給不起高薪,就挑選潛力股,用成長來吸引人。

最後,王啟軍确實也兌現了承諾,團隊成員工作一年以上的,出去後薪酬基本都翻倍,并跳槽到國内知名網際網路公司的不在少數。

華為IoT首席架構師王啟軍:全棧工程師“養成記”

如今,王啟軍已成為華為雲IoT首席架構師,盡管“捉襟見肘”開不起高薪的煩惱不再,但他認為挑戰依舊,因為在雲計算時代,很多颠覆性的工作正在等待他去做突破與創新。

擁抱開源,要做颠覆性的雲

今天,全球正進入了一個開源的大時代。可以看到,目前全球軟體行業有兩個重要的趨勢:

(1)“軟體現正在吞噬一切”,每一家公司都正在變成一軟體公司;

(2)“開源也在吞噬一切”,越來越多的公司都在使用和擁抱開源軟體。

同樣,對于開源的關注,也始終是王啟軍工作重心中的一部分。據他介紹,目前華為雲很多産品線的目标都是希望做“颠覆性”的産品,而不是隻考慮跟競争對手持平。因為即便超越了對手,但是還是可能會輸給時代。是以華為雲的産品考慮必須長遠。

在雲的領域,根本的問題還是要做到成本足夠低廉,就像水電煤一樣。當雲産品的功能做到一定程度後,成本就會成為最大差別點。

對華為而言,雲伺服器基于相容ARM架構的鲲鵬來做,從底層開始自己做,這樣成本能控制住。但是,很多軟體是長在x86平台上,實作平台的遷移必須要依靠生态。

是以,華為雲未來要不斷成長,就需要把生态做好,同時還必須支援開源,把更多的産品開源出來,培養、催化、擁抱這個開源社群,這樣整個生态體系才能建立。一旦建立起來生态。

王啟軍說:

我相信華為雲對行業的颠覆性非常大

他認為,從商業的角度考慮,開源的産品與公有雲聯合,對客戶對華為都有好處。客戶用開源的東西,對客戶來說能節省很多工作量。尤其是很多小公司,自己沒有能力開發一個開源架構,或者開源的中間件,用開源的東西能加快開發進度,還可以讓系統比較穩定。

比如,華為雲會開源一個微服務務架構,這個微服務架構在華為内部用得比較成功,現在開源出來給外部去用,客戶就可以聯合華為公有雲和開源架構,基于微服務架構的應用就很容易上到華為雲上,華為雲上有很多中間件可以整合,讓客戶覺得非常合适。

王啟軍認為,不管是做開源架構還是用開源架構的人,都是巨大的生态。在這個生态裡面有很多商業思考,可以做很多事情,有很多想象空間。

軟體開發,一門妥協的藝術

當然,要真正做好基于開源的雲計算産品,其實也面臨技術、制度、文化三個方面的挑戰。

華為IoT首席架構師王啟軍:全棧工程師“養成記”

王啟軍說,過去華為做産品,開始就要規劃好。立項的時候對技術市場競争會分析得比較清晰明白,然後按照計劃去執行,執行過程中不會有太大的變動。産品立項到傳遞,會有比較長的周期,比如5G、6G的研發,都是要經過很多年的開發才能出産品。

但現在,華為公有雲會要求快速疊代,産品快速上線。在這樣大背景下,一個産品一年上線十次和一年上線一萬次,會有根本的差別。

首先,從流程制度看,過去,上線次數少,可以依靠嚴格的開發制度,測試制度和上線制度,制度對每個環節會卡得很嚴,以此來確定産品品質。

以測試流程為例,過去測試環節中,會有很多的測試人員,甚至上線的時候,一個人來負責操作,還會有另一個人來稽核監管。但是當一個産品一年有很多次上線後,依靠這種傳統的制度確定品質是不可行的。

因為頻繁的上線,再讓測試人員把全部功能都覆寫測試,在時間上不可行。這就要求有流水線的自動化檢查,自動化編譯驗證測試等等。是以要求送出的代碼也有更高的品質。從制度流程角度講,這跟原來方式完全不一樣。

其次,從文化上來講,在這種頻繁疊代快速上線的環境下,也要求公司内部更加透明,更加扁平化,組織結構不能過于複雜。還有就是要求開發人員對産品和技術有更全面的了解,用一種小團隊合作的方式來解決問題,而不是傳統方式靠組織的精細分工來開發産品。

以代碼的review為例,在新的文化背景下,開發人員會把請人review代碼當成自己的責任。會變成一種自主的工作模式。而不是因為代碼沒有review就上線,因為違背制度而受到懲罰。

從王啟軍的自身體驗來看,華為雲的開發模式更接近網際網路公司的開發模式,而跟華為傳統産品開發有較大差别。

做好雲産品的開發,關鍵還是要把握好妥協的藝術。

因為産品是快速疊代,頻繁上線。是以不能等到做到滿意才來釋出。軟體就是不斷改進的過程。很難一下子做到特别滿意的地步,基本上都是不滿意的狀态。假設所有的地方都滿意了,說明系統已經過度設計了,完全都滿意了說明系統成本非常高。比如說像可靠性、性能等各個方面都達到了高的要求,成本就非常高了。

他說:

軟體架構它也是妥協的過程,會跟需求、跟成本,跟研發,還有品質,各個方面不斷的權衡,去選擇其中比較重要的方面。

把重要的幾個方面做得比較好,其他幾個方面隻能妥協。第一就是考慮滿不滿足目前的要求,等以後需求變大了,或者是業務要求的比較多了,再去補齊短闆。比如說可靠性,從三個九到四個九,或者從四個九到五個九的時候,每前進一步,成本是指數級的上升。在這種情況下,滿意的标準其實需要根據階段去調整。

最後,從技術角度來講,王啟軍認為做好雲産品,技術上的挑戰并不是那麼大。大多數挑戰大家都差不多,某個部門解決不了,到公司層級就可以解決了;整個公司解決不了,尋求外部資源也能解決。

但是從團隊和文化層面,會遇到更多挑戰。在做這些事情的時候,不是說一個人想做就能做成的,需要跟團隊的文化和團隊的制度碰撞,去磨合。要把想法傳遞給所有的人,而且所有人都認同這個想法,這非常有挑戰。

從這個角度來說,王啟軍認為這不僅僅是華為的挑戰,很多公司都有很多改進的空間。大多數東西推行起來,遇到一些沒那麼滿意的地方,多多少少都是因為團隊,因為各種各樣的原因做了妥協。

是以,在這種情況下做開發,開發人員和所謂架構師的差別會越來越模糊,對開發人員的要求越來越高。

比如很多業務,是需要去看别人的代碼,大家有更多的交流。也要求自己的代碼要給别人去看,在這種交流的過程中,發現自己的代碼不夠好,會有一種羞恥感,形成這種文化氛圍後,自我激勵,主動學習就會成為必然。

全新時代,全棧工程師的養成

回顧過去多年的從業經曆,王啟軍認為,現在行業變化非常快,技術變化也很快。

過去一種架構用十幾年沒什麼變化,現在基本上不可能。經常是今天用這個架構,明天又得用另外一個架構。但現在不但架構多,而且變化還特别快。比如,微服務架構,每個公司都有很多自己私有的架構,開源的架構也能找到七八種。

再如,以前大家在建私有雲,現在公有雲會越來越多的使用。

公有雲的特點,就是應用跑在公有雲上,中間件和基礎設施這些,都交給雲去解決。跟傳統最大的差別,就是使用公有雲需要的所有基礎設施都是通過代碼的方式建構。

這樣,傳統做運維做測試的人會極限壓縮,這兩方面的人會越來越少。傳統上做一個應用,需要産品負責人啟動,産品經理開始計劃,接着是架構師做架構,然後開發人員開始開發,開發完成交給測試做測試,最後在由運維上線,這個流程會非常長。

這裡面會有很多決策,公司内會有很多角色來完成這些決策。但是現在使用公有雲,所有的基礎設施都通過雲來搞定,剩下的應用開發由開發者來搞定。

這時候開發者就得變成全棧工程師,一個人能幹很多事情,既能幹前端,又能幹後端,運維工作也能幹,甚至一些需求分解,架構也要由開發人員來做。這樣對開發人員得要求就會越來越高。從目前趨勢看,大廠對開發人員得要求越來越高,不會像以前那樣做非常細的分工。

面對這種挑戰,王啟軍建議,像應屆畢業生剛開始進入開發,在來之前就要做非常充足的準備。不像以前一個應屆畢業生到了開發崗再學。本來這個行業要求就很高,發展速度很快,更多優秀的人投入進來。很多開發人員入行就已經具備了很高的能力,各方面的技能已經很高了。

以前公司内會有很多教育訓練,還有外部的教育訓練。現在開發人員更多的靠自身成長,靠業務的壓力推動成長。

比如用微服務架構,就得自己研究微服務架構,用到資料庫要研究資料庫。另外還有很多業務,要求開發去看别人的代碼,别人也會看你的代碼,大家互相交流,這種交流的過程也是一種學習的過程。

現在網上能擷取的知識挺多,如果自身有動力想學習會非常容易。不管是書,還是部落格,還是公衆号,還有技術大會非常多,都是學習通道。如果有學習的想法,有驅動力,知識來源非常廣。不一定非得有一個專門階段性的教育訓練,更多的還是靠自己驅動去學習。

對于學習和提升,王啟軍認為,好奇心和學習能力最重要。不論之前懂了多少,會了多少,更重要得有一個持續學習的能力,解決問題的能力。

行業變化太快了,即便學到很多,也知道很多東西,過一年兩年很多東西就會落後,很多東西已經變化。現在全棧工程師工作範圍很廣,涉及的點特别多,是以一定要有好奇心,去解決這些問題,這樣才能發展得比較好。

不僅如此,全棧工程師需要考慮問題更全面,關注更寬的領域,而不是限制在眼前工作。原來架構師跟開發工程師是分開的,現在又要做開發,又要做架構,還要做測試,這就要求工程師涉及更多的交叉領域,要學會更全面更系統的思考。而不僅僅是隻考慮寫寫代碼。

王啟軍根據自身的經驗最後總結說:

全棧工程師必須保持專注

例如,生産環境遇到問題,故障沒有定位出來,就需要不斷的想,不斷的分析,去找這些問題。在這個過程中時間會過得非常快。這樣就不會感受太多的壓力,不會受外部幹擾。專注于問題解決,不會感覺到特别累特别失望。

但是,如果是一種被動的狀态,不管學習還是工作,一會做點這個,一會做點那個,時間沒有配置設定好,這樣就會感覺特别累。當一個工程師做的都是重要但是又不是特别緊急的事,這個時候效率會很高,績效也會很好,也就成了一個優秀的全棧工程師。

後記

王啟軍的公衆号,最新更新時間是2020年1月10日。在采訪中,他告訴我,未來還會繼續把最近做IoT,還有PaaS相關的想法和經驗,總結記錄下來,時機成熟時可能也會寫寫書。

而對即将于2020年2月11日-12日在深圳舉辦華為開發者大會2020(Cloud),王啟軍也希望有更多的開發人員來親自參加和體驗。

他強調說:

華為雲這兩年發展非常快,華為雲今年更多的是一種挑戰者的身份,做的很多東西跟開發者更貼近,想的會比較多,比較靈活,思維會比較活躍,會解釋為什麼會做成這樣,會有更多背後的思考。我相信,大家來參加這樣一個大會收獲會比較多,會遇到跟你的想法比較接近的人,然後大家一起碰撞,由此催生出更有創意的火花。

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀