項目估算

引言

傳統(tǒng)的項目管理方式下雄可,項目估算是項目計劃階段的重頭戲,在在對需求分析進(jìn)行拆分后缠犀,把每個模塊根據(jù)經(jīng)驗計算出所需人天數(shù)数苫,平衡三劍客 - 時間,質(zhì)量和成本后計算出項目所需時間以及人員數(shù)辨液,基本由項目庫經(jīng)理帶頭和技術(shù)專家一起進(jìn)行估算虐急。

在敏捷的框架下,估算進(jìn)行的更為頻繁室梅,在每個迭代開始時進(jìn)行估算戏仓,估算的方式不再是人天而是故事點數(shù),估算的人員也不再是項目經(jīng)理亡鼠,而是整個scrum團(tuán)隊赏殃。

如何在敏捷框架下進(jìn)行估算?在估算過程中一般團(tuán)隊會有什么樣的困惑间涵?會落入什么樣的陷阱仁热?

敏捷項目估算方法

估算標(biāo)尺

Scrum里根據(jù)用戶故事的難易程度進(jìn)行估算,通常會選擇如下的度量標(biāo)尺在進(jìn)行估算

  • 數(shù)字(從1到10)
  • 衣服尺碼(XS, S, M, L, XL, XXL, XXXL)
  • 斐波拉契數(shù)列(1, 2, 3, 5, 8, 13, 21)

比較常用的是斐波拉契數(shù)列勾哩, 其中又集中在用1 - 13的數(shù)字進(jìn)行估算抗蠢,因為有研究表明,人類大腦比較善于處理第一數(shù)量級(即各位)的排序思劳,而斐波拉契數(shù)列在第一數(shù)量級的基礎(chǔ)上又把數(shù)字進(jìn)行了跳躍區(qū)分迅矛,讓大腦更容易做決策。雖然1和2很好區(qū)分潜叛,但是數(shù)字越大比如8和9就會變得很難區(qū)分秽褒,這時候用8和13就可以提高區(qū)分度。有人可能會問威兜,要是有的用戶故事比13還大怎么辦销斟?可以嘗試把這個用戶故事拆小。要是用戶故事不能再拆小或者還沒有到需要拆小的時候呢椒舵?那么可以用比價大的數(shù)字比如20,40,100蚂踊。13點以上不建議完全按照斐波拉契數(shù)列來列舉,因為那些數(shù)字(21,34,55)確實不好記笔宿,既然是較大的待拆用戶故事犁钟,用整數(shù)來標(biāo)記也無妨棱诱。

撲克估算法

在迭代梳理會議或者計劃會議上,可以用玩撲克的方式來進(jìn)行估算特纤,步驟如下
1. 向大家解釋1,2,3,5,8,13,20,40,100的意義是什么军俊。
可以選幾個數(shù)字定義一下對應(yīng)的用戶故事是什么侥加。比較常定義的是1,3,5捧存。

比如:

如果是第一次估算,和團(tuán)隊一起定義出難度標(biāo)準(zhǔn)担败,如果不是第一次估算昔穴,也需要再次審核以前的標(biāo)準(zhǔn)是不是有所變化

2. PO或者用戶閱讀用戶故事,向團(tuán)隊陳述所期望的功能提前。
在這期間吗货,團(tuán)隊如果又任何疑問都可以提出,由PO或者用戶回答陳清

3. 每個人暗自選擇一個撲克點數(shù)
暫時保密你選擇的點數(shù)狈网,手中的卡片必須在同一時刻揭曉宙搬。這條規(guī)定的目的是防止團(tuán)隊成員間決策的相互影響。

4. 最高和最低點數(shù)的人陳清他們點數(shù)的原因
原因可能多種多樣拓哺,有可能是對需求的理解不一致勇垛,有可能是對點數(shù)的標(biāo)準(zhǔn)有誤解,還有可能是對實現(xiàn)的方式有不同的方法士鸥。無論怎樣闲孤,都需要進(jìn)行陳清討論,有必要的話還需要記錄下來各自的原因烤礁,這些討論的內(nèi)容很有可能在開發(fā)過程中非常有用讼积。

5. 在討論的基礎(chǔ)上重復(fù)步驟三進(jìn)行再次估算,直到團(tuán)隊達(dá)成基本一致

估算陷阱

只讓少數(shù)人參加估算

