写作过程

本书的构思始于2005年初,Stickyminds.com请Dave写关于软件工艺(Software Craftsmanship)的专栏。那时Dave认为自己是个(有经验的)学徒(apprentice),唯一让他写起来感觉舒服的主题就是学徒期(apprenticeship)。这使他开始考虑关于这个主题写些什么更好。大约就在那时,Dave读到一篇由软件开发者Chris Morris发表的网志[1],其中提到了吉他手Pat Metheny,而“只求最差”这一概念成了模式语言的种子。这粒种子很快从Dave的网志[2]成长为Dave用来组织最初一些模式的个人wiki。最初的一些模式就是从Dave到那时(2000—2005)的职业生涯中提取出来的。

Dave知道,这些所谓的模式不能真正称为模式,除非它们确实是常见问题的一般解决办法。他开始通过三种方式从同行那里寻求反馈。第一,他开始在自己的网站上公开发表这些模式,通过公众点评的方式寻求反馈。第二,他开始访谈一些软件开发领域的思想领袖(主要通过电子邮件),并获得他们对最初几种模式的看法。第三,也是最重要的一种,Dave开始访谈一些经验较少的从业者,用他们新近的经验来检验这些模式。这些经验较少的从业者们还把一些Dave不曾遇到的或者在他的经验中不曾觉察到的模式介绍给他。就在这些关于学徒期的访问中Dave访问了Ade,经过双方同意,Ade加入到这个项目中并成为一名合著者。

我们(Dave和Ade)访谈了生活和工作在全世界很多地方的人们,从澳大利亚到印度再到瑞典。讨论的形式也五花八门,从LiveJournal网站的评论,到伦敦金融区中心一座美丽的被炸教堂遗址里进行的访问。

与此同时,其他一些人,如Laurent Bossavit、Daragh Farrell和Kraig Parkinson,他们勇敢地在各种练习班、研讨会和新手训练营中尝试使用这些模式。之后他们把收到的反馈传给了我们(Dave和Ade),而我们则竭尽全力地把这些反馈合并到我们的笔记中。

在2005年末的时候,我们在“程序的模式语言”(Pattern Languages of Programs,PLoP)研讨会[3]上发起了一个主题小组。在PLoP上,我们得以将自己的工作呈现给那些经验丰富的模式作者(也称为牧羊人,shepherd)们,他们在模式的组织形式方面给了我们许多反馈,并用自己的程序开发经验测试了我们的论断。

大概在同一时间,来自O'Reilly Media的Mary Treseler联系了我们,提出了出版这些模式的建议,并鼓励我们继续写作。她帮我们做了一些编辑工作,两年之后我们就书的出版达成协议。在那段时间里,通过电子邮件、用户组和讨论会,甚至午餐时的谈话,我们同数不清的同行就这些模式进行交流,同时我们继续在http://apprenticeship.oreilly.com在线社区上寻求反馈。

最终的结果就是你手上的这本书。这是一部基于与从业者之间的无数次交流的作品,也是一部对已有的关于学习、最佳效率心理学,以及所有我们能找到的与掌握知识相关的文献进行广泛研究的作品。随着阅读的深入,你将看到,除了通常的软件领域的名人之外,我们还会引用外科医生、舞蹈编导还有哲学家的话。我们相信,向任何一门学科的高手学习,我们都能收获很多。

[1]http://clabs.org/blogki/index.cgi?page=/TheArts/BeTheWorst.

[2]Red Squirrel Reflections(红松鼠沉思录),参见:http://redsquirrel.com/cgi-bin/dave。

[3]http://hillside.net/plop/2005/group1.html.