攀巖和極限編程
Rock Climbing and Extreme Programming
Ye Yongqing
IT department, Europeloan Bank
Gulledelle 92
1200 Brussels, Belgium
+32 2 4020120
yongqing.ye@europeloan.com
翻譯:劉焱
2002年7月25日星期四
摘要
這篇文章以攀巖來描述 XP 的實現,作者發現極限編程的許多思想,很適合于攀巖運動,而且作者在攀巖運動中,體現了這些想法。
關鍵詞
教練(Coach),XP(極限編程),測試優先(Test First),配對(Pair),保持穩定(Keep Stable),覆蓋率(Coverage),沒有加班(No overtime)。
內容
在布魯塞爾(Brussels)的市中心,有一間室內攀巖場。雖然我經常想去嘗試,因為我看到電視上,那些攀巖者可以很容易地爬上很高的巖壁 …,但我以前卻從來沒有去過。對于攀巖來說,我絕對是個新手。
不管怎樣,我想我會喜歡它,而且我會從中得到很多樂趣。
Winston 是一位攀巖專家;他有 5 年的攀巖經驗,他建議我們這個禮拜六去攀巖。禮拜六到了,有 4 個人參加這次活動,Winston、 Massimo、 Gifford 和我,除了 Winston 外,其它 3 位都是攀巖的新手。我們這些人都是在歐洲貸款銀行(EuropeLoan Bank)搞 IT 的。
歐洲貸款銀行是一家年輕、充滿活力,發展迅速的全球網上銀行。它于 1999 年 11 月在布魯塞爾成立時,只有三個人以及一間辦公室。這家公司成長非常迅速:目前已在 5 個國家開展業務,每個國家都有辦公室,大約有 50名左右,直接和非直接的雇員,它的資金達到了 3 兆比利時法郎(3,000,000 million BELGIUM FRANCS)。歐洲貸款銀行的主營業務,是以極具競爭力的利率,提供住屋抵押貸款。
因為快速用戶需求變化,極限編程的方法已經成功實現大概一年了,我們都很喜歡極限編程,雖然有些人一開始對極限編程感到有點怪。我們也都很喜歡寫程序,寫程序是一種樂趣。Winston 是我們的 CTO,有時候,他也是我們開發團隊的教練。
在攀巖方面,Winston是一位很好的導師和教練。他先給我們講了一些基本知識:例如怎么打 8 字結(tire 8),怎樣平穩地放繩子,當人掉下來地時候,怎樣抓住保護繩。然后我們在地上做配對(pairs)練習:一個人做攀登者,另一個則充當保護(blocker)。然后我們交換角色(exchange pairs),在地上一遍又一遍地練習。我們發現我們這么多人正好,不多也不少,無論是交換角色還是交流想法都很有效率。如果我們誰忘記了什么事情,像怎么打 8 字結之類的,我們就直接問其它 3 個人,很快就可以得到反應(交流很好)。我們花了半個小時做練習。
現在,我們已經學會了攀巖的基本知識,到了真正開始要攀爬室內巖墻(indoor-wall)的時候了。在要攀的巖墻上有許多石頭,它們有不同的顏色和編號:例如,3A 的石頭是綠色的,4B 是黃色的,4C 是紅色的,5A 是紫色的。Winston 告訴我們顏色代表了不同的難度級別,當然了,我們首先選擇了綠色,我們要從最簡單和最容易的開始。
攀登者和保護者都將對方的繩子做了仔細的檢查:打的結是不是一個雙8字結,安全扣有沒有扣好。然后攀登者爬了大概 1 米,他故意摔下來,以測試保護者是否能安全的保護他。對于安全系統,我們做了全面的測試(test everything),如果一個測試失敗了,我們必須立刻把問題解決掉。當我們開始朝墻頂爬的時候,我們必須絕對確保安全系統正常工作。
現在攀登者開始攀登了。初級水平相當容易,我們沒費什么勁,就爬到了墻頂。我們又爬了一次,然后互換角色:攀登者來做保護者,保護者來做攀登者。
我們都急于嘗試更難的級別,因此我們來到了巖墻的另一邊。Massimo 先爬,我做保護。很不幸,Massimo 爬到一半摔了下去。他又試了一次,但還是爬到了一半,就摔了下去。我建議地說,他之所以摔下去的原因,是因為爬得太快了。
輪到我了,我開始一步一步往上爬,這個級別要比前面那個初級水平難多了。當爬到一半的時候,有一塊石頭太小了,使我不能保持平衡,我摔了下來。再來一次,這一次我腦子里保持著這樣一個念頭:我應該總是保持一種穩定的狀態。當我要向下一塊石頭移動時,我先試著騰出一只手來,看我是不是還能保持穩定,如果可以,我就用那只騰出來的手抓住下一塊石頭,然后試著提起一只腳。如果還能保持穩定,我就用那只提起的腳,踩在下一塊石頭上。我一次又一次的試,試著慢慢移動。有時,當我試著松開一只手或一只腳時,我不能保持穩定,我會立刻意識到,在我移動的過程中有什么錯誤。然后,我就平穩的調整我的位置,甚至我會向后移動到先前的位置?偸潜3址定狀態的原則,使我能夠平穩的移動,并且在移動到下一塊石頭以前,盡可能的做一些試驗。
此舉使得教練對我留下了深刻的印象,因為這是我第一次攀巖。
我成功的到達了墻頂,我覺得有些累。當我慢慢的下到地面時,我吃了些甜點,喝了點可樂,然后坐在地上開始休息。我并沒有爬上最難級別的壓力,我只是在享受攀巖的樂趣。
當我體力恢復以后,我試了一下那個最難的級別。哦,真是太難了…… 我只爬了一米就摔了下來。再試一次,但還是摔了下來。當我嘗試第三次的時候,教練來做了一下指導,但我一開始還是失敗了。
我要求教練親自爬一次,這樣我可以從他身上學到一些技巧。
我發現他先對這巖墻看了幾秒鐘,他的眼睛慢慢的從地面掃到墻頂,然后才開始爬,他很容易,而且很快的就爬到了墻頂。我發現在我摔下來的地方,他利用了一塊很小的石頭,但我在爬的時候卻沒發現,我詢問他怎么那么容易就爬上去了。教練告訴我應該做一個簡單的計劃(在編碼以前做一個簡單的設計)。
我聽從了他的建議,我也看了看那面墻,試著做個簡單的計劃。我試著確定了一條最好的路線,還找到一些很難發現的小石頭。
然后我開始爬了。瞧,我爬過剛才摔下來的地方。我試著再往上爬,但真的是太難了,我爬到兩米的時候摔了下來。我又試了一次,但還是摔了下來。
我放棄了,我需要更多的體力。我不應該把自己搞得很累,所以我們離開了攀巖場。
當我離開的時候,我感覺我應該可以爬上那個最難的級別。我之所以失敗,是因為我沒有足夠的經驗,沒有熟知一些應該遵循的模式(patterns)。我有勇氣,當我離開的時候,并沒有感到相當累,因為我沒有延長攀巖的時間,我感覺攀巖是那么的有趣。
文章來源于領測軟件測試網 http://www.kjueaiud.com/