在一定規(guī)模的軟件研發(fā)團隊內(nèi),經(jīng)常出現(xiàn)的情況是對同一個問題領(lǐng)域,會有多個人或多個者團隊蒙頭再重復做系統(tǒng)或方案來解決相同問題。
甚至,在一些團隊內(nèi),技術(shù)人員為了職位晉升,會通過重復建設(shè)相關(guān)的系統(tǒng)來展示其能力,并名其名曰面向晉升編程。
對于個人來說,重復造輪子其實是人之本性,特別是對于優(yōu)秀的研發(fā)工程師來說,自己的方案和代碼永遠都是最好的,別人的都是垃圾。
對于研發(fā)團隊最高負責人而言,就需要認真思考重復建設(shè)的對整個團隊是否是問題,以及問題產(chǎn)生的原因是什么?
對于中小型團隊,在研發(fā)資源有限的情況下,系統(tǒng)的重復建設(shè)其實一個比較嚴重的問題,反映出組織內(nèi)部可能出現(xiàn)了一些不太好的征兆:
團隊信息共享機制缺失
例如,組織內(nèi) A 團隊在 Q1 構(gòu)建了一個解決配置信息管理系統(tǒng),并且已經(jīng)自己內(nèi)部使用的很好了,解決了很多問題,提高其研發(fā)效率,6 個月后,另外一個 B
團隊因為需要解決類似的問題,自己又投入資源搞了另外一套系統(tǒng),還可能會出現(xiàn) C 團隊,D 團隊等等。
同樣的問題,為什么出現(xiàn)兩套系統(tǒng),背后反映的整個研發(fā)團隊內(nèi)部信息共享機制的缺失。A
團隊在做之前如果可以和整組織內(nèi)的其他團隊共享一下問題,大家共享問題,共同建設(shè)一個共享系統(tǒng),或者 A
團隊做完的系統(tǒng)使用后,在組織內(nèi)部做一些宣傳推廣,讓有同樣問題的兄弟團隊來直接使用呢。
好的共享機制和文化,可以減少不必要的重復建設(shè),將節(jié)省的研發(fā)資源投入到更加重要事情上,從而產(chǎn)生更大的價值。
團隊內(nèi)部職責不清
從管理的視角看,重復建設(shè)的背后是不是因為團隊內(nèi)部的分工不合理導致。一些可預期的多個團隊都會用到的基礎(chǔ)能力,是不是有獨立的團隊去負責建設(shè)這些體系,從橫向上支撐整個研發(fā)團隊,這樣來提高整體的效率。
一般上一點規(guī)模的研發(fā)團隊,都會建立一個共享能力建設(shè)的團隊,從研發(fā)組織全局視角去承接一些可復用的研發(fā)工作,從而避免團隊各自為戰(zhàn)的情況出現(xiàn)。
常見共享團隊,例如中間件團隊,數(shù)據(jù)團隊,以及去年大火的中臺團隊。
共享基礎(chǔ)設(shè)施缺失
如果兩個團隊正在構(gòu)建相同的基礎(chǔ)設(shè)施來解決類似的問題,那么它應該是一個共享服務或能力。基礎(chǔ)設(shè)施的統(tǒng)一建設(shè),長遠看會為組織降低很多成本,同時也會大幅度提升研發(fā)團隊的效率。高效統(tǒng)一的基礎(chǔ)設(shè)施的好處主要有:
* 系統(tǒng)層面可以高度復用
* 專業(yè)的團隊解決專業(yè)的問題,避免低水平重復建設(shè)
* 可以帶來人員內(nèi)部的橫向調(diào)動學習成本大幅降低
團隊全局意識不夠
因為兩個團隊針對同一個問題提出了相似的解決方案,這表明團隊中高級別的員工的全局意識不足。如果做這樣事情的人員還因為或的晉升,這樣會降低團隊的整體的格局。
例如,A 團隊已經(jīng)做了一個方案,B 團隊的經(jīng)理至少應該知道這個問題已經(jīng)是一個共同的問題,應該更高的維度上來考慮問題:
* B 團隊在自己做之前應該尋求組織內(nèi)部的資源,如果已經(jīng)有了就可以考慮直接使用
* 或者 AB 團隊共同建設(shè),并推廣到全組織內(nèi)使用
* A 團隊自己使用不錯時候,就可以積極推廣到全組織內(nèi),為全研發(fā)團隊帶來效能的提升。
總結(jié)
從管理的角度看,在一個組織內(nèi)一些公用的系統(tǒng)能力重復建設(shè),就是對組織資源的嚴重浪費。如果是組織必須的能力體系,最好的解決方案就是從全局出發(fā),重點投資,投入足夠的資源來建設(shè)到位。重復建設(shè)不可取,低水平的重復建設(shè)更不可取。
輪子小造怡情,團隊內(nèi)大造輪子就需要慎重考慮了,特別是中小型團隊而言。
對于優(yōu)秀的工程師個人而言,造一些輪子來自我實現(xiàn)是必須要途徑,如果能在組織內(nèi)橫向跨團隊推動一批人來一起造一個不錯的輪子,對個人和集體而言都是一個不錯機會。
本組織構(gòu)建的每個資產(chǎn)管理管道都是浪費精力,本應該在更高的級別進行投資。