|
只要功夫深,鐵杵磨成針。 ──宋·祝穆
在我們咨詢過程中,遇到一些開發(fā)技術(shù)很薄弱的團(tuán)隊(duì),大部分人只會(huì)通過復(fù)制和粘貼的方式寫代碼,然后花費(fèi)大量的時(shí)間進(jìn)行修改和調(diào)試。有些開發(fā)人員還只是剛剛從學(xué)校畢業(yè),幾乎沒有什么開發(fā)經(jīng)驗(yàn)。面對(duì)這樣的團(tuán)隊(duì),如何教他們使用敏捷開發(fā)方法?如何教他們測試驅(qū)動(dòng)開發(fā)?如何教他們簡單設(shè)計(jì)呢?
如果連一門語言還沒有完全吃透,還如何談測試驅(qū)動(dòng)開發(fā)和簡單設(shè)計(jì)呢?這是一個(gè)很大的挑戰(zhàn)。我回想起自己學(xué)習(xí)新語言的方法。前些時(shí)間我自學(xué)了Scala語言,看完了《Scala程序設(shè)計(jì):Java虛擬機(jī)多核編程實(shí)戰(zhàn)》,但還是覺得很多概念沒有吃透,然后我就把書合上,然后把書上所有的例子獨(dú)立寫了一遍,這時(shí)才能感覺自己是學(xué)了一門語言。于是我用同樣的方法來訓(xùn)練這個(gè)團(tuán)隊(duì):
一、找一本合適的書。
如果要快速吃透一門語言,最快的方法就是找一本好書,系統(tǒng)的把一門語言學(xué)習(xí)一遍,掃除語言的盲點(diǎn)。我們?nèi)绾芜x擇一本合適的書呢,我總結(jié)了三個(gè)條件:
- 選擇國外大師的權(quán)威著作,這些大師應(yīng)該有深厚的開發(fā)經(jīng)驗(yàn),這樣可以從書上學(xué)到很多編程和設(shè)計(jì)的最佳實(shí)踐。
- 書不能太厚,最好在200-300頁左右,足夠介紹完一門語言的常用特性和最佳實(shí)踐。那些面面俱到的的厚磚頭一般適合做參考手冊(cè)。
- 書上的例子一定要經(jīng)典,這樣比較適合練習(xí)。
因?yàn)閳F(tuán)隊(duì)主要使用C語言,我就在Google上搜索了一下“C書籍推薦”,找到了很多網(wǎng)友推薦的Top C語言書籍。通過我?guī)滋斓拈喿x和篩選比較之后,最后我為大家選擇了《C程序設(shè)計(jì)語言》這本書,完全符合上面的三個(gè)條件。如果你是使用的其它編程語言,可以參考下面的讀書列表:
- 如果你用的是C++,我推薦《Essential C++中文版》
- 如果你用的是Ruby,我推薦《Everyday Scripting with Ruby中文版》
- 如果你用的是Java,我推薦《Agile Java 中文版:測試驅(qū)動(dòng)開發(fā)的編程技術(shù)》
- 如果你用的是Scala,我推薦《Scala程序設(shè)計(jì):Java虛擬機(jī)多核編程實(shí)戰(zhàn)》
二、具體的讀書計(jì)劃
選擇書之后,就要有一個(gè)具體可行的讀書計(jì)劃,這樣大家能有節(jié)奏的一步一步把書讀完。因?yàn)榇蠹叶加幸恍谜Z言基礎(chǔ),所以我們把讀書活動(dòng)安排為每天的家庭作業(yè),每周讀完2章。我們的驗(yàn)收標(biāo)準(zhǔn)是:在不看書的情況下用TDD實(shí)現(xiàn)每章全部的例題(這個(gè)后面會(huì)有詳細(xì)的介紹)。下面是我給大家制定的讀書計(jì)劃:
時(shí)間 | 內(nèi)容 |
第一周 | 第1章 導(dǎo)言 第2章 類型、運(yùn)算符與表達(dá)式 |
第二周 | 第3章 控制流 第4章 函數(shù)與程序結(jié)構(gòu) |
第三周 | 第5章 指針與數(shù)組 第6章 結(jié)構(gòu) |
第四周 | 第7章 輸入與輸出 第8章 unix系統(tǒng)接口 |
三、光看不練假把式
有了書,有了讀書計(jì)劃,當(dāng)然這個(gè)還不夠。這個(gè)活動(dòng)的重點(diǎn)就是要寫代碼。這是讀書寫代碼活動(dòng)的驗(yàn)收條件。要求每個(gè)人在不看書的情況下,把書上的例題改造成測試驅(qū)動(dòng)的代碼。一章所有例題都改造完了,才算是把這章讀完。比如:Hello World 的例子
#include
main()
{
printf("hello, world/n");
}
it知識(shí)庫:敏捷咨詢工具箱(一)──讀書寫代碼活動(dòng),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。