译者序

我不是译者,仅是一名校对者。大家让我来写这篇译者序,盛情难却,无法推脱。

本书英文版是我于2017年至2020年在百度公司举办“代码的艺术训练营”时使用的教材,这本书的内容深受训练营学员的好评。由于之前没有中文版,对于部分英文基础不太好的同学来说,阅读有些困难。在2019年年底,十多名“代码的艺术训练营”的毕业生自发组织起来,开始了对此书的翻译工作。我从2020年5月初开始校对工作,完成全书的校对,花费了80~100小时。由此推断,负责翻译的同学花费了数倍于此的时间。非常感谢这些同学的无私付出!

初识本书英文版是在二十多年前,当时我还在清华大学读书,在老师的指导下做一个有一定规模的软件研发项目,在项目的研发过程中,遇到了不少软件工程方面的问题。于是在那一年,我阅读了大约十本软件工程方面的图书,包括Code Complete(《代码大全》)、Rapid DevelopmentProgramming Pearls(《编程珠玑》),等等。本书是我当时在清华大学图书馆里发现的“宝贝”。我必须说,此书对我的影响非常大,很多我现在经常提起的软件工程原则,都源于对这本书的阅读。

2006 年我离开清华大学,到目前为止已经在工业界工作了十多年,先后就职于多家公司。我发现,虽然我们的软件研发规模和二十多年前相比有了很大的发展,但是在软件研发理念方面的进步还是太慢了。有太多的软件从业者,虽然已经工作多年,但对软件研发的基本理念和原则了解得还是不够多。根据我的多次调查,阅读超过两本“真正的”软件工程图书的人都非常少。很多软件工程师,仍然使用非常低效甚至是错误的方法在工作!

于是在2015年,我在百度公司开办了“代码的艺术”面授课程,其中就重点推荐了本书的英文版。而在2017年做“代码的艺术训练营”的时候,这本书就成了指定教材。为什么要选择这本书呢?因为它对软件工程的内容覆盖全面,且篇幅短小。对于一个短期培训班来说,如果选择类似《代码大全》这样的图书,阅读所需要的时间就有些太多了。在这种情况下,本书的英文版是一个性价比更高的选择。另外,我常常感觉,对于一个软件工程师来说,具备正确的意识比掌握具体的知识更重要。如果有正确的意识,即使不记得具体的知识点,也可以在需要的时候查阅相关资料,而反过来则不是这样的。

必须要说的是,本书的英文版写于1995年,距今已经有27年。这也是很多人担心的地方—计算机技术发展得如此之快,这本书是不是已经过时了?但是,正如我在“代码的艺术”课程中对“知识”“方法”“精神”三者所做的对比,方法的变化速度远远慢于知识。尤其是在本次校对过程中,我惊奇地发现,书中真的可以说是“过时”的原则不足5个!是软件研发的方法变化太慢,还是书的内容太深刻?我想两者兼而有之。在此,我必须要对本书的作者Alan M.Davis致敬,并对书中所有原则的贡献者和历史上所有软件工程领域的大师们致敬!

在此,我要隆重介绍翻译本书的百度公司的同学们,他们是叶王、马学翔、吴斌、王冰清、杨光、曾浩浩、李殿斌、甘璐、李子昂、肖远昊、贾儒、王莹、张苗、李双婕、荣文升。另外,经大家商定,将本书因翻译出版获得的稿酬全部捐赠给公益事业。

最后,所有阅读本书的软件工程师和所有准备从事软件研发的同学们,我祝愿本书能助你们取得更大的成功!

章淼 博士

BFE开源项目发起人、《代码的艺术》作者

2021年6月14日写于百度公司