我們進行軟體研發的目標是什嗎?書中關於目標的思考也引發了我很多的思考,是的,我們研發的目標是什嗎?更快的研發效率?更高的品質?更炫的功能?更多的功能?更好的能力提升?公司養活了這麼多的研發人員,目標就這上面的這些嗎?那麼我們的目標是什麼呢?
我能得到的答案就是賺錢,利潤,不管用什麼去表達,最終公司的目標都離不開這一點,沒有資金的公司最終是無法存活下去的,不管是偉大的蘋果還是Google,利潤考核永遠都無法逃脫得掉。《目標》這本書給出了三個衡量指標:有效產出(throughput)、存貨(inventory)和營運費用(operational expense)。
有效產出:整個系統透過銷售而獲得金錢的速度。存貨:是整個系統投資在採購上的金錢,而採購的是我們打算賣出去的東西。營運費用:是系統為了把存貨轉為有效產出而花的錢。
有效產出是通過銷售而獲得金錢的速度,那麼換成我們的軟體產品而言,也就是產品的暢銷程度,交付速度等。對於我們而言就需要快速的研發出市場所需要的產品,並且可以快速交付拿回費用。一切的目標都是要提高有效產出,那麼阻礙有效產出的,或者與有效產出無關的,實際上都是需要調整的。如果按照這個定義的話很多都可以定義為無效產出,比如客戶不需要的功能、不需要的產品、錯過最佳銷售期的產品、交付複雜等等,當然製造件和軟體還是有些區別,那就是每個製造件都是需要時間和成本,但是軟體一旦製造出來,剩下的成本就基本為零了。但是軟體需要更新版本,所以每個軟體的版本都是可以看成一個製造件,如果這樣對比的話,兩者還是有很多的共通之處。
存貨是整個系統投資在採購上的金錢,換成軟體研發而言,需求過程,研發過程,測試過程,上市等等過程都是存貨,存貨的成本越高,利潤就會越薄,如何減少存貨就是一個關鍵的指標。各種周期的縮短,減少在製品的數量,讓產品更快的銷售出去都是要考慮的內容。另外減少存貨的另一種辦法就是不產生存貨,也就是不需要的存貨要減少,不需要的功能,不需要的產品,逐漸淘汰的產品等等也都是需要考慮的範圍。
營運費用是系統為了把存貨轉為有效產出而花的錢,轉換到我們軟體研發上而言實施,營銷,售前,廣告等等一系列的動作,這些都是成本所在的地方,當然這部分都需要進行思考如何更加有效和合理。
提到上面三點指標的同時,也提到了另外的一個概念“局部效益”,要放眼於整體架構和組織,而不能只考慮局部的效益,這點我認為也是上面三點所貫穿的點睛之筆,或者上面三點的融會貫通的切入點。如果不處於整體架構的考慮的話,局部效益會導致整體效益的下降。例如研發部門考慮工作效率而言,只注重發版產品數量,而不考慮是否符合市場要求,造成的結果就是大量無法銷售的產品。規劃部門只考慮規劃指標,那麼會製造出大量的需求規劃,研發因為能力問題而未能實現,被束之高閣。這些都是成本上的浪費,如果把這些成本轉化為其他的有效產出將會產生更大的利益。研發人員把空餘出的時間去支援項目交付,規劃部門的空餘時間支援售前都將產生不同的效果。
從敏捷的角度而言,有效產出減少存貨也是敏捷的核心思想,每次只去研發最緊急重要的功能,隨時可以交付。另外DevOps也是敏捷倡導的思想,開發(軟體工程)、技術運營和品質保障(QA)一體化進行解決,而不是單獨部門考量。