Ruddy Lee 分享空間

Emergent Design 演化設計

再談scrum專案的時程預估

with one comment

明明知道軟體開發工時是絕對估不準的,那為何還要辛苦的計劃估算呢?

《  話說朋友有難,我們當然應該義不容辭的挺身而出才是。但習慣作救火動作的我,這次卻是去放火的。怎麼說呢?事情是這樣的;軟體公司在議價前夕,對專案唯一有經驗的scrum master卻離職了,這個標案被指定要採用這家軟體公司不是很熟悉的silverlight技術來開發。老闆(就是我那個老朋友了)在不知如何是好時找我來幫忙。你說,該幫他預估時程嗎?所以我始終覺得是來放火的。我搭高鐵南下,大概只有5/6小時的時間可以從了解專案內容,分析規劃到交卷。好刺激,人生嘛~ 就是這麼有趣! 》

首先要弄清楚的是,花這麼多工不是只為了搞清楚開發的時程或是何時可以完工而已。 其實專案成敗的「風險」以及多弄清楚有那些「不確定的因素」才是重點。對我們這些專門推廣scrum的人而言,有時教導才是最最重要的。(說到這裡,難免要報怨一下,Scrum對軟體開發的規範太少了,是個非常輕量化的開發架構。所以經驗與過程的教導便成為十分重要的事,尤其在開發專案中,將會面臨到的各式問題,不但問題本身會相當有挑戰性,也經常扮演著專案成敗的重要因素。但這正是它有趣的地方。

話說回來,依據Mike Cohn 所述,時程估算的三種方法:

1. 依據團隊在相關專案上的歷史開發速度。

2. 針對目前的專案,就實際上執行一個sprint來做做看,然後依據這個sprint團隊所表現得到的速度來作預估。

3. 給自己一個好理由,用猜猜看的方式來估算。

這是Mike Cohn 給的建議。但很不幸的是,我們經常都在指導新的開發團隊,他們又總是在接沒作過的工程技術,因此前二種方法好像都派不上用場。最後只好來玩猜猜看的遊戲了。這個時候我還是習慣、也比較喜歡拿IBM古老的HIPO專案估算法來作breakdown, 原因正是它對專案在程式模塊上有相當的幫助,可以幫助工程人員進行思考並減少盲點(可以降低風險),雖然它的break down正確性有待考驗,但仍不失為委外開發或是專案進展下去的良好參考分析。對降低風險及不確定性有著一定的幫助。

與業者溝通,看清需求的本源

不過這次我沒有這麼做(沒考慮用HIPO來解題),一個理由是,自己對這個專案沒有感覺,或許是倉促之下,一心急著閱讀相關文件,看得快了,也就沒能意識到主軸所在,當然就沒感覺了。 另外一個重要因素則是缺乏溝通,沒跟真正的使用者接觸,進行語言上的交流,總覺得文件的描述少了些甚麼? 所以就在時間不足的情境下,選擇了與業者的需求單位見面,由需求的本源來進行分析的工作。

由發佈專案日期,倒推迭代的次數

台灣最多的就這種價格固定,時程又畫押的專案。對軟體公司而言,我們唯一可斟酌的就是功能的多寡了,做多了就做不完,還要賠錢。當然是想盡辦法來說服使用者少做一些功能了。以降低風險與減少不確定性為主旨來進行分析(然後希望老朋友能據此增加作決策時的準確性)。所以我以模擬"專案發佈會議"的方式來作計畫。這不是Scrum的制式會議,但過去在執行敏捷開發法時常常做。老實說;這是一種宣示性質大於實質意義的會議。能夠讓所有參與專案的人員有著一種共同的目標與期望,對接下來專案的進行工作絕對是一種好事。倒推迭代的方式,可以事前預估那些使用者要求的功能故事將不會被時間內做到。這一點,對雙方都有著極大的意義及幫助,它讓大家看到一個一致性的願景。放心好了,使用者的一致反應便是開始調整功能需求的優先順序。這種即時反應的回饋正是敏捷開發據以成功的依歸,也能讓人安心不少(希望這回火不要放得太大…)。

Break down Product backlog之後,我也順勢多訂了幾回迭代的規劃,感覺上有一些在做傳統專案的規劃動作,但多計畫一二個迭代的規劃,確實讓人更放心了些。這也是好事一樁。

在回程的高鐵車上,抒發一下情緒 …。

Written by ruddyllee

2012 年 07 月 06 日 於 11:37:47

一個回應

Subscribe to comments with RSS.

  1. Great concept

    Jacky

    2012 年 07 月 06 日 at 16:44:16


發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: