Frederick P. Brooks(《人月神话》作者)曾在40年前提出一个论断:
复杂度和可变性是软件研发中的根本困难,概念结构在说明、设计和测试上的复杂度,在短期内没法通过更好的编程语言和更好的工具来消除。
当今互联网系统越来越庞大,当快速迭代证明了业务可行性并实现了业务增长以后,巨大的代码资产库变得极端复杂。
项目管理者们(包括RD)面对DDD(Deadline Driven Development,戏称为“上吊绳驱动的开发”)疲于奔命。
有个段子说,程序员最讨厌的 4 件事是:
写注释
写文档
别人不写注释
别人不写文档
面对软件开发的根本性困难(复杂性、非一致性、易变性和不可见性),需要Back to Basics(回到根本),那些基本守则永远不会过时。实际上,很多公司仍在为了落地这些简单的规则而努力。
百度技术学院在2015年推出“代码的艺术”课程,课程聚焦于如何提升软件工程师的工程思维、工程素养和工程意识,从代码构建、软件工程到项目管控和沟通等多维度,立志全面提升软件开发者的综合应战能力。
历时一年多,几易其稿,“代码的艺术”核心内容在2022年春天落地成书——《代码的艺术:用工程思维驱动软件开发》。这本书对一名软件工程师应具备的基本意识和所需掌握的基本方法进行了全貌性介绍,同时内容又不会过于理论化和艰深。
作者介绍
内容架构
具备正确的意识比掌握具体的知识更重要!
不要被“艺术”这个字眼吓到,本书讲的是实战。
第1章首先说明了什么是软件工程能力,阐述了软件工程能力中的素质要求。
第2~8章分别从代码、文档和项目管理这三个方面讲解了实践方法。
- 对于代码,第2章“代码的艺术”对其进行了总体说明,第3章重点说明了代码评审,第4章以Mini-spider为例说明了方法如何运用。
- 对于文档,第5章说明了如何写好项目文档,第6章说明了做研究的基本方法。
- 对于项目管理,第7章简要说明了如何做好项目管理,第8章重点说明了如何做好项目沟通。
精华内容节选
代码不仅仅是一些字符,还是人类智慧的结晶。代码的价值不在于它的长短和字数,而在于其中凝结了多少智慧。代码也可以反映出一个人或一个团队的精神面貌。伟大的系统和产品一定来自优秀的人和团队。
工程能力不是锦上添花、可有可无,而是一种生存能力。很多项目的失败,其实是输在从业者的工程能力上了!
对软件工程师的基本要求是:写好代码,写好文档,做好项目管理。在代码、文档和项目管理三者中,重要性可排序为:项目管理 > 文档 > 代码。
在软件项目中,项目文档主要起到两个作用:提高沟通的效率;提升对于“思考过程”的管理。不会写文档,就不会做设计,不会写文档的人更无法成为高级的软件工程师。
对很多软件工程师来说,项目管理的重要性被严重低估。从笔者日常的观察和调研来看,很多公司里有超过95%的软件工程师都没有系统掌握项目管理方法论。很多项目的低效和失败其实来自落后的项目管理方法。
专家联袂力荐
本书增值资源
增值资源一:
“代码的艺术”课程列入百度技术学院金牌课、一年级新生必修课,数万名软件工程师从课程中受益。
课程覆盖国内多家名企和985高校
- 京东、今日头条、网联、B站、斗鱼等互联网企业开设“代码的艺术”课程。
- 课程多次走进清华大学、南开大学、华中科技大学、武汉大学等985高校课堂,为计算机系本科生带来来自一线企业的技术实战分享,受到同学们的热烈欢迎。
其他增值服务:
读者对象
- 软件工程师和管理者。作者多次以“代码的艺术”为题在多家知名互联网企业做过分享,刚参加工作的软件工程师和资深软件工程师均给出了热烈反馈。
- 计算机和软件方向的在校学生。很多本科生和研究生在学校就已经开始参加较复杂的软件研发项目,而更早地具备正确的软件研发意识,将为一个人后续的职业发展打下良好的基础。
寄语
福楼拜说过,科学和艺术总在山顶重逢。
本书一以贯之,鼓励软件工程师培养代码品位、追求“代码艺术家”的至高境界。
与每一位立志提升中国软件研发实力的读者共勉!