如何用研發效能搞垮一個團隊

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"談到研發效能,我們有着自己的獨到見解。我們看到的現象是:**只要努力搞,沒有折騰不垮的團隊。**雖然有很多大廠研發效能做的還不錯,成爲了大家膜拜的對象,但是我們也看到很多“內卷”現象的發生。經歷了很多故事,我們更能談談自己的理解和感悟。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"研發效能是目前互聯網企業和傳統軟件企業都高度關注的領域,互聯網大廠希望通過“研發效能”實現持續的研發能力提升以應對日趨複雜的產品開發;腰部廠商則希望通過“研發效能”實現彎道超車,充分發揮後來者居上的優勢;更多中小企業看到國內互聯網大廠不約而同地在這個領域重點投入,紛紛也是摩拳擦掌準備在效能領域發力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一夜之間,似乎只有推進了研發效能,才能提升研發團隊的效率,才能讓自己在和友商的比拼中不至於輸在起跑線上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那麼現在企業的研發效能實踐到底爲企業帶來了多大的優勢,又幫企業解決了哪些問題呢?那些推行研發效能的企業現在的狀態怎麼樣?研效問題到底解決了嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"別急,這些問題其實大多都還沒有解決,而且有些問題可能還變得更糟糕了。畢竟研發效能的實施沒有捷徑,需要摸着石頭過河,肯定不會能像電影裏面演得那樣註定會有皆大歡喜的結局。經歷了風雨,不一定能看見彩虹,更有可能會得重感冒。**研發效能問題今天解決不了,不要着急,因爲明天同樣也解決不了。**所以就讓我們“放心大膽“地看看研發效能到底是如何搞垮一個團隊的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要看懂研發效能如何搞垮一個團隊,我們首先需要對研發效能有一個全局的認識,需要先從正向的角度來理解研發效能。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"到底什麼是研發效能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"和敏捷的概念類似,到底什麼是研發效能很難精確定義。其實很多複雜概念也不是定義出來的,而是逐步演化出來的,是先有現象再找到合適的表述。其實,效率和效能也從來都不是軟件工程的專有名詞,縱觀人類發展史,就是生產力和生產效率不斷提升的發展篇章,到了數字化時代,軟件研發效能的重要性被凸顯了出來。如果要用一句話來總結研發效能的話,我們會用“更高效、更高質量、更可靠、可持續地交付更優的業務價值”來總結。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/f7\/1e\/f73cfc3dac9a2f27b0485cabc70b611e.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖1:研發效能的“第一性原理”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"解釋一下其中幾個關鍵概念:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更高效:價值的流動過程必須高效順暢,阻力越小越好。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更高質量:如果質量不行,流動越快,死的也會越快。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更可靠:安全性和合規性要保障好。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可持續:輸出不能時斷時續,小步快跑纔是正道,不要憋大招。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更優的業務價值:這是從需求層面來說的,你的交付物是不是真正解決了用戶的本質問題。比如:“女生減肥不是本質問題,女生愛美才是”。可以體會一下。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這個概念的引導下,我們引出持續開發,持續集成,持續測試,持續交付和持續運維的理念,它們是研發效能落地的必要實踐。與此同時,我們還需要從流動速度,長期質量,客戶價值以及數據驅動四個維度來對研發效能進行有效的度量。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲什麼大廠都開始搞研發效能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里的雲效、騰訊雲的CODING、百度的工程效能白皮書都是國內研發效能領域的標杆,可是你有沒有想過,爲什麼最近幾年各大行業龍頭企業都紛紛開始在研發效能領域發力,而且步調如此一致,我們認爲背後的原因有以下這麼三點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b0\/b0441d26add547e252ab2ebcc446c578.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖2:組織層面的“穀倉困局”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"很多企業存在大量重複造輪子"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就像“中臺“概念一樣,現在很多大企業的產品線非常廣,其中存在大量重複的輪子,如果我們關注業務上的重複輪子,那麼就是業務中臺;如果我們關注數據建設上的重複輪子,那麼就是數據中臺;如果我們關注研發效能建設上的重複輪子,那就是研效平臺,其實研效平臺在某種程度上也可以稱之爲”研發效能中臺“,其目標是實現企業級跨產品跨項目的研發能力複用,避免原來每條產品線都在做研發效能所必須的”0到1“,沒人有精力去關注更有價值的”1到n“。現代化的研效平臺會統一來打造組織級別通用研發能力的最佳實踐平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"toC產品已經趨向飽和"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從商業視角來看,現在toC產品已經趨向飽和,過去大量閒置時間等待被APP填滿的紅利時代已經一去不復返了,以前業務發展極快,那麼用燒錢的方式(粗放式研發,人海戰術)換取更快的市場佔有率達到贏家通喫是最佳選擇,那個時代關心的是軟件產品輸出,研發的效率都可以用錢填上。而現在toC已經逐漸走向紅海,同時研發的規模也比以往任何時候都要大,是時候要勒緊褲腰帶過日子了,當開源(開源節流中的開源)遇到瓶頸了,節流就應該發揮作用。這個節流就是研發效能的提升,同樣的資源,同樣的時間來獲得更多的產出。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"部分企業存在“穀倉困局”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從組織架構層面看,很多企業都存在“穀倉困局”(圖2),研發各個環節內部可能已經做了優化,但是跨環節的協作可能就會有大量的流轉與溝通成本,從而影響全局效率。基於流程優化,打破各個環節看不見的牆,去除不必要的等待,提升價值流動速度正是研發效能在流程優化層面試圖解決的一大類問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"研發效能真的能夠提高嗎"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"既然如此重要,那接下來的問題是研發效能是否真的能提高?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很不幸,我們的觀點比較悲觀。我們認爲研發效能的絕對值隨着以下因素的增長必然會變得越來越差,就像我(聲明一下,這裏沒有張樂老師)的頭髮一樣,隨着時間的推移必然會越來越少一樣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件架構本身的複雜度提升(微服務,服務網格等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件規模的不斷增長(集羣規模,數據規模等)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"研發團隊人員規模不斷擴大引發溝通協作難度增長"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,"},{"type":"text","marks":[{"type":"strong"}],"text":"我們能做的不是提升研發效能的絕對值,而是儘可能減緩研發效能惡化的程度,使其下降的不至於太快,努力保持現狀就是成功。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/15\/15d2291d2b808b080ccdd6fd6cd1aacf.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖3:研發效能的鴻溝"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"減緩研發效能惡化我們能幹啥"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"看清了本質後,關於如何減緩研發效能的惡化,我們能做點什麼呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以說研發效能的涉獵面是很廣的,軟件研發的每個階段都有研發效能需要關注的問題,騰訊提出的“研發效能雙流模型”可以說很好的詮釋了這一概念。雙流模型從軟件研發的各個階段提出了研發效能提升的各種工程實踐,並且倡導需求價值流和研發工程流的自動聯動。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/91\/9177aa071109f12d9d4d5d62930d1d71.webp","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖4 研發效能的雙流模型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏我們列舉一些實踐給大家拋磚引玉一下,下期的文章我會更系統地來說明其中的最佳實踐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以通過All-in-one的開發環境降低每位開發人員開發環境準備的時間成本,同時又能保證開發環境的一致性。更高級的玩法是使用雲端集成開發環境IDE,實現只要有瀏覽器就能改代碼,這一領域國內典型的代表就是騰訊雲CODING旗下的Cloud Studio以及Github目前處於beta測試階段的CodeSpaces。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以藉助基於AI的代碼提示插件,大幅度提升IDE中代碼的開發效率。輸入一段相同的代碼,不借助AI代碼提示插件,需要敲擊鍵盤200次,啓用插件可能只需要50次鍵盤敲擊,這樣可以更容易讓開發工程師進入“心流“狀態,實現”人碼合一“。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"代碼的靜態檢查沒有必要等到代碼遞交後由CI中的Sonar流程來發起,那個時候發現問題再修復爲時已晚,完全可以通過Sonar Lint插件結合IDE實時發起本地的代碼檢查,有問題直接在IDE中提示,直接修復,這樣開發工程師會更願意修復問題,因爲成本更低,也不會引起修復後的再次發版。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"單元測試比較耗費時間,可以藉助EvoSuite之類的工具降低單元測試的開發工作量。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於規模較大的項目,每次修改後編譯時間比較長。可以採用增量編譯,甚至是分佈式編譯(Distcc和CCache)提升效率,對於Maven項目還可以通過緩存pom依賴樹進一步降低編譯時間。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前端開發可以藉助JRebel和Nodemon之類的工具使前端開發預覽的體驗更流暢,實現前端代碼的“所見即所得”,避免重複的編譯、打包、部署和重啓步驟,以此提高開發過程的流暢度。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"選擇適合項目的代碼分支策略對提升效率也大有幫助。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"構建高度自動化的CI和CD流水線將大幅提升價值的流轉速率。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"選擇合適的發佈策略也會對效能和風險之間的平衡起到積極的作用。比如架構相對簡單,但是集羣規模龐大,優選金絲雀,如果架構比較複雜,但是集羣規模不是太大,可能藍綠髮布更佔優勢。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"引入DevSecOps與DevPerfOps實踐,使安全和性能不再侷限在測試領域,而是形成體系化的全局工程能力,讓安全測試成爲安全工程,性能測試成爲性能工程。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"..."}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"研發效能的“羅生門”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"好了,理解了研發效能的正面觀點後,我們再回來看看研發效能在實際落地過程中又是一番什麼樣的景象。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以說理想很豐滿,但是現實很骨感,下面就我一起看看國內研發效能的各種亂象。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"迷信單點局部能力,忽略全局優化和拉通的重要性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"研發效能的單點能力其實都不缺,各個領域都有很多不錯的垂直能力工具,但是把各個單點能力橫向集成與拉通,能夠從一站式全流程的維度設計和規劃的研發效能成熟平臺還是鳳毛麟角。現在國內很多在研效領域有投入的公司很多其實還在建設,甚至是重複建設單點能力的研效工具,這個思路在初期可行,但是單點改進的效果會隨着時間收益遞減,企業往往缺少從更高視角對研發效能進行整體規劃的能力。很多時候局部優化並不能帶來全局優化,有時候還會是全局惡化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"具有普適性的通用研發效能工具其實沒有專屬工具來的好用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"既然打造了研發工具,那就需要到業務部門進行推廣,讓這些研效工具能夠被業務部門使用起來。其實,很多比較大的業務團隊在CI\/CD、測試與運維領域都有自己的人力投入,也開發和維護了不少能夠切實滿足當下業務的研發工具體系。此時要把新打造的研效工具來替換業務部門原來的工具,肯定會遇到很強的阻力。除非新的工具能夠比老工具好10倍,用戶纔可能有意願替換,但實際情況是新打造的工具爲了考慮普適性很有可能還沒有原來的工具好,再加上工具替換的學習成本,所以除非是管理層強壓,否則推廣成功的概率微乎其微。即使是管理層強壓,實際的執行也會大打折扣,接入但不實際使用的情況不在少數。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"用“僞”工程實踐和“面子工程”來濫竽充數"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你去比較國內外研發效能工程實踐的差距,你會發現國內公司和硅谷公司的差距還是相當明顯的。但是當你逐項(比如單元測試,靜態代碼掃描,編譯加速等)比較雙方開展的具體工程實踐時,你會驚訝地發現從實踐條目的數量來說,國內公司的一點都不亞於硅谷公司,在某些領域甚至有過之而不及。那爲什麼這個差距還會如此明顯呢?我們認爲這其中最關鍵的點在於,國內的很多工程實踐是爲了做而做,爲的是“政治上的正確”,而不是從本質上認可這一工程實踐的實際價值。這裏比較典型的例子就是代碼評審和單元測試。雖然很多國內互聯網大廠都在推進代碼評審和單元測試的落地,但是在實際過程中往往都走偏了。代碼評審變成了一個流程,而實際的評審質量和效果無人問津,評審人的評審也不算工作量,也不擔任何責任,這樣的代碼評審能有什麼效果,結果可想而知。單元測試也淪爲一種口號,都說要貫徹單測,但是在計劃排期的時候壓根沒有給單測留任何的時間和人力資源,可想而知這樣的單測是否能成功開展。所以,國內公司缺的不是工程實踐的多少,而是工程實踐執行的深度。不要用“僞”工程實踐和“面子工程”來濫竽充數。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"忽略研發效能工具體系的長尾效應"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"再回到研效工具建設的話題上,很多時候管理團隊希望能夠打造一套一站式普遍適用的研發效能平臺,希望公司內大部分業務都能順利接入,這和想法的確非常好,但是不可否認的,研效平臺和工具往往具有非標準的長尾效應,我們很難打造一套統一的研效解決方案來應對所有的業務研發需求,各種業務研發流程的特殊性是不容忽視的。退一萬步說,即使我們通過高度可配置化的流程引擎實現了統一研效解決方案,那麼這樣的系統會因爲過於靈活,使用路徑過多而易用性變得很差。這兩者的矛盾是很難調和的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"盲目跟風"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"再來看看一些中小型研發團隊,他們看到國內大廠在研效領域不約而同的重兵投入,所以也會跟風。他們往往試圖通過引進大廠工具和大廠人才來作爲研效的突破口,但實際的效果可能差強人意。大廠的研效工具體系固然有其先進性,但是是否能夠適配你的研發規模和流程是有待商榷的,同樣的藥給大象喫可以治病,而給你喫可能直接喪命。很多時候研效工具應該被視爲起點,而不是終點,就像你買了一輛跑車,你依舊不能成爲賽車手。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"迷信外部專家"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"引入大廠專家其實也是類似的邏輯,我常常會被問及這樣的問題:“你之前主導的研效提升項目都獲得了成功,如果請你過來,多久能搞定”?這其實是一個無解的問題。一定程度上,投入大,週期就會短,但是,實施週期不會因爲投入無限大而無限變短。我可以幫你避開很多曾經踩過的坑,儘量少走彎路,犯過的錯誤不再次犯,但是,適合自己的路子還是要靠自己走出來,拔苗助長只會損害長期利益。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"研效度量的罪與罰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後再來看看度量。研發效能的度量一直以來都是很敏感的話題。科學管理時代我們奉行“沒有度量就沒有改進”,但是數字時代這一命題是否依然成立需要我們的反思。現實事物複雜而多面,度量正是爲描述和對比這些具象事實而採取的抽象和量化措施,從某種意義上來說,度量的結果一定是片面的,反映部分事實。但沒有銀彈,也沒有完美的效能度量。數據本身不會騙人,但數據的呈現和解讀卻有很大的空間值得探索。那些不懂數據的人是糟糕的,而最最糟糕的人是那些只看數字的人。當把度量變成一個指標遊戲的時候,永遠不要低估人們在追求指標方面“創造性”,總之我們不應該純粹面向指標去開展工作,而應該看到指標背後更大的目標,或者是制定這些指標背後的真正動機。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總體來看,對於研發效能,我認爲最重要的不是技術升級,而應該是思維升級,我們身處數字化的變革之中,需要轉換的是自己的思維方式,我們需要將科學管理時代的思維徹底轉爲字節經濟時代的思維。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"研發效能的“冷思考”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,回到工程師層面,研發效能的提升對我們而言又意味着什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"工具效率的提升並沒有減少我們的工作時長"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"新工具新平臺在幫助我們提升效率的同時,也不斷增加着我們學習的成本。用前端開發來舉例子,以全家桶爲基礎的前端工程化大幅度提高了前端開發的效率,但與此同時前端開發工程師的學習成本卻在成倍增加,“又更新了,實在學不動了”一定程度反映了前端同開發的悲哀和無奈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"技術的升級正在不斷模糊工作和生活的邊界"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"早年時候的工作溝通除了面聊以外主要靠郵件,非工作時段老闆給你發郵件你有各種正當理由不用及時回覆,可是現在及時通訊工具IM(那個消息已讀提示,你懂的)再結合各種ChatOps實踐,已經讓工程師已經無法區分什麼是工作什麼是生活了,這難道是我們想要的嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着在研發效能領域的不斷投入,會有越來越多的研效工具誕生,所有這些工具都使人與工作之間的鏈接更加緊密,人越來越像工具,而工具越來越像人。我們之所以創造工具是想減輕我們自己的工作,但現實卻很可能發展成,我們最終淪爲被親手創造的工具奴役。我們致力於的研發效能,究竟會成就我們,還是毀了我們?值得我們深入思考。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於研發效能,實施的思路不對,方法不對會搞垮一個團隊,我們需要的是體系化的方法論和相應的工程實踐。請期待我們的下篇文章對此作出解讀,讓我們拭目以待!"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章