編者按:
最近看到一篇文章,發(fā)文時間其實是4年前,是華為內(nèi)部員工闡述了當時華為研發(fā)組織、流程等存在的問題。當時此文引起了任正非、丁耘(華為常務(wù)董事、運營商BG總裁)的重視,他們也對此作出了回應(yīng)。
當時,任正非,特地以此簽發(fā)郵件:在技術(shù)工作的客氣是毒品,直面的批評、爭論才是良藥。
4年后的今天如何呢?讓我們先來看看原文作者泥瓦客發(fā)現(xiàn)了華為研發(fā)存在哪些問題。
華為到該炸掉研發(fā)金字塔的時候了——關(guān)于我司軟件研發(fā)效率和質(zhì)量提升的思考
近年,在從CT到ICT的轉(zhuǎn)型的過程中,華為公司的研發(fā)如何能解放和發(fā)展生產(chǎn)力,大幅提升研發(fā)效率,是我們未來能否立足于強者之林的一個關(guān)鍵。
筆者以前曾在美國硅谷工作,和世界上最頂尖的軟件工程師和計算機領(lǐng)域的牛人一起共事過,也先后帶領(lǐng)過不同的團隊交付了一些業(yè)界領(lǐng)先的企業(yè)級軟件產(chǎn)品。
幾年前進入華為,和幾個做企業(yè)業(yè)務(wù)的產(chǎn)品線有些合作,在此過程中感到華為公司在軟件產(chǎn)業(yè)的差距還比較大;和中國領(lǐng)先的互聯(lián)網(wǎng)產(chǎn)品相比,在易用性、貼近用戶和產(chǎn)品快速迭代等方面也落后不少。
我們在軟件研發(fā)領(lǐng)域的確存在不少問題,這些問題導(dǎo)致我們的IT軟件產(chǎn)品質(zhì)量比較低下、開發(fā)效率低、產(chǎn)品交付周期漫長,很是讓人痛心。
因此筆者寫下了這篇文章,希望能拋磚引玉,供大家思考。
一、組織
1、架構(gòu)設(shè)計SE與開發(fā)分離,一些架構(gòu)師與專家基本不懂開發(fā)
一般各個產(chǎn)品線都會設(shè)有架構(gòu)設(shè)計部,主要成員也會以各個層次的SE為主。這些SE也都曾是程序員,但通常因為長期脫離開發(fā)部門,主要精力都放在會議、膠片和文檔的編寫上,以致編程的能力基本丟失,新技術(shù)學(xué)習(xí)的機會也有限。例如一個移動開發(fā)的SE,自己對怎么在Android、iOS上進行開發(fā)一點兒都不清楚。在這樣的基礎(chǔ)上,做好真正的架構(gòu)簡直是空談。在硅谷成功的公司里,好的架構(gòu)設(shè)計師一般是融入在產(chǎn)品團隊中的,隨時都能上手編程,而且編程能力非常強。
2、開發(fā)者多為低級別,比較難有技術(shù)積累
一般基層程序員在工作幾年后,有能力的都被提升到PL、PM、SE等職位,員工也都想著被提拔,漸漸成為管理者。大家覺得,光做開發(fā)沒有職業(yè)前途,永遠都是在金字塔的底層。而在硅谷的公司,說話比較有分量、收入相對較高的有很多是在各層級中的技術(shù)佼佼者,他們備受尊重,干得也開心,不少人根本不愿意轉(zhuǎn)做管理者。
編程其實是一門藝術(shù),熱愛和用心是非常重要的,也相應(yīng)的容易出成績。這就是為什么在計算機領(lǐng)域,如果做到頂尖程序員,一個人頂一百個很正常。如果程序員覺得沒有前途,不思進取,而資質(zhì)較好的很快又被提拔為管理者,那我們的軟件開發(fā)將很難有技術(shù)和人才的積累。
3、多頭管理
我司負責(zé)產(chǎn)品開發(fā)的部門有PDT、PDU等,相應(yīng)的擁有PDT經(jīng)理、PDU經(jīng)理、架設(shè)部經(jīng)理和SE、Project Manager、PO經(jīng)理、RDPDT經(jīng)理、Line Manager、Project Leader等多個角色。這種組織結(jié)構(gòu)清晰地定義了每個Leader的角色,確保一個大的產(chǎn)品開發(fā)周期和質(zhì)量有保證,同時保證開發(fā)的人力得到最合理的應(yīng)用。
但它帶來的問題也顯而易見,就是各個角色在產(chǎn)品開發(fā)過程中有不同的想法和意見,可能出現(xiàn)多頭指揮,讓開發(fā)人員無所適從,溝通的成本也非常大。同時,這種復(fù)雜的管理結(jié)構(gòu)對需要快速迭代的IT軟件開發(fā)也會帶來很大制約。大家看看微信的起家史,應(yīng)該能感覺到,對于一些相對獨立的、需要快速迭代的IT軟件產(chǎn)品,往往在一個比較強的(產(chǎn)品)經(jīng)理帶領(lǐng)下的一個扁平化的團隊效率會高很多。
4、溝通成本高
由于組織復(fù)雜,中間層較多,各種各樣的任務(wù)從上面下來,落實的方法就是各種各樣的會議,所以現(xiàn)在很多研發(fā)員工的不少時間都被各種各樣的規(guī)劃、研討、問題回溯、客戶支持等會議占用。員工笑稱:白天是用來開會的,晚上加班才有時間編程序。針對于不同的組織和項目,能盡快找出相應(yīng)的溝通節(jié)點并能有效地減少這些溝通節(jié)點,是一個項目和部門領(lǐng)導(dǎo)需要經(jīng)常思考的問題。
二、流程
1、IPD流程不太適合需要快速迭代的軟件
公司引入的IPD產(chǎn)品開發(fā)交付流程給公司帶來了巨大的收益。但時代在發(fā)展,技術(shù)在演進,IPD流程更適合偏硬件的產(chǎn)品開發(fā),為了保障產(chǎn)品質(zhì)量,開發(fā)交付的周期較為漫長。從基層員工的角度,IPD流程節(jié)點的很多環(huán)節(jié),如為完成CLINT減少Warning的數(shù)字、DTS值減少等僵化的指標,實際上反而可能會加大產(chǎn)品的風(fēng)險,降低產(chǎn)品質(zhì)量。
2、安全紅線耗費資源巨大
安全紅線的目的是防止產(chǎn)品出現(xiàn)安全漏洞,初衷是好的,但執(zhí)行起來相對比較僵化,效率也低。試想一個互聯(lián)網(wǎng)產(chǎn)品為了過安全紅線一個版本等一兩個月,根本無法生存。
建議參照一些先進公司的方法,把安全意識教育和SDLC(安全開發(fā)生命周期)融入到員工日常開發(fā)習(xí)慣中,在開發(fā)的同時進行測試和督促整改,對于一些紅線達標比較好的部門,可以適當放松以加快交付,檢查出問題,相應(yīng)的問責(zé)機制要嚴格。把安全意識充分融入到開發(fā)者的血液中,讓安全紅線檢查“形同虛設(shè)”。
三、環(huán)境
1、沒有時間抬頭看路
開發(fā)員工長期在上述流程、組織問題和客戶支持的壓力下加班加點,幾乎沒有時間“抬頭看路”,只會用一些比較老舊的技術(shù),也不太會站在巨人的肩膀上前進,走了不少彎路,消耗了更多的資源。
互聯(lián)網(wǎng)時代,MOOC提供了大量實時、實用、先進的網(wǎng)上課程(包括免費的和收費的),如Coursera、Udemy、Pluralsight、Stanford Online、edX、YouTube相應(yīng)的Channel等,想要學(xué)的課程幾乎什么都有。
現(xiàn)在的計算機技術(shù)日新月異,新的思想、方法、工具等層出不窮,例如Java語言是2000年左右在企業(yè)軟件領(lǐng)域崛起的,幾乎成為很多平臺、服務(wù)端軟件的必選,但隨著大規(guī)模分布式架構(gòu)、云計算的興起,它的短板,如內(nèi)存管理/GC不可控性、多線程或是異步對IO的控制效率,過度依賴較為重載的OOP等問題,如果使用不當很容易造成災(zāi)難性問題。Google內(nèi)部漸漸把它們有些后臺軟件都遷移到了他們自己發(fā)明的更為先進的Go語言環(huán)境下。Dropbox更是兩年前開始使用了比Go還先進的Rust語言,無縫遷移了90%以上的云存儲平臺。試問,我司有幾個人用過甚至是聽說過這些語言?我們的研發(fā)員工如果不去不斷地提升,怎么可能趕上時代的步伐?怎么能開發(fā)出質(zhì)量好的產(chǎn)品?
2、技術(shù)任職資格效果不佳,傳幫帶困難
理論上,技術(shù)任職資格是用來給搞技術(shù)的人提供晉升通道的。但實際應(yīng)用上,雖然有破格提拔機制,總體上還是按資排輩,評委也大多是由有較高級別技術(shù)任職資格,但對現(xiàn)在技術(shù)并不太了解的管理者擔(dān)當。
同時,任職從申請、技能鑒定考試到做答辯膠片、答辯,消耗了員工不少時間和精力。硅谷的公司一般在這方面比較靈活,技術(shù)通道由360 Review和與其工作密切相關(guān)的主管直接評價、申請和授予,有些員工在28-33歲左右已經(jīng)有了非常高的技術(shù)職級和地位。
因為技術(shù)晉升通道不順暢,能力較強的員工漸漸離開了開發(fā)崗位,較多時間沉浸在文檔、膠片和會議中,新來的年輕員工過幾年又在走同一個循環(huán)。是否可以徹底打通技術(shù)升值通道,鼓勵有能力的人帶新人,同時完善獎勵機制,在及時激勵和長期激勵上下功夫,讓研發(fā)人員看到技術(shù)發(fā)展空間,樂于編碼,留住人才。
四、工具
1、研發(fā)辦公環(huán)境
在硅谷先進的軟件公司里,MacBook Pro/Air是標準配置,方便攜帶,隨時隨地編程。很多軟件及移動開發(fā)調(diào)試都在家里、公司、食堂隨時可以進行,包括編程、編譯、Review和提交;數(shù)據(jù)庫、各種Library、工具和Docker等都可以在本地的OSX/Linux環(huán)境下運行。需要的話,也隨時可以跟公司內(nèi)部服務(wù)器通過命令行互聯(lián),進行文件、代碼的傳輸和測試。
筆者在硅谷工作時認識一個美國小伙子,他基本都是深夜在家里寫代碼,白天幾乎看不到人,但效率和質(zhì)量都很高。而我們的大部分研發(fā)人員,都被局限在公司內(nèi)部擁擠嘈雜的敏捷島,用著桌面云進行著低效開發(fā)。
2、代碼庫管理、Review、Checkin和Bug Tracking工具
基于Web/Git的Review和Checkin的相應(yīng)工具差距非常大。通過源程序的Review審批和Checkin的機制,可以很快傳遞能力和互相學(xué)習(xí),提升代碼質(zhì)量。同時,在任何一個時間點,任何一個高級工程師或是領(lǐng)導(dǎo)都可以通過這些工具來了解員工真正在代碼上的貢獻和價值,審查進度和版本分支,進度和質(zhì)量也好把握。以筆者的經(jīng)驗,這是最好的傳遞技能的工具之一,往往有一個能人,很快就能把一批年輕人的能力帶起來。
我司一般用的是內(nèi)部開發(fā)的DTS bug tracking的工具,比較死板,總體和上述提到的最新的Git源程序管理工具、Review工具、自動化和Nightly Build、敏捷管理工具無法無縫地連接在一起。
3、知識資源的獲取
由于公司內(nèi)網(wǎng)Proxy權(quán)限問題和受限于大家英語水平的原因,大部分員工還是習(xí)慣于使用百度進行程序、庫、方法和問題的搜索。但由于共享性差,同時技術(shù)水平與美國相差比較大,所有能在百度上找到的好的資源非常有限,質(zhì)量也較差。美國軟件開發(fā)人員已經(jīng)把諸如StackOverflow、GitHub和Google作為學(xué)習(xí)和資源分享不可分割的一部分。
一石激起千層浪。上述文章,直接引起了大量華為內(nèi)部爭論,摘錄如下:
1.很多研發(fā)的同學(xué)都抱怨過,聰明的人都去做管理了。根源還是研發(fā)團隊的作戰(zhàn)方式。一個項目需要那么多人,必然需要有管理,就有所謂的管理者,管的人越多,管理者做技術(shù)的時間越少。要轉(zhuǎn)變開發(fā)的模式,班長的戰(zhàn)爭。如果都是一個個的小團隊,就不需要那么多的所謂的技術(shù)管理者了。
2.這些問題其實5,6年前我們內(nèi)部早已經(jīng)發(fā)現(xiàn),如今從一個外界來的專家身上也提出了。因為以前我們的人員、組織快速膨脹,其中最難的問題:骨干員工都提拔去當官、當專家、專家不碰代碼的情況確實存在。隨著這兩年我們的人員、組織逐漸穩(wěn)定、任職上的牽引,讓骨干員工深耕一線開發(fā)崗位,核心骨干負責(zé)架構(gòu)代碼、核心模塊代碼、產(chǎn)品的設(shè)計正在成為現(xiàn)實,只要堅持下去,研發(fā)扁平化組織我們也會實現(xiàn)。
這是由華為公司兩大基因決定的!
基因一: 基于不信任的管理
假定了一個團隊或者一個員工個體,沒有辦法自動地按要求完成任務(wù),一定要有外力的干預(yù)和指導(dǎo),才能保證航行在正確的軌道上。不信任的假定,造成了領(lǐng)導(dǎo)很焦慮,員工被干擾。
基因二:組織復(fù)雜,各自為政
華為缺少扁平化管理,層級多,通道多。這樣復(fù)雜的組織機構(gòu),造成了信息溝通對齊非常困難,每個組織機構(gòu)又有自己的考評,都要考慮自己的團隊建設(shè)和發(fā)展,價值呈現(xiàn)。人都有趨利的本性,必然會希望更多堅持對自己發(fā)展和價值有利的,而放棄那種不太出彩又要大體力投入的。
其實話說回來,說難聽點,這叫多頭管理多通道管理,說好聽一點,這不就是管理上的民主嗎?這兩個基因,在華為這種大公司,不太可能改變掉,局部試點是有可能的,比如搞搞精英團隊,或者在某些項目上試點扁平化,都是有可能的,至于全面改變,不現(xiàn)實。而且真的改成那個樣子,還指不定出什么更大簍子。
3.在公司做研發(fā)8年多了,以前也心態(tài)穩(wěn)定,相信板凳要坐十年冷,以學(xué)徒的態(tài)度和品質(zhì)去面對自己承擔(dān)的工作任務(wù),對業(yè)務(wù)轉(zhuǎn)換和工作安排基本上沒有抱怨和懷疑。可是這兩三年來,我越來越不自信了。看見版本經(jīng)理滿口臟話地安排工作的時候,我在想研發(fā)人員的地位和自尊哪里去了?研發(fā)汪的待遇就是這樣嗎?如果一個研發(fā)人員連尊嚴和榮譽感都不能感知的話,那點鈔票能代表一切嗎?能夠做出代表著工匠精神的產(chǎn)品嗎?
4.之前我覺得公司是硬件+技術(shù)型公司的代表,是挺立于新世紀技術(shù)浪潮的旗艦,但現(xiàn)在我覺得公司和這個目標漸行漸遠。
5.寫的很真實到位,尤其是LM/PL不編碼、SE不會編碼等現(xiàn)象還是比較普遍的。組織分散、會議多、協(xié)調(diào)多也是頑疾。這兩年研發(fā)顯率提升在工程、方法上進步較多。在怎么讓編碼人員能夠長期在編碼崗位上發(fā)展,是要好好研究解決。
6.導(dǎo)致研發(fā)質(zhì)量不高的原因還有一條:過量的外包開發(fā)人員,通常是一個PL帶著100人的團隊,95個都是外包的。完成任務(wù)和用心做事兒的差別還是很大的,PL也根本管不過來,代碼質(zhì)量自然不高。
7.技術(shù)專家在華為非常沒地位,績效/股票/分紅/任職等方面都什么話語權(quán),一直干技術(shù)會非常擔(dān)心失業(yè),因為很多領(lǐng)導(dǎo)認為,一個技術(shù)老專家干的活,找個新手讓技術(shù)老專家?guī)б欢螘r間就可以代替老專家了,技術(shù)老專家成本高,常常會成為降成本很不錯的選擇,華為這種氛圍,真是讓想專心搞技術(shù)的兄弟心寒。
8.說一個幾天前來我司某基地出差來的見聞:鄰桌某產(chǎn)品經(jīng)理在和項目管理人員espace語音,話間大意:我們組那個A童鞋,能力可以說是最強的,但他有個很嚴重的問題,他不會展示自己,他做的很多高質(zhì)量的工作,但是無法很好的向領(lǐng)導(dǎo)展示。所以他的這個上半年績效不能給太高。。。坐在旁邊“無意”聽到談話的我一臉懵逼,內(nèi)心一緊,又是個悲催的汪啊。
9.我就沒搞明白,華為對自己的定位到底是軟件公司還是硬件公司?向互聯(lián)網(wǎng)看齊,你客戶跟互聯(lián)網(wǎng)的是一樣的?你的客戶能讓你低成本試錯嗎,你的客戶可以讓你遠程推送補丁嗎,你的客戶允許你的產(chǎn)品產(chǎn)品閃退嗎?現(xiàn)實是,一個bug,華為的芯片得重新流片;一個bug,華為的基站得退服,客戶得跟政府解釋;互聯(lián)網(wǎng)追求快,華為追求穩(wěn)。
10.作為一個以產(chǎn)品/項目交付為主的公司,解決方案架構(gòu)師的作用是什么?主要是通過架構(gòu)保持整個組織對于解決方案認知的一致,這是為什么很多架構(gòu)師/SE花大量時間在架構(gòu)圖/PPT上的原因,這也是保證整個組織、很多項目不亂的一個很重要的因素(我沒有說唯一因素,沒有否定coder的作用,顯然再好的架構(gòu)也需要coder去實現(xiàn)),這跟做產(chǎn)品運營的互聯(lián)網(wǎng)公司,就一個版本持續(xù)不斷優(yōu)化,業(yè)務(wù)上線速度優(yōu)先是不一樣的,比如:大家都知道淘寶的架構(gòu)從一開始2000美金買的簡單購物網(wǎng)站到現(xiàn)在的超大規(guī)模網(wǎng)站,10年之間架構(gòu)推倒重來了5次,包括其中請sun的Java專家重寫了一遍系統(tǒng),這在華為是不可想象的,在華為首先要講清楚WHY,工程商人,投入產(chǎn)出先講清楚,至少要保障邏輯上成功,這就是為什么投入大量人力在前端,也是IPD的重要作用之一。
今天,我們請到方老師——華為公司原無線產(chǎn)品線創(chuàng)始團隊成員、能源產(chǎn)品線IPMT核心成員(首席技術(shù)官)、華為公司管理藍血十杰獲獎?wù)摺獙Υ艘舶l(fā)表了一些自己的看法:
作者提的這些問題,有對IPD理解偏差的因素,IPD是一個研發(fā)投資管理框架,他談的內(nèi)容是IPD流程框架下的軟件開發(fā)流程的弊端。不過,指出的問題和給出的建議確實很到位。
因為客戶需求的不確定,以及競爭的愈加激烈,產(chǎn)品交付周期越來越短,軟件開發(fā)模式確實需要從傳統(tǒng)的瀑布模型轉(zhuǎn)型為敏捷迭代模型。敏捷迭代不僅有利于快速交付,也使質(zhì)量盡快穩(wěn)定。
第二個是研發(fā)組織陣型,組織結(jié)構(gòu)一定要匹配業(yè)務(wù)架構(gòu),組織運作一定要順應(yīng)業(yè)務(wù)特征。敏捷開發(fā)后,最佳做法是大平臺下的精兵團隊。如果還是采用傳統(tǒng)的多層級結(jié)構(gòu),在開發(fā)效率、響應(yīng)速度上就會落后于時代。
就是說,研發(fā)管理不能僵化,拿過去的成功應(yīng)對新的局面;不能照搬,而要分析自身面臨的環(huán)境和態(tài)勢。要與時俱進,一切以是否有利于研發(fā)質(zhì)量、成本和效率為準繩。
而如今,已經(jīng)4年過去了,華為是一個學(xué)習(xí)型組織,從來沒有停止變革、優(yōu)化的步伐,不斷在學(xué)習(xí)業(yè)界最佳實踐。
目前在云業(yè)務(wù)、消費者業(yè)務(wù)軟件領(lǐng)域,已經(jīng)廣泛導(dǎo)入了敏捷開發(fā)、全功能團隊,其開發(fā)效率、質(zhì)量和交付周期已經(jīng)跟上了業(yè)界領(lǐng)先水平。
在ICT領(lǐng)域,因為嵌入式軟件的獨特性,會有所不同,從2018年開始投入20億美元,全面深化軟件工程,對存量軟件和增量軟件進行安全固化和質(zhì)量升級,確保ICT軟件質(zhì)量支撐網(wǎng)絡(luò)設(shè)備的安全性、健壯性。
【相關(guān)課程】
·從技術(shù)走向管理——研發(fā)經(jīng)理的領(lǐng)導(dǎo)力與執(zhí)行力
·如何打造高績效的研發(fā)團隊——研發(fā)人員選、育、用、留之道