敏捷咨詢工具箱(一)──讀書寫代碼活動

來源: infoq  發布時間: 2010-12-26 21:51  閱讀: 553 次  推薦: 0   原文鏈接   [收藏]  

只要功夫深,鐵杵磨成針。          ──宋·祝穆

  在我們咨詢過程中,遇到一些開發技術很薄弱的團隊,大部分人只會通過復制和粘貼的方式寫代碼,然后花費大量的時間進行修改和調試。有些開發人員還只是剛剛從學校畢業,幾乎沒有什么開發經驗。面對這樣的團隊,如何教他們使用敏捷開發方法?如何教他們測試驅動開發?如何教他們簡單設計呢?

  如果連一門語言還沒有完全吃透,還如何談測試驅動開發和簡單設計呢?這是一個很大的挑戰。我回想起自己學習新語言的方法。前些時間我自學了SCALA語言,看完了《Scala程序設計:Java虛擬機多核編程實戰》,但還是覺得很多概念沒有吃透,然后我就把書合上,然后把書上所有的例子獨立寫了一遍,這時才能感覺自己是學了一門語言。于是我用同樣的方法來訓練這個團隊:

  一、找一本合適的書。

  如果要快速吃透一門語言,最快的方法就是找一本好書,系統的把一門語言學習一遍,掃除語言的盲點。我們如何選擇一本合適的書呢,我總結了三個條件:

  1. 選擇國外大師的權威著作,這些大師應該有深厚的開發經驗,這樣可以從書上學到很多編程和設計的最佳實踐。
  2. 書不能太厚,最好在200-300頁左右,足夠介紹完一門語言的常用特性和最佳實踐。那些面面俱到的的厚磚頭一般適合做參考手冊。
  3. 書上的例子一定要經典,這樣比較適合練習。

  因為團隊主要使用C語言,我就在Google上搜索了一下“C書籍推薦”,找到了很多網友推薦的Top C語言書籍。通過我幾天的閱讀和篩選比較之后,最后我為大家選擇了《C程序設計語言》這本書,完全符合上面的三個條件。如果你是使用的其它編程語言,可以參考下面的讀書列表:

  二、具體的讀書計劃

  選擇書之后,就要有一個具體可行的讀書計劃,這樣大家能有節奏的一步一步把書讀完。因為大家都有一些C語言基礎,所以我們把讀書活動安排為每天的家庭作業,每周讀完2章。我們的驗收標準是:在不看書的情況下用TDD實現每章全部的例題(這個后面會有詳細的介紹)。下面是我給大家制定的讀書計劃:

時間

內容

第一周

第1章 導言

第2章 類型、運算符與表達式

第二周

第3章 控制流

第4章 函數與程序結構

第三周

第5章 指針與數組

第6章 結構

第四周

第7章 輸入與輸出

第8章 unix系統接口

  三、光看不練假把式

  有了書,有了讀書計劃,當然這個還不夠。這個活動的重點就是要寫代碼。這是讀書寫代碼活動的驗收條件。要求每個人在不看書的情況下,把書上的例題改造成測試驅動的代碼。一章所有例題都改造完了,才算是把這章讀完。比如:Hello World 的例子

 
#include
main()
{
printf(
"hello, world\n");
}

  要求把這個例子改造成測試驅動的代碼。改造之后代碼分別為:

  測試代碼:

 
TEST(test_case_name, test_greetings) {
EXPECT_EQ(
"hello, world", greetings());
}

  業務代碼:

 
char[] greetings()
{

return ("hello, world");
}

  通過這樣的訓練,每個人不但可以系統的學習一遍C語言的知識,并且可以鍛煉如何用TDD進行開發。

  四、閉環──代碼展示

  如何保證每個人可以完成寫代碼活動并且達到預期的效果呢?我們搭建了一個Subversion,讓每人把自己的代碼提交上去。我們每天早上會有一個代碼展示活動。準備一個投影儀,每個人花3-5分鐘展示和講解自己的代碼,然后集體鼓掌表示認可,然后其他的同事提出問題和改進建議。這樣有三個好處:

  • 讓每人分享自己的代碼和經驗,這是對每人的認可和鼓勵
  • 一個互相學習的氛圍; 通過展示可以學習一下其他同事是怎么寫代碼,怎么寫測試
  • 互相督促,如果沒有完成代碼,這時候就沒有任何東西可以展示了

  我們堅持了一個月之后,這個活動結束了。每個人都感覺很好,系統的把C語言掌握了一遍。一些有經驗的一個開發人員也覺得,系統的學習之后消除了C語言的很多盲點。現在對C語言編程更有信心了,并且還學會了如何做TDD開發。

0
0
 
標簽:敏捷
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()