序
我见证了本书的创作过程,深知它对每一位软件工程师的重要价值。为之作序,我万分荣幸,也不胜惶恐,恐不能尽言其妙,而使读者与它失之交臂。
程序员是职业焦虑感最强的职业之一。技术日新月异,公司起起伏伏。工程师们渴望快速成长,然而得成长法门者并不多。本书为程序员走向卓越带来了系统、实用的指导。
卓越的软件设计需要集齐三个要素——审美、格局和技能,它们是设计能力精进的三个法门,也是贯穿本书始终的三个主题。
第一个主题“审美”。审美是鉴别好设计的能力,它是卓越软件设计的前提。
本书“品味篇”从软件设计的产物——代码的视角,定义了设计美的标准。“美”更体现在全书的内容之中,不管是优雅的示例代码、测试脚本,规范简洁的领域模型表达,还是对设计和实现模式的娴熟应用,它们都凝结了张刚博士多年的设计功力,最终体现为设计的产物之美。阅读和体会它们,潜移默化,必将提高你对设计美的品味和追求。
美的设计来自美的过程。我曾多次观摩张刚带领团队进行架构设计和编码实现,过程如水银泻地,流畅自如,面面俱到又能删繁就简。过程之美也体现在本书的结构安排之中,全书从原始客户诉求的挖掘开始,分析、设计再到实现,层层推进、有条不紊。对这一动态过程效率和质量的极致追求,是更高层次的设计审美。
第二个主题“格局”。它要求我们跳出局部,从整体上看待软件设计,构建相互关联的实践体系。本书把这一体系称为“精益编程实践”。
本书“专业篇”以高质量和高效率的开发为目标,涵盖了需求分析、系统和架构设计、代码实现这三个领域,并且通过领域模型贯穿始终,包含:在需求分析过程中,发现业务概念,构建领域模型;从领域模型出发划分子域,分解和分配职责,并定义接口和契约;用领域模型指导代码实现,并规范系统的持续演进。
一个完整的实践体系需要一致的目标、清晰的主线,以及共同的原则。本书将其总结为:一个根本挑战、两大核心价值和三大设计原则,它们是贯穿全书的灵魂。抓住这些本质,我们就可以从更高的维度,更本质地看待软件设计。让各环节的软件设计实践不再孤立,打开作为一个设计者的格局,走上技能提升的快车道。
第三个主题“技能”。技能是做好软件设计的根基,离开各个环节卓越的实践技能,审美和格局都只能是空中楼阁。
本书“卓越篇”为设计的每个环节都提供了完整的技能指导,在细节上又做了精心的取舍。保证完整性的同时,又控制了篇幅。做到这一点很不容易,必须从问题出发,抓住背后的本质。以需求分析环节为例,本书没有罗列各个流派的实践,而是单刀直入,解析需求分析的目标和挑战,并构建需求分析的金字塔,为金字塔的每一层提供了最高效实用的实践,既保证系统和本质地认识需求分析,也保证你能立即去落地和应用这些实践。
对每一个设计环节的实践技能,作者都做了类似的萃取和总结,并反映了业内最前沿实践。比如:如何有效落地由外而内、测试先行的开发,提高设计的效率和质量;如何正确地分离关注点,做出灵活响应变化的正交设计;如何落地领域驱动的设计,让领域模型引领整个过程,成为统一语言;如何持续演进设计,保障系统的长期质量和效率。
审美、格局和技能是设计能力精进的三大法门。审美是前提,格局则打开向上的空间,以两者为基础不断修炼技能,帮助软件从业者在数字化的世界中走向优秀和卓越。
希望你能和我一样享受阅读本书的过程,沉浸在设计之美中。更祝愿本书能陪伴你的职业上升之路。
何勉
阿里巴巴资深技术专家
《精益产品开发:原则、方法与实践》作者