学徒模式是什么
学徒模式(Apprenticeship Pattern)尝试给那些走在职业进步的道路上按工艺模式来工作的人提供指导。所有的模式都是从我们自己和那些我们访谈过的人的经验中提取而来。跟任何好的模式一样,它们会引起你的共鸣,让你觉得这并非玄门独创,因为你周围的人已经在使用它们。这些模式的另一共性是它们的生成性(generativity)。每次你运用它们都会得到不同的结果,如果用在合适的上下文中,它们会改善你的工作环境。它们并不是每次运行都保证得出同样结果的算法。相反,它们是解决一组问题并造出新问题的工具。诀窍在于:你要用自己的判断来选择自己更想解决的问题。
本书是以模式语言的形式来组织的。模式语言是针对特定领域中常见问题的一组相互关联的解决方法。最初的模式语言是Christopher Alexander在《A Pattern Language》一书中所写的,在那本书中,他描述了250多种用于设计各类建筑的模式,从厨房到房屋到城市甚至社会。Ward Cunningham[1]和Kent Beck在1990年把模式语言引入软件行业,结果引来了大量的文献、书籍甚至聚焦设计模式的学术会议。软件设计模式著作中最有名的例子是“四人帮”写的《Design Patterns》[2],而Martin Fowler的《Refactoring:Improving the Design of Existing Code》,(重构:改善既有代码的设计)是模式语言方面更好的例子。明确地说,你正在读的这本书并非一本关于如何设计软件的书,而是一本关于如何设计软件开发职业生涯的开端并为你在该领域成就卓越打下基础的书。
[1]Ward Cunningham,美国程序员,世界上第一个wiki的开发者,设计模式和极限编程方面的先锋。
[2]全称《Design Patterns:Elements of Reusable Object-Oriented Software》,中译本《设计模式:可复用面向对象软件的基础》,机械工业出版社出版,机工出版社还出版了该书的同名影印版和双语版。该书的作者一共有四位:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides,常被称为“四人帮”。