溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

敏捷開發(fā)“松結(jié)對編程”實(shí)踐之三:共同估算篇

發(fā)布時(shí)間:2020-04-02 10:32:01 來源:網(wǎng)絡(luò) 閱讀:568 作者:火星人陳勇 欄目:軟件技術(shù)

本文是“松結(jié)對編程”系列的第三篇。

估算是經(jīng)久不衰的管理話題,大致分為兩種流派。

第一種是領(lǐng)導(dǎo)指派,領(lǐng)導(dǎo)說這是10天的活,就必須當(dāng)是10天的活來干,如果干不完,可以用加班、損失質(zhì)量、功能縮水等各種方法曲線救場。另一個(gè)變種是大家自己估算,但是交給領(lǐng)導(dǎo)審批;領(lǐng)導(dǎo)審批其實(shí)就是砍一半的過程,還好大家之前就已經(jīng)加了一倍,所以不怕。

第二種是自我管理派(偏敏捷),就是由具體開發(fā)的人員自己說開發(fā)工作量,領(lǐng)導(dǎo)和他人不干預(yù)。盡管“自組織”了,但是領(lǐng)導(dǎo)深以為這種方法留下了偷懶的種子,而隊(duì)員也覺得某人的估算很不靠譜(太長或太短),到底怎么辦呢?

共同估算吧。

--------------------------------------------

基本概念

假設(shè)現(xiàn)在是一個(gè)計(jì)劃會(huì)上,PO(產(chǎn)品經(jīng)理,策劃組長,項(xiàng)目經(jīng)理,某銷售……)剛剛講完需求,下一步不是交給某人做估算,而是交給某個(gè)潛在的組(師傅+1~3徒弟)。

由師傅帶頭打牌,對,在計(jì)劃會(huì)上玩撲克:

1. 大家各自思考可能要花多久時(shí)間完成任務(wù),扣一張牌出來;

2. 師傅喊開牌,大家亮牌,比較大小;

3. 一般最小和最大的兩個(gè)人PK,說出自己的觀點(diǎn),大家一起討論;

4. 差異無非來自于兩個(gè)方面:做什么,怎么做;PO參與討論回答做什么的問題,師傅和徒弟們討論解決怎么做的問題;

5. 討論過后再來幾輪,直到大家覺得結(jié)果差不多了。

撲克牌估算的匿名性和開放性保證了大家不會(huì)人云亦云,也不會(huì)因?yàn)槿鄙贉贤ǘy以達(dá)成一致。

筆者的經(jīng)驗(yàn)是一局撲克牌估算大約持續(xù)1~5分鐘,還是很快的。偶然有黃莊的,一般都是因?yàn)镻O那里回答不了做成什么樣子,某某附加功能是否也要做……等等問題時(shí)。

幾個(gè)問題

1. 為什么分給組而不是個(gè)人?

不分個(gè)人就打牌使得每個(gè)人都不得不思考,因?yàn)榕鲁鲥e(cuò)了牌又說不出所以然。這樣即使日后他不做這個(gè)功能,也對這個(gè)功能很了解。

2. 為什么不讓最后領(lǐng)任務(wù)的人自己估算?

因?yàn)樗芸赡芤驗(yàn)椴恢滥炒a可用、不知道某軟件不行、不懂template(我們因此扔過1個(gè)人月代碼)……而選擇了錯(cuò)誤的實(shí)現(xiàn)方法。

3. 為什么不讓師傅估算大家采納,他不是最厲害嗎?

師傅的想法常常是徒弟們理解不了的——比如為什么不留在女兒國而偏偏去西天取經(jīng)之類的,呵呵——共同估算就是讓大家在思考中對照自己的實(shí)現(xiàn)方法和師傅差異的過程。

4. PO怎么還參加?不是不讓別人干預(yù)嗎?

很多問題比如在游戲中“顯示武林排行榜”,具體工作量可能不在于怎么做而在于做什么:憑什么排名?排多少名?實(shí)時(shí)排名還是每周排名?怎么顯示排名?……因此PO不能寫出一堆文檔,然后以不便干預(yù)估算為名不參加敏捷計(jì)劃會(huì)議。