一周的迭代一般需要2個小時的估算會議脚仔,有人會說如果每個人都參加會浪費很多時間勤众。所以有的團(tuán)隊會選擇讓部分人參加,有可能是資深人員鲤脏,有可能是團(tuán)隊成員輪流著參加们颜。但是這樣的結(jié)果是,沒有參加會議的人會花更多的時間去理解會議上發(fā)生了什么凑兰,又或者沒有參加會議的人有更好的解決方案掌桩,但是失去了在估算會議上提出方案的機(jī)會。讓所有人參加才是明智之舉姑食,因為本身估算就是收集所有人意見的過程波岛,來自各個職能團(tuán)隊的專家們是估算的最佳人選。如果聽到抱怨說參加估算會議的人太多影響了效率音半,那就要考慮是否拆分團(tuán)隊则拷,或者用更為有效的組織形式贡蓖。
估算結(jié)果固然重要,估算過程中思維的碰撞對需求的理解才是更重要的目的煌茬。

1 點 = 幾個人天斥铺?

傳統(tǒng)的項目管理會有“人天”作為單位來進(jìn)行項目估算,在scrum中采用故事點數(shù)坛善。那么這兩者之間有什么換算關(guān)系呢晾蜘?打個比方,從上海距離杭州200公里眠屎,開車3個小時剔交。故事點數(shù)好比距離計量兩地之間有多遠(yuǎn),“人天”好比時間計量需要多久改衩,這兩種計量方式的換算是基于速度有多快岖常。200公里的距離,開車是3個小時葫督,坐動車是2個小時竭鞍。同理,一個1000點的項目橄镜,資深團(tuán)隊需要60個人天偎快,一個初級團(tuán)隊可能需要180個“人天”。

如果公司里有人執(zhí)意要在兩者之間進(jìn)行換算蛉鹿,那么建議取消故事點數(shù)的概念滨砍,直接用“天數(shù)”或者“小時”進(jìn)行估算。

相對估算 vs. 絕對估算

相對估算妖异,即預(yù)先設(shè)置一個標(biāo)準(zhǔn)惋戏,其余的項與這個標(biāo)準(zhǔn)進(jìn)行比較,得出一個相對而言的結(jié)果他膳,例如响逢,如果我們知道A樓高100米,看上去B樓是它的2倍高棕孙,我們可以估算B樓高200舔亭,C樓高度在A和B中間,可以估算C樓高150米, D樓的高度也在A和B中間蟀俊,但是與B樓的高度更接近钦铺,那么可以估算D樓高180米
絕對估算,是比較精確的估算方式肢预,即通過工具的輔助矛洞,估算出A樓高103米,B樓高194米烫映。
為什么我們在進(jìn)行故事點數(shù)估算是選擇用相對估算呢沼本?

  1. 絕對估算方式并不適合軟件項目
    用絕對估算固然準(zhǔn)確噩峦,但是卻不適合用作軟件項目。因為軟件項目基本依賴于人腦抽兆,人與人之間水平的參差不齊识补,每個人每天實際用做編碼的時間也不盡相同。況且就算用于編碼的時間相同辫红,效率也不一樣凭涂,再加上項目千變?nèi)f化,很難有好的標(biāo)尺來進(jìn)行絕對估算厉熟。與其絞盡腦汁進(jìn)項絕對估算导盅,不如大概估算且多次估算更準(zhǔn)確,更能適合千變?nèi)f化的項目揍瑟。
  2. 相對估算易于讓團(tuán)隊中不同能力的成員達(dá)成共識
    不可避免的是,團(tuán)隊中成員的編碼水平參差不齊乍炉,對需求的理解也是不可勝舉绢片。要是用人天來做估算,勢必會出現(xiàn)john說3個人天岛琼,Bill說1個人天的情況底循,這樣并不能達(dá)成共識。而用相對估算就能解決這個問題槐瑞,比如假設(shè)做功能A故事點數(shù)是2熙涤,John和Bill都覺得比較而言功能B需要比功能A多一倍的工作量,并且跟功能C有交錯的地方可能有風(fēng)險困檩,那么他們達(dá)成共識功能B的點數(shù)是5祠挫。
  3. 故事點數(shù)將估算與具體的時間概念區(qū)分開,也把團(tuán)隊成員的感性情緒排除開悼沿。
    當(dāng)成員用人天進(jìn)行估算的時候等舔,心里活動是這樣的:一個人天算多少個小時呢?我們每周都有人請假要多估算點糟趾;我們還應(yīng)該招兩個人但是也不知道還要多久才能到位可能需要多估算點慌植;我們團(tuán)隊有兩個實習(xí)生是不是多留點空間?
    在如此多的心理暗示下义郑,還能準(zhǔn)確的進(jìn)行估算嗎蝶柿?要是用故事點數(shù)就會排除心理暗示,只是純粹的對完成功能需要多少工作進(jìn)行估算非驮。
