曾經接過急迫且大型的網站建置專案,但是進行上卻還算順利,這是由於系統工程師十分有經驗,在分工、次序與掌控上,都做了很好的安排。
但在最近的一個朋友的經驗中,卻是遇到網站的機制改版,在時程與資源運用上卻不斷延遲,還好是內部機制,不用對客戶交代,否則所蒙受的將不是只有金錢上的損失。
我們知道時程延遲,但原因在哪裡?為何會發生?
人月,是我們預估和排定時程用的,但是作者提出一個前提:『使用人月必須要在人力與工時可以互換的狀況下。而且要當工作可以切割、投入工作的人不用溝通,人力與工時才能互換。』就是說要可以互換,才能使一個人做30天,與30個人做一天的結果一樣,不然單純用人月去估算時程,一定會有誤差。
為什麼呢?首先軟體專案有其連續性,作者舉了個例子,蠻傳神的,他說,生小孩就是要九個月,你叫多少個媽來生都是一樣。第二點是因為即使工作可切割,但是需要溝通,越多人投入就需要多的溝通與教育的時間,所以一個人做30天的工作不可能用30個人做一天就完成。
所以,Brooks定論說,在一個時程已經落後的軟體專案中增加人手,只會讓它更加落後。
因此,要讓一個專案順利進行,首先要有良好的時程規劃,考慮所有的因素,而且,程式人員要有勇氣不要妥協,堅持自己預估的時程。就像是廚師一樣,即使外面的客人在等著上菜,一隻雞要烤多久就要烤多久,不能因為妥協就用大火烤焦了。