推荐序1
我在攻读硕士学位时,学习的是软件工程,从那时起我就和软件工程结下了不解之缘,至今已经35年。在这期间,我的工作和软件工程一直有着紧密联系,我惊奇地发现,软件工程的一些基本原则,历经几十年也没有过时。在软件开发过程中,所有的软件开发者和软件项目管理者都会面临同样的问题。不同的公司有不同的文化背景,虽然开发不同的软件项目有不同的实践过程,但要遵守的基本原则都是一样的。软件开发的方法论和基本原则,并不像语言和工具领域那样活跃,它们都没有明显的变化。
我曾在美国硅谷的软件公司工作,也曾在国内担任大型软件公司研发中心负责人。在百度,我曾领导工程效能部,并一直负责技术培训中心的工作,这让我有机会看到世界先进的软件开发方法和实践,有足够的时间观察、对比中外软件工程师的不同。总结起来,我有两个非常深刻的感受。第一,了解软件开发基本原则的同事,比那些不了解基本原则的,编写代码的质量和开发效率明显胜出一筹。我的同事,有些是软件工程科班出身,有些没有系统学习过软件工程,他们在软件开发过程中体现出来的工程素养很不一样。缺乏工程素养,仅凭自己的直觉理解软件开发,是一件非常糟糕的事情。例如,有些人重视代码编写技巧,而轻视软件开发的工程属性;有些人在对需求缺乏真正理解的时候就急于编写代码;有些人重视软件的功能实现,轻视文档对于软件开发和软件作品的重要性;有些人重视代码的功能性,而对代码的可读性和可维护性是何等重要缺乏足够的认知,等等。这导致软件宕机、返工等质量问题时有发生。第二,中国和发达国家相比,软件开发者的工程素养存在很大差距。作为软件从业人员,我时常想“为什么那么多优秀软件出自国外,而不是中国?”带着这样的问题,我去了硅谷,想一探究竟。几年下来,我发现,美国的软件工程实践确实值得我们借鉴和学习。他们的软件工程师开发出了那么多优秀的通用软件,特别是质量很高的基础软件,这些软件几乎在全世界被使用,他们也积累了很多值得我们效仿的优秀实践,总结出了很多我们必须牢记、付诸行动的软件开发基本原则。
很高兴看到201 Principles of Software Development的中译本即将出版。这本书的出版对于提升国内软件工程师的素养、学习国外先进的软件工程理念,必将做出积极的贡献。这本书通俗易懂,每一个原则短小精悍,既独立成文,又相互联系,是难得一见的软件工程领域的好书,特别适合用于企业培训中心对在职工程师的培训,可使受训者的工程能力和工程素养得到较大提升。
大概在五六年前,我们在百度开始进行软件工程师工程素养专项培训。作为百度代码规范委员会主席,也是百度技术培训中心金牌讲师的章淼博士,特地为此开设了“代码的艺术”课程,并指定201 Principles of Software Development作为教材,这门课程很快就成为百度工程师最喜爱的课程。
因为真喜欢,所以本书的译者们不计较个人得失,付出大量时间和精力进行翻译,目的是让更多同行受益解惑。这本书的译者都是上过“代码的艺术”课程的学员,他们从中获益,也深知这本书能给读者带来帮助。
陈尚义
百度技术委员会理事长
2021年7月写于百度