PO可以挑戰(zhàn)估算,比如:“這真的要這么久嗎?我記得上次……”但要有理有據(jù)。其實(shí)實(shí)踐中更容易看到的是,團(tuán)隊(duì)往往過于激進(jìn)樂觀,PO反而要讓他們意識到完整的需求和要求,做出更現(xiàn)實(shí)的估算。估算不準(zhǔn)確,PO也有責(zé)。

5. 一直無法達(dá)成一致怎么辦?

其實(shí)估算不是為了最后那個(gè)數(shù)字,而是弄清楚做什么和怎么做的問題,如果這兩件事情清楚了,但結(jié)果卻是偏偏有人說4天有人說6天,隨便取個(gè)數(shù)就可以了(事實(shí)是應(yīng)該按墨菲定理取6天)。有師傅在,一般很少會(huì)就實(shí)現(xiàn)方法爭執(zhí)不下;有PO在,一般很少會(huì)就要實(shí)現(xiàn)什么爭執(zhí)不下。

不排除有特殊情況比如PO發(fā)現(xiàn)自己也沒想過排行榜憑什么排行,那么就應(yīng)該擱置此用戶故事;又比如大家覺得如果數(shù)據(jù)庫給力可能實(shí)時(shí)排名也行但又拿不準(zhǔn),可以暫時(shí)擱置到開發(fā)的時(shí)候再說,但把故事上標(biāo)注一下“若需要每周自動(dòng)排名+1天”。如果經(jīng)常黃莊,Scrum Master要分析總結(jié)避免。

6. 四個(gè)人出牌不同,師傅先說還是徒弟先說?

想起個(gè)腦筋急轉(zhuǎn)彎:科學(xué)家 醫(yī)生 士兵 護(hù)士 ……等等一群人在飛機(jī)上,飛機(jī)結(jié)冰快墜落了需要有人(可能不止一個(gè))跳下去,問誰跳?答案是從體重最重的人開始跳,因?yàn)榭梢陨偬鴰讉€(gè)。

因此我們是出牌數(shù)字最小的先說,和師徒無關(guān)。因?yàn)樗麡O有可能掌握最佳實(shí)現(xiàn)方法。如果后來發(fā)現(xiàn)不是如此,請參考下一條。

7. 都有什么理由可陳述?

按下面的順序,越靠前的越接近真理,感覺自己接近真理的就一定要舉手先說,馬后炮招人嫌:

經(jīng)驗(yàn)事實(shí):我以前做過……咱們有個(gè)類庫……那個(gè)方法我試過不可行……

蛛絲馬跡:誰還記得上次……聽說隔壁……與上回相比……你以前不是……

邏輯推理:理論上說……我覺得……

幾個(gè)注意事項(xiàng)

1. 小組內(nèi)不要有強(qiáng)分工,否則大家會(huì)缺省認(rèn)為肯定是某人的工作。

2. 師傅不要太搶眼,要通過估算鼓勵(lì)徒弟思考,同時(shí)也掌握徒弟的真實(shí)水平。

3. 師傅不要太較真,編程規(guī)范、易用性、易維護(hù)性這些紀(jì)律不能放松,但如果徒弟想嘗試一種不同但工作量也差不多的方法,可以適當(dāng)鼓勵(lì)。

4. Scrum Master監(jiān)控整個(gè)過程,防止太細(xì)/爭執(zhí)……等問題。

5. PO必須參加。

----------------------------------------------------------

共同估算依靠PO的參與解決了做什么的問題,依靠師傅的帶動(dòng)解決了怎么做的問題。

共同估算是“跨職能團(tuán)隊(duì)”的基礎(chǔ)活動(dòng)之一,之后他們之所以能在每日立會(huì)上分享當(dāng)前進(jìn)展與困難,就是因?yàn)楫?dāng)初是他們一起思考這一任務(wù)的,因此對這一任務(wù)后來的實(shí)際情況非常關(guān)心。在發(fā)生問題的時(shí)候,大家也更可以互相幫助,而不是毫不所知。

下一篇將會(huì)涉及日常工作/每日立會(huì)等迭代期內(nèi)的工作。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI