在今年的的ThoughtWorks China away day上,我見到了這本書的作者neal ford, 我們還有過簡單的交流,并一起去爬了長城。慚愧的是當時我并沒有讀過他寫的這本書。直到今天我拿到了這本書,并花了大半天的時間通讀了一遍。看完以後,我覺得這本書真是太好了,非常值得一讀。
但是,我想讀這本書的讀者,大體會分為兩個反應。一種是看了一下前面,覺得沒有意思,大概翻了翻,發現作者真是太羅嗦了,就丢到了一邊。另一種是愛不釋手的從頭看到尾,看到有些段落會會心一笑,有些段落則加上重重的标記,并決定馬上就要開始實踐。
如果換做半年前的我,我是第一種反應,而現在,我當然是第二種反應。主要是這半年在ThoughtWorks的曆練,使我變得越來越有成效。列舉一個真實的例子。在我的前一個項目中,我們做的産品是一個送出保險單的系統,使用者要講過一個一個的page
flow直到完成一個保單。如果我要開發的或者測試的feature在第7頁上,我每次都需要輸入大量的資料,點選大量的按鈕從第一頁走到第7頁。試想每天要重複N次真讓人崩潰。後來有人就寫了一個JavaScript腳本,可以一次填充一頁的資料,并自動跳到下一頁。我們把這個腳本儲存到一個bookmark上,每次隻要點選6下就能到第7頁。
也許你們說這樣已經簡化很多了,但是追求卓越的我們并沒有止步。我後來了解了selenium IDE這個在firefox下的插件。這個插件作者在書中有提到過。我用selenium IDE錄制了一個腳本,隻需要點選一個按鍵,程式就會自動的走到第7頁。這樣比手動輸入速度至少提高了10倍以上。正如作者所說,我們這樣的盡量實作自動化操作節省時間不是第一目标,最重要的目标是不要讓程式員在一遍遍的手動操作中變傻,而是讓我們精力變的更加集中,focus到更具有價值的地方上去。
我覺得每個程式員都想變得高效,但是面對新的方法,新的工具總是或多或少有點畏懼心理,這是因為他們無法體會到采用一種新方法或者新工具帶來的震撼的效果。是以對于我們程式員來說絕對要勇于嘗試,勇于突破現狀。
回顧了一下作者在書中列舉的自己感興趣的東西,順便對自己做一個總結。(本人使用的是mac pro,是以tool和plugin隻關心mac上的。)
加載器。作者介紹了quicksilver,而我使用的是launcher。我一般使用它快速打開某個application,還有嘗試其他功能,接下來要好好挖掘下。
剪貼版。我還真不知道可以有多個寄存器的剪貼闆,out了,立馬download了jumpcut,打算試用。
IDE 快捷鍵。身為程式員每天與IDE打交道最多了,一定要熟練運用每一個快捷鍵。作者提到了快捷鍵我基本都在用。
搜尋優于導航。使用command line來進行各種搜素是我的短闆,可憐的我隻會基本的shell指令,這部分需要加強。
虛拟桌面。這個還真沒嘗試過。
自動化法則。我們已經使用了一些自動化技術,比如使用maven或rake來運作build,使用selenium來建構web自動化測試。但是和作者書中講到的還差很遠。
規範性法則。目前我們隻實作了将部配置設定置資訊統一管理起來,這一友善還有很大的提高。
TDD。在我們公司,如果你寫了一段沒測試的代碼,你的pair會毫不留情的喊你全部删掉,先寫測試,再寫實作。
代碼的度量。目前我們有一些測試覆寫率之類的度量,但是圈複雜度這些還是一片空白。
靜态分析。這塊在我們項目中是一片空白,我已經把它記到sticker,強烈需要馬上應用。
元程式設計。正在學習groovy,ruby等動态語言,隻是看到了元程式設計的妙處,還沒有切身體會。
多語言程式設計。好吧,我承認這是目前的趨勢,當我嘗試了ruby on rails是如此高效時,我已經對它欲罷不能了。