推荐序三
众所周知,Knuth大师写了《计算机程序设计艺术》一书,他认为编程是一种艺术活动,理由是我们还无法自动编程,同时编程本身蕴含了优雅、美丽、美学(Elegance、Beauty、Aesthetics)。福楼拜曾说过:“科学和艺术总在山顶重逢。”本书一以贯之,鼓励软件工程师培养代码品位、追求“代码艺术家”(Code Artist)的境界。以“码农”自嘲的程序员,其实是这个时代很fashion的人。
不要被“艺术”这个字眼吓到,本书讲的是实战。作者基于多年在产品项目实践和公司内外培训中对各种误区、问题的观察,并在软件工程师需具备的10点素质能力中抽出了其中3点形成本书。读者若能对其中的建议践行不辍,必可习惯成自然,在软件开发的路上留下坚实的脚印。
我的主要工作聚焦于测试和研发效能,书中关于代码、文档、项目管理三件事的思考和总结,我深以为然。代码质量不是测出来的,而是内建的,从业者理应加大在缺陷预防方面的投入(包括但不限于代码评审、单元测试等);文档是产品长期可维护的关键,但现实情况是,它总跟不上代码的步伐,有个段子说,程序员最讨厌的四件事是“写注释、写文档、别人不写注释、别人不写文档”;项目管理者们(包括RD)面对DDD(Deadline Driven Development,戏称为“上吊绳驱动的开发”)疲于奔命。
互联网系统越来越庞大,当快速迭代证明了业务可行性并实现了业务增长以后,巨大的代码资产库变得极端复杂。还有个段子说:“世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到它。”面对软件开发的根本性困难(复杂性、非一致性、易变性和不可见性),我们需要Back to Basics(回到根本),那些基本守则永远不会过时。实际上,很多公司仍在为了落地这些简单的规则而努力。
《代码的艺术》这本书写作风格朴实无华、内容深入浅出,书中有方法有案例,相信软件工程领域不同背景的读者都能从中受益。非常期待作者在工程能力方面的更多作品问世。
李中杰
高德研发效能中心负责人