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

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

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

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

王啓軍在文章裏寫到:

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

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

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

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

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

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

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

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

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

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

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

王啓軍說:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

王啓軍說:

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

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

他說:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

王啓軍說:

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

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

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

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

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

全棧工程師必須保持專注

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

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

後記

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

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

他強調說:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章