溫馨提示×

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

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

敏捷開(kāi)發(fā)“松結(jié)對(duì)編程”實(shí)踐之二:計(jì)劃與設(shè)計(jì)篇

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

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

新人其實(shí)很少偷懶,因?yàn)橐环矫嬲幱谌腴T(mén)學(xué)習(xí)的高峰期,另一方面工作時(shí)間不長(zhǎng)需要得到企業(yè)和團(tuán)隊(duì)的認(rèn)可。可為何他們工作總是不得力呢?

新人的真正問(wèn)題在于無(wú)心辦錯(cuò)事和好心辦錯(cuò)事。

無(wú)心辦錯(cuò)事包括沒(méi)學(xué)過(guò)某種好的方法、不知道企業(yè)已經(jīng)有某些可用代碼或庫(kù)、不懂業(yè)務(wù)等種種問(wèn)題。

好心辦錯(cuò)事包括想做一個(gè)比領(lǐng)導(dǎo)想想的更好的功能、過(guò)度思考了可復(fù)用性可維護(hù)性等。

這兩個(gè)問(wèn)題筆者都經(jīng)歷過(guò)(作為新人和老人),“避免”是最好的方法,而不是事后改正,這就需要在設(shè)計(jì)階段和計(jì)劃階段從技術(shù)、管理兩個(gè)方面來(lái)提前預(yù)防。

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

技術(shù):輕量級(jí)設(shè)計(jì)

如果要把一個(gè)任務(wù)分配給一個(gè)“不放心的人”,有兩種辦法保證成功:師傅把設(shè)計(jì)做出來(lái)交給徒弟做,但是“設(shè)計(jì)文檔”的詳細(xì)程度很難把握,寫(xiě)少了做不出來(lái),寫(xiě)多了等做出來(lái)了很多內(nèi)容又多余了;師傅徒弟結(jié)對(duì)編程,但是很占用師傅的時(shí)間,尤其是倘若徒弟“實(shí)際上”(可惜只有上帝知道)完全可以勝任這個(gè)任務(wù)。

有兩種解決方法。

1. 事前輕量級(jí)設(shè)計(jì):預(yù)想陳述(有點(diǎn)隱喻的意思)

預(yù)想陳述是微軟很久以前就使用的一種方法,任何人(不只是徒弟)有什么設(shè)計(jì),不用寫(xiě)下來(lái)因?yàn)樘M(fèi)時(shí)間了而且還可能被拋棄,而是給大家講一下。大家會(huì)給出評(píng)價(jià)和意見(jiàn),以保證其正確性。然后此人就按這種方法去實(shí)現(xiàn)了,倘若成功了也被認(rèn)可了,就簡(jiǎn)單寫(xiě)下來(lái)以供日后參考使用。由于系統(tǒng)已經(jīng)存在,這個(gè)簡(jiǎn)單寫(xiě)下來(lái)的設(shè)計(jì)可以真的很簡(jiǎn)單。

在“松結(jié)對(duì)編程”里邊,有兩種類似的做法。

一種是師傅把自己的想法告訴徒弟(一般用一個(gè)白板,或一張白紙),徒弟提問(wèn)師傅回答,到差不多為止。

二種相反,徒弟講給師傅聽(tīng),師傅師傅質(zhì)疑和指導(dǎo),到差不多為止。

兩者都不要事先形成永久文檔,但都在被證明可行(就是編碼完成后)寫(xiě)一個(gè)簡(jiǎn)單文檔記錄。任何代碼之外的能幫助理解當(dāng)時(shí)做法的文字/圖片都可以稱為文檔,沒(méi)有字?jǐn)?shù)限制。如果能和用戶故事放在一起則更好,一個(gè)描述做了什么,一個(gè)描述怎么做的。

2. 前檢查點(diǎn)

就是在某事開(kāi)始的時(shí)候進(jìn)行臨時(shí)結(jié)對(duì)編程。一般發(fā)生在某個(gè)功能剛開(kāi)始做的時(shí)候,詳情會(huì)在之后的“日?;顒?dòng)篇”做詳細(xì)描述。

管理:共同計(jì)劃(共同估算,撲克牌估算)

預(yù)想陳述、前檢查點(diǎn)雖然已經(jīng)很輕量級(jí)了,但是如果師傅和徒弟都剛剛對(duì)需求(用戶故事)有所了解,還給不出很清晰的思路的時(shí)候,比如在Scrum計(jì)劃會(huì)上,怎樣快速知道徒弟有沒(méi)有理解需求,有沒(méi)有大致的實(shí)現(xiàn)思路呢?那就是共同估算(撲克牌估算是共同估算的一種最好的實(shí)現(xiàn)形式)。

1. 共同估算

共同估算的原理和做法還是很復(fù)雜的,這里只簡(jiǎn)單說(shuō)說(shuō),以后會(huì)有文章詳細(xì)講述。

共同估算就是師傅和徒弟基于相同的信息(一般是在計(jì)劃會(huì)上聽(tīng)PO講完故事的時(shí)候),一起說(shuō)出自己認(rèn)為做完這件事情需要多久。基本原理是:若兩個(gè)人對(duì)某件事情的工期認(rèn)識(shí)是相同的,那么他們的實(shí)現(xiàn)方法不分高下,用哪種方法都差不多。

為了防止人云亦云,一般需要采用匿名方法,而撲克牌估算就實(shí)現(xiàn)了高效有效的共同匿名估算(另有文章詳述)。

2. 驗(yàn)收標(biāo)準(zhǔn)

為了基于相同的目標(biāo)建立共同估算,也為了防止需求鍍金或最終軟件不能滿足需求,師傅和徒弟要建立對(duì)需求的共同理解。

簡(jiǎn)單方法就是兩者(其實(shí)是師傅和多個(gè)徒弟)一起參加估算會(huì),一起聽(tīng)PO講解故事。但最好是在此之后,建立一個(gè)“文檔化”的驗(yàn)收標(biāo)準(zhǔn)。比如在一張故事卡/Excel表里……上寫(xiě)上“需集成;無(wú)性能要求……”等最簡(jiǎn)單的描述(請(qǐng)參考本博客的敏捷開(kāi)發(fā)分類下一片關(guān)于驗(yàn)收標(biāo)準(zhǔn)的文章)。

共同估算+驗(yàn)收標(biāo)準(zhǔn),使得師傅和徒弟(推廣為高手和新手)使用大致相同的方法,做大致相同的東西。共同估算既是一個(gè)工作的過(guò)程,也是一個(gè)學(xué)習(xí)的過(guò)程,因?yàn)樵诶斫庾鍪裁春驮趺醋龅耐瑫r(shí),徒弟也向師傅學(xué)到了東西。

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

這里描述的基本上都是前期工作方式,基于莫非定理(只要事情能出錯(cuò),就一定會(huì)出錯(cuò))只在事前預(yù)防還是不夠的,在日常工作中仍需要師傅與徒弟進(jìn)行配合工作,具體細(xì)節(jié)將另有文章描述。

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

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

AI