在今年的的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是如此高效时,我已经对它欲罢不能了。
作者总结了这个多,我也给大家推荐一个爱不释手的tool:一款浏览器插件vimium,支持chrome和firefox。这是一款很酷的插件,能让你浏览网站的速度至少提高50%,你再也不用用鼠标去点击你想访问的链接,使用vimium只需要按几个键就行。借用作者的一句话,没有它我都不知道该怎么浏览网页了。