从手机点外卖,到运营银行,再到发射人造卫星,整个世界的运作都已经离不开各种软件系统的支持。软件行业的蓬勃发展,复杂需求场景的不断涌现,使得软件开发逐渐从早年的手工作坊演变成聚集大量专业人员智慧的浩大工程,需要应用专业的软件工程知识来进行规划管理。过去这些年,我们国家在互联网应用类软件上取得了举世瞩目的成就,但在基础架构、商业软件等方面还有很多值得向先进软件大国学习借鉴的地方。这本来自拥有行业40多年经验的大咖Randall Hyde的书就是一本非常优秀的软件工程领域著作,既有坚实的理论基础,也有作者丰富经验的思考总结,还给出了很多具有参考价值的工程设计、文档实例,对不同读者的偏好都有一定的覆盖。如果你有志于成为一名优秀的软件工程师,希望设计开发出历久弥新、持续为业务场景产生价值的软件系统,为国家的软件产业进步贡献一份自己的力量,那么将此书常备案头,勤加实践会是一个很好的选择。
——周远 观远数据联合创始人兼首席科学家
软件开发是一项系统工程,绝非很多初学者想象的那样,把自己关在房间里埋头捣鼓代码就完事儿了,而是涉及方方面面与很多不同的人和事打交道。如果你之前没有参与过大型商业软件的开发,立志要成为一名专业的产品经理、软件工程师、测试工程师、SCM或项目经理,那么千万别错过《编程卓越之道(卷3):软件工程化》这本书。通过本书,你可以快速掌握涵盖软件开发全生命周期的关键知识点,对面临的挑战准确评估,与他人的沟通也会事半功倍。
——高宇翔 《Scala编程》译者,资深软件开发工程师和系统架构师
自敏捷运动以来,在软件开发中编写源代码之外的工作似乎越来越被人嫌弃,编写文档尤其如此。然而,真正有经验的人可不这么想——他们考虑的是如何适时写出适当的文档。让我们一起来看看Randall Hyde这个“老江湖”是怎么想、怎么做的。
——董越 《软件交付通识》作者,DevOps资深专家
我参与开发过从零开始的项目,也维护过有将近三十年历史的遗留代码,在项目的推进过程中多次经历需求、人员等的变更。这些年我一直在学习和思考,什么样的软件开发模型能够有效应对软件生命周期里的各种不确定性,如何提高代码以及文档的可读性和可维护性并确保它们之间的一致性。最近我有幸阅读了《编程卓越之道(卷3):软件工程化》,作者Randall Hyde在书中对这些问题进行了深入的探讨。我相信其他读者和我一样,都能从这本书中汲取软件工程的宝贵经验,为以后的职业发展奠定基础。
——何海涛 畅销经典《剑指Offer》作者,美国微软前资深开发专家
本书为卓越的职业软件工程师提供了一份翔实的“硬技能”指南。本系列的书虽然称为《编程卓越之道》,但内容已经远远超出编程本身。本书提供了一份完整的卓越软件工程师知识技能大纲,让你从软件工程的角度重新认识编程,帮助你快速了解并掌握当今世界上卓越软件工程师必备的专业技能和知识体系。虽然本系列书都是“大部头”,但每个章节的内容都不容错过。
——顾宇 《卓有成效的工程师》译者,腾讯T11专家
本书对软件工程的概念和领域做了精彩的介绍,详略得当,重点集中在最为经典与实用的软件工程知识上,在此基础上论述了如何平衡团队合作上的考虑、程序员个人的卓越贡献,以及程序员自身的成长之路,是对软件工程体系在更广阔层面上的重新思考与理解。本书文字简练,译文准确、流畅,十分值得细读。
——苏丹(网名su27)《Python一行流》译者,豆瓣用户产品后端负责人
《编程卓越之道(卷3):软件工程化》对程序设计流程的基本范式和最佳实践做了系统性的归纳,对项目管理中的人员配备、度量指标、进度安排、文档设计等进行了深入探讨,并配有详尽用例。软件工程与管理人员可以从中获得有益的参考。
——田渊栋Meta(原美国“脸书”公司)人工智能研究院(FAIR)研究员及资深经理
对很多初学编程的人来说,从学会编程语言后,到完成一个真实的软件,整个过程仍然有着巨大的鸿沟。就像那个有名的段子,一个例子程序是可以成功运行一次的,而一个要交付给用户的软件则是要在任何时候都能运行的。把一个例子程序变成可交付的软件,就需要软件工程学的帮助。《编程卓越之道(卷3):软件工程化》就是回答这个问题的一本书。本书从古典软件工程开始,讨论软件开发效率的度量方法、曾经流行的开发方法,一直到现在正在流行的敏捷开发等。使得读者可以一览软件工程的发展史,并了解不同发展阶段的进步。其后的UML和软件工程文档,则从可操作层面介绍了各种实用的软件工程技术。人类之间的沟通效率是非常低的,而UML和文档就是提高沟通效率、降低重复而无效沟通的便捷手段。相信通过本书,读者可以学习到软件工程领域的诸多方法和技巧,并在未来的软件开发项目中获得更高的效率。
——刘晓明(gashero)软件开发专家
现代的编程工作早已不是单打独斗的个人英雄主义时代,而是更强调团队集体的输出。这本书将现代软件工程中的经典模型,以及各种细节都讲到了——流程上,如黑客马拉松式的编程、瀑布模型、迭代模型等;细节上,如专注能提高工作效率,站立会能避免无休止地拖延会议时间。除此之外,还介绍了应该如何编写需求文档、软件设计文档、测试文档。无论你是一个技术负责人、项目经理,还是一个普通员工,了解现代软件工程都很重要。只有这样,个人才能更好地在团队中发挥价值。
——张彦飞 《深入理解Linux网络》作者,公众号“开发内功修炼”创办人,前搜狗专家开发工程师