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


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

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

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

王啟軍在文章里寫到:

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

最后,王啟軍確實也兌現了承諾,團隊成員工作一年以上的,出去后薪酬基本都翻倍,並跳槽到國內知名互聯網公司的不在少數。

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

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

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

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

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

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

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

對華為而言,雲服務器基於兼容ARM架構的鯤鵬來做,從底層開始自己做,這樣成本能控制住。但是,很多軟件是長在x86平台上,實現平台的遷移必須要依靠生態。

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

王啟軍說:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

王啟軍說:

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

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

他說:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

王啟軍說:

現在網上能獲取的知識挺多,如果自身有動力想學習會非常容易。不管是書,還是博客,還是公眾號,還有技術大會非常多,都是學習通道。如果有學習的想法,有驅動力,知識來源非常廣。不一定非得有一個專門階段性的培訓,更多的還是靠自己驅動去學習。

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

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

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

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

全棧工程師必須保持專注

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

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

后記

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

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

他強調說:

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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM