敏捷史話(十五):我發(fā)明了敏捷估算撲克牌 —— James Grenning

雪鳥會議
雪鳥會議前夕,James Grenning 在 Object Mentor 與 Robert C. Martin 一同工作,彼時,組織雪鳥會議的 Bob 大叔向 James 發(fā)出了邀請。在得知會議地點(diǎn)后,James 毫不猶豫地接受了邀約,并在腦海中踴躍歡呼“我要去滑雪!”畢竟,“雪鳥是世界上最好的滑雪場之一”,沒有人會拒絕雪鳥的誘惑。當(dāng)然,除了滑雪,更吸引他的是,在雪鳥會議中,他能夠與曾經(jīng)共事、合作的 Kent Beck、Ron Jeffries、Martin Fowler、Ward Cunningham等人探討對軟件開發(fā)的看法。
不過,他并未覺得這次會議能對自己的工作產(chǎn)生任何有利影響,他也從未預(yù)料到這會對軟件開發(fā)行業(yè)產(chǎn)生如此巨大而深遠(yuǎn)的影響。“我們很確定沒有人會在乎這次會議,但至少我們做了一些事情: 找出我們有什么共同點(diǎn),以及共同點(diǎn)在哪里。”
估算撲克
在一定程度上,《敏捷宣言》是在大家聚在一起找出分歧,再找到共同點(diǎn)的過程中產(chǎn)生的。James 認(rèn)為,這與估算撲克很相似,二者的共同點(diǎn)是: 一個團(tuán)隊(duì)需要在某一部分達(dá)成共識。
估算撲克的靈感來源于 一次失敗的計(jì)劃會議。當(dāng)時的參會人員包括作為敏捷教練的 James,以及一個8個人的團(tuán)隊(duì)。會議由其中的兩位高級工程師主持召開,但在會議進(jìn)行中,兩位工程師對如何構(gòu)建用戶故事展開了反復(fù)討論。在一片混亂的情況下,James 用了半小時甚至一小時的時間才意識到,兩人在會議開始時談?wù)摰墓r數(shù)與 在會議結(jié)束時談?wù)摰墓r數(shù)完全一致,他們只是在爭論用什么方法去做。而此時其他參會的六個人由于沒有參與討論、估算,已經(jīng)昏昏欲睡。正巧,當(dāng)時 James 手上正好有索引卡片,于是在會議結(jié)束中場休息后,他 給每個人都發(fā)了卡片,并要求提出某項(xiàng)工作后,所有人只能出牌,不能講話,以達(dá)成一致決定。
James 在 Object Mentor 網(wǎng)站上寫下了這個故事,并提出估算撲克。隨后,Mike Cohn 發(fā)現(xiàn)了這一方法,在未改變使用方式的前提下,介紹了斐波那契數(shù)列及其他方法,同時決定將估算撲克在大范圍內(nèi)推廣使用。發(fā)布后,這副特殊的撲克在程序員中廣受歡迎。
估算撲克能通過以牌面朝下的方式隱藏?cái)?shù)字,讓團(tuán)隊(duì)避免“錨定”的認(rèn)知偏差,提高估算效率。這是一種既能起到群策群力效果又有效避免眾口難調(diào)造成混亂的好方法, 當(dāng)然,估算并不只依賴于這一副撲克牌,所以 James 的客戶們對估算撲克進(jìn)行應(yīng)用推廣,由此產(chǎn)生了 風(fēng)險(xiǎn)撲克、 價(jià)值撲克等類型。雖然這兩種撲克并未推向市場,但團(tuán)隊(duì)想要借鑒的話,實(shí)現(xiàn)起來并不困難。
測試驅(qū)動開發(fā)
1999年,James 開始學(xué)習(xí)極限編程,從事嵌入式咨詢工作。當(dāng)時一直在為客戶編寫用例并搭建體系架構(gòu)的 James 在 Object Mentor 進(jìn)行了第一次極限編程沉浸式學(xué)習(xí),也開始接觸一些此前未了解過的事。當(dāng)他看到當(dāng)時名為“測試優(yōu)先于開發(fā)”(現(xiàn)在的測試驅(qū)動開發(fā))的演示時,他發(fā)出驚嘆:“哇!我們可以打破對我們沒有的東西的依賴。”因此,如果需要構(gòu)建某個系統(tǒng),并且處于無法與硬件交互的情況下,仍然可以創(chuàng)建軟件,并 通過存根和模擬對象等來開發(fā)尚不存在的事物。
激動興奮之余,受到啟發(fā)的他產(chǎn)生了為做嵌入式開發(fā)的程序員介紹測試驅(qū)動開發(fā)的念頭,也開始做敏捷應(yīng)用于嵌入式軟件的演講,希望 將敏捷介紹給嵌入式開發(fā)的 群體。除此之外,James 也出版了一本以測試驅(qū)動開發(fā)為主題的書籍:《測試驅(qū)動的嵌入式 C 語言開發(fā)》。
從這顆被點(diǎn)燃的火花開始,再到他把敏捷、測試驅(qū)動開發(fā)的火花帶給更多的嵌入式開發(fā)工程師,他就已經(jīng)意識到,語言是不同的,而且不僅是編程語言,人們相互交流的方式本質(zhì)上也是不同的,因?yàn)樗麄冋務(wù)摰氖遣煌臇|西。不同的整體擁有不同的世界,所以游走于不同的群體間就可以學(xué)到不同群體的知識,比如他通過與 Bob 的合作了解到了許多非嵌入式的知識。不論是面向?qū)ο蟆O限編程還是測試驅(qū)動開發(fā),他希望把這些知識帶給更多的程序員。
敏捷本身不是目標(biāo),而是尋找誠實(shí)而高效的方法來交付有價(jià)值的產(chǎn)品,這是 James 一直強(qiáng)調(diào)的觀點(diǎn)。在2011年敏捷宣言十周年的訪談中,他認(rèn)為自己與十年前的自己相比初心不變,一直擁有自我學(xué)習(xí)和進(jìn)步的自主意識,不斷地嘗試、驗(yàn)證、完善一個又一個想法。所以,敏捷帶給 James 的是一種前進(jìn)的方式,而不是可以在此停滯的目的地。如今又是新的十年走過,通過他不斷更新的網(wǎng)站和活躍的動態(tài),我們相信他一直在前進(jìn),從未停滯。
[免責(zé)聲明]
原文標(biāo)題: 敏捷史話(十五):我發(fā)明了敏捷估算撲克牌 —— James Grenning
本文由作者原創(chuàng)發(fā)布于36氪企服點(diǎn)評;未經(jīng)許可,禁止轉(zhuǎn)載。