單一標(biāo)準(zhǔn)衡量故事點數(shù)

人們?nèi)菀渍J(rèn)為故事點數(shù)即是完成一個功能的工作量交汤,但其實這只是故事點數(shù)的一個方面,故事點數(shù)應(yīng)該包含的是開發(fā)一個功能要做的所有的努力院尔,它受到復(fù)雜度蜻展,不確定性喉誊,風(fēng)險,工作量等等各方面因素的影響纵顾。

  • 工作量
    單純從“量”來考慮伍茄,比如一個頁面有1個輸入項,第二個個頁面有100個輸入項施逾,那么第二個頁面的工作量就是第一個頁面的一百倍
  • 工作復(fù)雜程度
    除了“量”敷矫,還要考慮復(fù)雜程度。比如第三個頁面也有100個輸入項汉额,但是在這個頁面有日期選項曹仗,有對數(shù)字輸入正確性的驗證等要求,那么在這個頁面的故事點數(shù)要明顯高于第二個頁面
  • 風(fēng)險以及不確定因素
    如果一個頁面還有不確定因素蠕搜,那么也要適當(dāng)?shù)脑黾庸适曼c數(shù)怎茫,并且做好風(fēng)險應(yīng)對措施。
  • “完成”的依附工作
    團(tuán)隊會制定“Definition Of Done”妓灌,比如自動化測試轨蛤。在進(jìn)行估算因為這樣附加的工作量而增加點數(shù)。
拒絕用時間單位估算

故事點數(shù)適合對長遠(yuǎn)的計劃進(jìn)行估算虫埂,但是并不適合近在咫尺的任務(wù)估算祥山。
試想下在早會時一下兩種說法哪一種更好理解呢?

  1. “我的任務(wù)昨天基本完成掉伏,今天還需要一個小時結(jié)尾”
  2. “我昨天完成了2個點缝呕,我還剩1個故事點要完成”

顯然第一種方式更加具體易于理解。故事點數(shù)是大概的相對的估算斧散,對于較長時間段內(nèi)的項目估算很適合供常,易于達(dá)成共識,但是當(dāng)我們討論每天的工作時颅湘,用時間更接地氣话侧。
常用的做法是,對于一個功能用故事點數(shù)進(jìn)行估算闯参,但是具體怎么完成這個功能拆成任務(wù)后用小時或者天數(shù)進(jìn)行跟蹤瞻鹏。比如,針對招聘網(wǎng)站上的職位進(jìn)行條件篩選并查找的功能鹿寨,故事點數(shù)是8新博。然后前端,后端脚草,測試會把這個功能拆分成不同的小任務(wù)赫悄,由不同的成員負(fù)責(zé)完成。后端任務(wù)需要6個小時完成,前端任務(wù)再拆分成兩個埂淮,由小王和小李各自做4個小時完成姑隅。每天早會更新的時候,每人也會針對自己所在的任務(wù)進(jìn)行更新倔撞。

估算膨脹
  • 什么是估算膨脹讲仰?
    同一個功能,在上個月估算的時候是5個點痪蝇,但是這個月再估算變成了8個點鄙陡,并不是功能或者解決方案有變化,單純只是團(tuán)隊成員估算的時候增加了點數(shù)躏啰。和貨幣的通貨膨脹一個道理趁矾。

  • 估算膨脹是如何發(fā)生的?
    團(tuán)隊有來自外部的壓力给僵,要求在這個迭代完成更多的故事點數(shù)毫捣,或者有人通過故事點數(shù)來衡量團(tuán)隊的生產(chǎn)率,所以團(tuán)隊成員會有意識的增加故事點數(shù)

  • 怎么樣防止估算膨脹想际?
    設(shè)置至少兩個標(biāo)準(zhǔn)培漏,并且在估算是提醒團(tuán)隊與標(biāo)準(zhǔn)進(jìn)行比較后再給出點數(shù)。
    如果標(biāo)準(zhǔn)設(shè)置的時間太久了胡本,或者開始一個全新的模塊需要重新設(shè)置標(biāo)準(zhǔn)便于團(tuán)隊成員理解比較。

估算結(jié)果 = 承諾畸悬?

