前言
本书是笔者围绕软件工程能力所做的系列培训的内容汇编。这些内容来源于笔者20多年以来对软件工程的学习体会和项目实践,以及对中国工业界软件工程师的观察和教育实践。
关于软件开发的书已经有很多,软件工程师阅读最多的书或许是对某种编程语言的深入解读,或许是对某种架构方法的阐述。或许由于意识上的偏差,很多软件从业者即使已工作多年,但由于对软件工程理论相关图书阅读较少,因此对软件研发的基本理念和原则还是了解得不多。
编写本书的目的是提升软件工程师的基本意识。对于一名软件工程师来说,具备正确的意识比掌握具体的知识更重要。如果具备正确的意识,即使在工作中不记得具体的知识点,也可以在需要的时候进行查阅,而反过来就不是这样了。
本书对一名软件工程师应具备的基本意识和所需掌握的基本方法进行了全貌性介绍,同时内容又不会过于理论化和艰深。由于篇幅限制,本书对很多内容只做了入门性介绍,并向希望继续深入学习的读者提供了相关图书参考建议。
真诚希望读者能够从本书开始,更多地去阅读软件工程方面的专业图书,因为软件工程师对软件研发的学习和深入理解是永无止境的。
本书的目标读者包括:
(1)软件工程师和管理者。本书中的多个章节已经是百度内部软件工程师的必修课内容。笔者也曾多次以“代码的艺术”为题在多家知名互联网企业做过分享,不仅仅是刚参加工作的软件工程师给出了较好的反馈,很多资深软件工程师也反馈良好。
(2)计算机和软件方向的在校学生。本书介绍的很多方法是笔者在大学时就开始使用的。很多本科生和研究生其实在学校就已经开始参加较复杂的软件研发项目了,他们可以将本书介绍的方法立刻应用在这些项目实践中。更早地具备正确的软件研发意识,将为一个人后续的职业发展打下良好的基础。
本书的内容来源于培训课程材料或演讲材料,在章节编排和内容组织上仍然保持了培训课程和演讲的原貌。每一章都有明确的主题,可以独立阅读,而全书的内容又形成了一个完整体系。
全书组织如下(见图P.1)。
第1章首先说明了什么是软件工程能力,阐述了软件工程能力中的素质要求。
第2~8章分别从代码、文档和项目管理这三个方面讲解了实践方法。
对于代码,第2章“代码的艺术”对其进行了总体说明,第3章重点说明了代码评审,第4章以Mini-spider为例说明了方法如何运用。
对于文档,第5章说明了如何写好项目文档,第6章说明了做研究的基本方法。
对于项目管理,第7章简要说明了如何做好项目管理,第8章重点说明了如何做好项目沟通。
图P.1 本书组织结构