题记: 在敏捷实践的间隙,由忠利推荐,草览了名作《浮现式设计》,受益匪浅,写下读后感聊表心得,以期抛砖引玉。

套用一书评中的话,翻译出来,本书的书名小众了点(Emergent Design,要怎么翻?),看似一本软件设计方面的专业书籍,又似一本行业版哲学书,实际上,作为行业同仁,为明确自己的方向,这本书绝对值得一读。

从作坊到工厂再到组织,软件开发经历了近四十年的发展,在我看来已是欣欣向荣,却被Bain一语道破:短短数十年,岂是新兴行业发展所能倚仗的时间历程?

大师不愧是大师,站得高也看得远,当我们这群无名小辈热衷于软件工程化时,他们已敏锐地发现行业专业化的方向;当我们亦步亦趋地学习着敏捷开发时,他们已上升到演进的本质。

本书作为敏捷开发的经典之一,重点讲述的即是软件的专业化及演进本质。

所谓专业化,绝不是简单地把软件开发类比成建筑工程,设计师是总工,程序员是工人,而是将它看作一个独一无二的行当,我的地盘我做主,谁敢班门来弄斧?大师一句话,醍醐灌顶,经过了个人英雄式的开发过程,上升到工程化的管理模式,以至近年来流行的敏捷开发团队,无疑都是从业者们探寻行业真理的必经之路,虽未找到放之四海皆准的真理,却总结出了很多最佳实践,成为有价值的模版(最著名的当数设计模式),为专业化进程提供了标准和依据。

由此,作为这一饱受争议的行业成员,是时候解放思想实事求是,代表本行业的专业化进程,代表标准实践的应用前景,代表先进软件的发展方向了。

所谓演进,即标明软件并非硬梆梆一段代码,而是有活力能进化的一份子。说得有点邪乎哈,某个不得志的程序员写下毕生杰作后抑郁隐退,而那段静态代码吸收了主人的情感,演化成智能生物,意欲消灭愚昧的人脑世界,建立机器码的智能社会……可以拍部科幻大片,再来几部前传后记——跑偏了,赶紧切入正题。

这个演进,实质是被动体,需要我们来推动软件的演进,将软件看作我们的孩子,不伤害它,让它健康成长。作为专业化道路上最显而易见又最实用的演进方式,模式,重构,测试驱动开发,一个都不能少。

模式不是概念不是炒作,是实实在在的经验积累,严格说来不仅仅是设计模式,而是行业规范的模式,实战中不存在用还是不用的问题,而是要遵守而且如何遵守的问题。

重构,一听就是个大家伙,将原有架构大卸八块甚至更多块,剔除所有程序,再换上全新的架构组件,装饰上新鲜出炉的整洁代码——尽管重构必不可少,却也并非如此可怕。预构,能从设计伊始就为日后的重构打下铺垫;现有的重构技巧也能为重构过程提供帮助,并减少风险。

测试驱动开发,看似可有可无,实际上却为一开始的设计提供依据,为此后的重构减轻工作量。尤其是针对各种模式的测试方式,衍生出了针对各种设计模式的测试模式,让人眼前一亮,也更易于理解各类设计模式了。

大师一部书,解我七成疑,好书同分享,自在IT行。

付豆

2012.1.20

本文经得付豆同学同意,发表在此。付豆同学后曾受托,在公司内部交流会讲述本书,书中的知识得到了有效的放大,相信能够对广大开发人员,设计人员有更多的提升。