在本文章中已經(jīng)澄清過侧甫,故事點數(shù)只是估算有多少工作量,并不能直接作為團(tuán)隊當(dāng)前迭代完成多少的承諾蹋宦。
那么披粟,怎樣讓團(tuán)隊開始承諾,承諾的依據(jù)是什么呢冷冗?在這之前守屉,先了解下什么是團(tuán)隊速率Velocity。一個相對穩(wěn)定的團(tuán)隊蒿辙,在穩(wěn)定的環(huán)境下一個迭代能完成的故事點數(shù)即為速率拇泛。這是一個比較理想的定義,在實際操作過程中思灌,比較常用平均速率俺叭,在排除掉那些占了長假的或者是團(tuán)隊進(jìn)行大調(diào)整的迭代后算出過去5個迭代的平均速率。
有了平均速率泰偿,也有有了承諾的依據(jù)熄守,當(dāng)然平均速率只是一個參照,具體還要考慮團(tuán)隊當(dāng)前迭代實際情況,比如團(tuán)隊成員要請假裕照,要完成的功能對別的團(tuán)隊依賴太大等等攒发。

敏捷項目可以作長計劃嗎?

項目經(jīng)理關(guān)心產(chǎn)品估算工作量多少需要多少人用多少錢晋南,老板關(guān)心產(chǎn)品什么時候能上線惠猿,是否賺錢。所以單個迭代的計劃并不能回答老板的問題搬俊,我們不可避免的要做長計劃紊扬。由項目經(jīng)理一拍腦袋想出個日期?還是試試以下兩種辦法

  • 初始會議
    在項目一開始唉擂,可以安排一個初始會議餐屎,在會議上對項目或者項目的獨立功能做估算,與迭代計劃會議的估算不同玩祟,在初始會議上很可能只是對一個史詩級用戶故事進(jìn)行初略估算腹缩,估算的單位也要提高一個量級,比如10,20,30,50,80空扎。然后團(tuán)隊再根據(jù)團(tuán)隊的速率來計算出完成需要的時間藏鹊。重要的是項目發(fā)起人以及項目負(fù)責(zé)人可以從開發(fā)團(tuán)隊那里直接獲得估算結(jié)果
  • 產(chǎn)品POC
    如果這是一個新的團(tuán)隊,或者連團(tuán)隊都沒有并沒有歷史經(jīng)驗應(yīng)該怎么進(jìn)行估算呢转锈?建議用最短的時間盘寡,比如半個月做一個產(chǎn)品的POC,根據(jù)對產(chǎn)品的了解撮慨,還有團(tuán)隊成員間的合作情況再進(jìn)行估算竿痰。

最后

估算的目的是為了更好的做計劃,商場如戰(zhàn)場瞬息萬變砌溺,一成不變的計劃不是好計劃影涉,需要時時調(diào)整計劃。

Estimation is nothing, Estimating is everything. by no one from 艾森豪威爾

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末规伐,一起剝皮案震驚了整個濱河市蟹倾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猖闪,老刑警劉巖鲜棠,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異萧朝,居然都是意外死亡岔留,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門检柬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來献联,“玉大人竖配,你說我怎么就攤上這事±锬妫” “怎么了进胯?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長原押。 經(jīng)常有香客問我胁镐,道長,這世上最難降的妖魔是什么诸衔? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任盯漂,我火速辦了婚禮,結(jié)果婚禮上笨农,老公的妹妹穿的比我還像新娘就缆。我一直安慰自己,他們只是感情好谒亦,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布竭宰。 她就那樣靜靜地躺著,像睡著了一般份招。 火紅的嫁衣襯著肌膚如雪切揭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天锁摔,我揣著相機(jī)與錄音廓旬,去河邊找鬼。 笑死谐腰,一個胖子當(dāng)著我的面吹牛嗤谚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怔蚌,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼旁赊!你這毒婦竟也來了桦踊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤终畅,失蹤者是張志新(化名)和其女友劉穎籍胯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體离福,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡杖狼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妖爷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶涩。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绿聘,到底是詐尸還是另有隱情嗽上,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布熄攘,位于F島的核電站兽愤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挪圾。R本人自食惡果不足惜浅萧,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哲思。 院中可真熱鬧洼畅,春花似錦、人聲如沸也殖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忆嗜。三九已至己儒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捆毫,已是汗流浹背闪湾。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留绩卤,地道東北人途样。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像濒憋,于是被迫代替她去往敵國和親何暇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容