雖然這種推薦的coderetreat形式相當(dāng)普遍,但也存在著許多可以靈活變通的地方,這取決于coderetreat的組織者打算強(qiáng)調(diào)參與者對于哪一方面的理解。比方說,在 遺留coderetreat
中,測試是針對一段“糟糕”的現(xiàn)有代碼片段進(jìn)行創(chuàng)建的。盡管如此,對以上這些指導(dǎo)原則的選擇有著很好的理由,因此,如果你希望活動不要丟失原本的好處,為了避免這樣的風(fēng)險(xiǎn),最好還是不要過于偏離這些指導(dǎo)原則。當(dāng)然,對其中某一方面的改動不會減弱活動的基本原則的,那就是使用一個完全不同的kata(例如選擇生命游戲之外的項(xiàng)目)。選擇要活動中要加入哪些限制條件同樣也完全取決于組織者。比方說,第一場 活動中可以選擇完全不加入任何限制,或者可以在某場活動的中途加入某種新限制條件。每種限制所造成的難度可能是完全不同的,這取決于參與者本身的經(jīng)驗(yàn)。比方如,如果在學(xué)生中間舉辦coderetreat活動,我們會選擇只加入一些較簡單的限制條件,例如“ping pong”,它指的是每組中的成員之一(請記住,我們始終進(jìn)行結(jié)對編程!)去編寫測試(只編寫測試代碼),而另一名成員將努力讓測試通過(讓兩位成員在活動中互換角色也是一個不錯的主意)。
在coderetreat網(wǎng)站上,有許多建議提出了各種不同類型的限制條件。比方說,對于一組更資深的參與者來說,你可以嘗試 TDD as If you mean it
方式,這是一種由Keith Braithwaite最早提出的一種高級測試驅(qū)動開發(fā)實(shí)踐。另一種常見的限制條件是“不得使用可變的狀態(tài)。”不過你也要當(dāng)心,有些限制條件是有問題的,它們可能會使編碼過程陷入停頓而無法繼續(xù),稍后我們會對此展開討論。
你可能已經(jīng)注意到了,標(biāo)準(zhǔn)的指導(dǎo)原則中并沒有提到編程語言方面的限制。有些時間,活動中可能會提議使用某種語言,但大多數(shù)的coderetreat活動都會讓參與者打開他們自己的筆記本電腦、使用任何他們所熟悉的語言和測試框架。因此,在一場coderetreat活動中常常會出現(xiàn)多種不同的語言,這也意味著在結(jié)對的過程中,你可能會發(fā)現(xiàn)你完全不了解你的拍檔所使用的語言。這種現(xiàn)象會讓你感到興奮或是受挫,以及程度如何,完全取決于你個人的偏好,以及你的拍檔是怎樣的人。不過,這一點(diǎn)或許也對我們使用的語言提出了一個疑問,即它能夠在多大程度上表現(xiàn)出我們的設(shè)計(jì)思路。
Coderetreat帶來的好處
那么,參與coderetreat活動到底有什么好處呢?總的來說,它的好處在于你能夠發(fā)掘出作為一個程序員的真實(shí)水平,而無需擔(dān)心在工作中常常面對的項(xiàng)目期限和上司的期望。因?yàn)闆]有人強(qiáng)迫你必須在一次活動中完成一個解決方案,因此你可以自由地發(fā)掘新的思路,并對自己處理該問題的方式進(jìn)行反思。因?yàn)槟愕呐臋n總是在變換,并且每場活動中總是出現(xiàn)新的、具有挑戰(zhàn)性的限制條件,經(jīng)常會促使你以不同的方式看待并解決問題。
對于coderetreat來說,回顧是必不可少的重要環(huán)節(jié)。在每場活動之后都會進(jìn)行簡單的回顧,而在全天的活動結(jié)束后,每個參與者都會面對以下三個問題:
如果今天你學(xué)到了某些東西,那么你學(xué)到了什么?
如果今天有什么事讓你感到吃驚,那是什么樣的事?
如果你打算在下次活動中進(jìn)行某些改變,那是什么樣的改變?
我們希望,如果你積極參與coderetreat社區(qū)的活動,那么你應(yīng)該盡量找到某些方法,讓它使你對軟件開發(fā)感到更有樂趣,并且更有干勁。以下是我們的一位參與者的留言:
我會尋找更多的樂趣,并進(jìn)行更多的嘗試。我也會嘗試?yán)眠@次機(jī)會提升自己的水平,而不是滿足于自己已經(jīng)習(xí)慣的工作。
關(guān)于作者
Dr David Parsons是新西蘭-奧克蘭梅西大學(xué)(Massey University)信息技術(shù)系的副教授。除了進(jìn)行學(xué)術(shù)研究之外,他也經(jīng)常為軟件教育協(xié)會和Knowledgehut提供專業(yè)課程的培訓(xùn)。David在英國開始了自己的職業(yè)生涯,從那之后,他作為教育家/培訓(xùn)師、研究者和從業(yè)者,踏足了整個歐洲、北美和大洋洲。在2003年移居到新西蘭之前,他在Valtech公司Emerging Technologies部門擔(dān)任總監(jiān),這是一家總部位于倫敦的國際顧問公司。他的從業(yè)經(jīng)歷包括在南安普頓索倫特大學(xué)(Southampton Solent University)擔(dān)任高級講師,在位于渥太華的公司The Object People里擔(dān)任培訓(xùn)師和顧問,在BEA Systems的國際教育部擔(dān)任首席技術(shù)專家。他也是有關(guān)計(jì)算機(jī)編程和web應(yīng)用程序開發(fā)方面的書籍的作者,并且對于敏捷軟件開發(fā)實(shí)踐進(jìn)行了深入的鉆研。他于2014年在IEEE Software雜志上首先發(fā)表了有關(guān)coderetreat的學(xué)術(shù)研究報(bào)告。他還是英國電腦協(xié)會(British Computer Society)以及新西蘭IT專家學(xué)院(New Zealand Institute of IT Professionals)的一位專業(yè)成員。