執行SCRUM-22 - 看板實務5 - 人月神話

在軟體開發專案進行中,常會因為需求變更、除錯、測試、發佈等狀況發生,而導致期程落後的情形。此時,專案經理通常首先想到的是,投入人力資源,希望用更多的人力,提升專案開發的速度,企圖讓專案符合預定交付的期程。

在軟體業有著「人月神話」的說法。一般來說,100單位的工作量交給5人作,需要20天。若改成10人作,理論上期程會縮短成10天。但是,這個算法有個假設常被忽略,就是工作之間是彼此獨立的。而軟體專案的開發,通常涉及許多的資料規格、介面、流程等等,而且彼此交錯影響,愈大型專案愈是複雜。所以人月的計算與工作量成正比的概念,在軟體開發實際上是行不通的,成效將會快速遞減,甚至反轉增加時間。

為什麼有這樣的狀況呢? 就軟體開發而言,新增的人力事先需要教育訓練及熟悉整個狀況,包含人事時地物等等,需要時間磨合及原有工程師的協助。等到人員就定位後,成員間相互之間的溝通將是成幾何倍數增加。例如,原先5人間的溝通線為5!=120,增加1人變成6人後,溝通線上升6倍=720。另外,工作的分配、流程等,也可能要修改及配合,大幅的增加作業時間。

但是以專案經理的角度而言,期程落後難道就放給它去了嗎? 個人認為,增加人力雖然無法與時間縮短成正比,但仍然會有效益,需要先評估後再投入。另外,對於團隊組成或是作業方式是不是要調整,以及預估期程方式是否太樂觀、減少工作量等,應該思考及檢討。