编者按:人生如逆水行舟,不进则退。开发者想要保持自身的竞争力,做到所向披靡,知识储备必不可缺。这就意味着,简单的代码阅读远远不够。
快速迭代的信息社会,技术前进的速度远超人类历史上的任何时期,技术攫取呈现出碎片化的特征,开发者更倾向于通过网络搜素寻求问答。然而,这种浅尝辄止的阅读方式,会给人深沉的浮躁感,难以做到为自己切实所用。
新语言、新工具持续更替,让人目不暇接,学习过程中必定伴随着各种琐碎的问题。事实上,许多伟大的技术人在以前就遇到过同样的难题,并且提出了相应的策略和解决方法。虽然具体问题具体对待,但其中蕴含的思考方式,所凝结的智慧成果,只会历久弥新,给开发者们以新的启迪,提纲挈领,助力自身的技术升级。
本文总结了业界的十本经典书籍,我们来一一探索吧。
《The Pragmatic Programmer》
Andrew Hunt,David Thomas 著
《The Pragmatic Programmer》,即程序员修炼之道。这本书直击编程陈地,适用于所有编程语言,创建用户乐于接受的、可工作和易维护的代码。它不仅会改变你的编程习惯,还会改变你的性格。Andrew Hunt在多个行业工作过,电信、银行、金融服务和公用事业,还有一些外来领域,如医学成像、图形艺术、网络服务。他擅长于将已验证的技术实践和前沿技术相结合,创造新奇而实用的方法。所以,这本书的见解涉及了许多有趣的领域,从个人责任到职业发展,直至保持代码灵活和易于改编重用的架构技术,开发者能够从中学到防止软件变质、消除复制知识的陷阱、编写灵活、动态和易适应的代码、避免出现相同的设计、用契约、断言和异常对代码进行防护等内容。
“程序员入门书、终极书、DRY、KISS···从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。”——知乎,萧井陌
“程序员技艺具备的古老特点,此书表达的很清楚。此书涉及了软件工程角度,个人技艺如何配合的方方面面。”——豆瓣读书,皂角菌
《The Mythical Man-month》
Frederick Brooks 著
《The Mythical Man-month: Essays on Software Engineering》,即《人月神话:软件项目管理之道》。这本出版于1970年的书被奉为软件行业的《圣经》,即使在现在看来也是字字珠玑。Frederick Brooks是1999年的图灵奖得主,致辞中曾提到,“今天我们所看到的计算机体系结构、软件工程,以及三维计算机图形,均受惠于布鲁克斯的开创性工作,是他改变了这些领域的面貌。”他在软件工程领域的最广为人知的经典著作《人月神话》,让软件工程学真正进入人们的视野。
《人月神话》对软件开发过程的几个重要关键点,提出了独到的见解:提倡外科手术式的团队组织;软件项目的核心概念要由很少的人来完成,以保证概念的完整性;软件开发中最大的风险往往不是技术的缺陷,而是缺少沟通;在开发中,要保持适度的文档;在软件开发的过程中,只有适度改进,没有包治百病的银弹。
“书中记述的前辈们在解决这些窘迫所体现的才智和热情,是永远值得后人借鉴的,也将启迪我们开拓未来之路。”——豆瓣,pythia
“Software Development 的圣经。如果只能读一本书,那么是这本书。”——豆瓣,浪人BabyL
《Clean Code: A Handbook of Agile Software Craftsmanship》
Robert C·Martin 著
《Clean Code: A Handbook of Agile Software Craftsmanship》,即《代码整洁之道》。软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都必须承认。Rober C.Martin,Object Mentor公司总裁,也是面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问。作为编程领域的佼佼者,他给出了一系列行之有效的整洁代码操作实践,并提出一种观念:代码质量与其整洁度成正比。本书阅读对象为一切有志于改善代码质量的程序员及技术经理,内容涵盖从命名到重构的多个编程方面,虽然书中所有的例子都用的Java,但其经验适用于任何编程语言。
“用整理代码的决心替代创造废话的冲动。你会发现自己成为更优秀、更乐观的程序员。”——豆瓣,陈
“本书中提倡写代码犹如写文章,对此观点我印象深刻!如何才能写出整洁代码呢?总的原则无非是KISS(Keep It Simple Stupid)。”——豆瓣,Wuqifu
《The Clean Coder: A Code of Conduct for Professional Programmers》
Robert C·Martin 著
《The Clean Coder: A Code of Conduct for Professional Programmers》,即《代码整洁之道:程序员的职业素养》,这是本列表中Robert C·Martin的第二本书,建议在上一本书之后阅读。成功的程序员在以往的工作和生活中都曾经历过大大小小的不确定性,承受过永无休止的压力。Robert C. Martin以自己40余年编程生涯的心得体会,介绍了真实软件技艺中的各项原则、技术、工具和实践,展示了怎么以自豪、自尊和自信的心态进行软件开发,怎么取得卓越表现和丰硕成果,怎么做到有效沟通和确切估算,怎么以坦诚的心态面对困难,助力专业软件开发人员具备令人敬佩的职业素养。这本书探讨的主题可能不是你希望的,但一定是你需要的。
“创造性的输入,产生创造性的输出!这本Bob大叔定义专业程序员为目的的书,从个人的精进练习到时间管理,测试,需求,压力,到理想的团队,描述作者的程序员修炼之道。”——豆瓣,liuwill
“这本不厚的书,给了普通程序员走向“专业”的灯塔。知易行难,“专业”的路上总有各种各样的拦路虎,也许我会再走作者标明了的错路,我也并不孤单,但心里知道这是错误的,不要走远。每看到这种书,低沉的士气会再次振奋。”——豆瓣,银光
《Refactoring: Improving the Design of Existing Code》
Martin Fowler 著
《Refactoring: Improving the Design of Existing Code》,即《重构:改善既有代码的设计》。Martin Fowler,世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。本书揭示了重构的过程,解释重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。其中提出的重构准则将帮助开发者一次一小步地修改代码,从而减少开发过程中的风险。
“大师Martin Fowler的经验之谈,看后有种醍醐灌顶、欲罢不能的感觉。重构也是当今敏捷开发一项不可或缺的技艺,建议所有有设计和项目开发经验的开发者都应读一下。”——豆瓣,Kiwi
《Working Effectively With Legacy Code》
Michael Feathers 著
《Working Effectively With Legacy Code》,即《修改代码的艺术》。即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,系统的腐化程度会日积月累。Michael Feathers是世界级的面向对象技术专家,以丰富的软件项目开发经验著称。他以独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力,针对大型的、无测试的遗留代码基,提供了从头到尾的方案,让开发者能够更有效地应付它们,将遗留代码基改善得具有更高性能、更多功能、更好的可靠性和可控性。本书是一部里程碑式的著作,更是代码修改技术的集大成之作,可以大大提高对代码和软件开发的领悟力。
“许多似曾相识的代码不断地出现在书中,而作者举重若轻的处理手法,正是让我有拍案惊奇的地方。实际上,每个手法都不是什么很高超的技法,但正是因为见识过类似的代码,才能体会到这种手法的价值所在。”——豆瓣,dreamhead
《Code Complete: A Practical Handbook of Software Construction》
Steve McConnell 著
《Code Complete》,即《代码大全》。真正的一本百科全书——960页的最新修订,让人真切感受到沉甸甸的知识。这是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节:从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。书中所论述的技术不仅填补了初级与高级编程技术之间的空白,也为开发者们提供了一个有关编程技巧的信息来源,大有裨益。
“作者的写作风格很客观很务实。作者把每个章节最吸引人的地方,用巧妙的方法展现出来。并且代码构建其实也可以变得非常具有艺术性。现在我很庆幸当初自己看完了它。”——豆瓣,Joshua
《Head First Design Patterns》
Eric Freeman/Elisabeth Freeman/Kathy Sierra/Bert Bates 著
《Head First Design Patterns》,即《深入浅出设计模式》。这本书是大多数非技术人员所选择的编程书籍,以诙谐、幽默、图文并茂、打破传统著书的方式,由浅入深地详解了设计模式的精神及重点。这本书涵盖了解决现实问题所需要的主要模式,帮助开发者创建功能性的、优雅的、可重复使用和灵活的软件,明确权衡每个模式的利弊。除去大多数书籍都谈论到的模式实现方法,本书也解释了模式设计缘由。全书以Java程式语言为范例,是程式设计课程的最佳教材,其最新版本包括了Lambda中的Java 8更新。
“作者把原本属于设计模式的来源还给设计模式的学习和应用过程,让读者能够从生活中的例子随着论述的展开,逐步深入设计模式的核心,这个也是这本书能够不负其初衷的重要原因。”——豆瓣,Jarod
“读这本书不仅仅是学习知识,而是在学习一种思考的方法,学习一种认知的技巧,学习一种成长的阶梯。总之,用你闲暇的时间来读这本书,并不亚于你专注的工作或学习。”——豆瓣,曹操
《Peopleware: Productive Projects and Teams》
Tom DeMarco/Tim Lister 著
《Peopleware: Productive Projects and Teams》,即《人件:脑力密集产业的人才管理之道》。《人件》和《人月神话》被誉为软体书中「两朵最鲜艳的奇葩」。前者关注的是「软体开发」本身,后者关注的是软体开发中的「人」。以往不认为是问题的领导问题、开会文化、由不同世代所组成的混合团队,以及,最常用的工具不见得是助力,反而可能是阻力。以辛辣而幽默的笔触,加上务实的建议、丰富的专案经验,这本书一出版就引起轰动,一针见血地指出了团队管理的问题点──脑力密集产业的核心是人,应该给予这些工作者充分的自由与信任。
“管理,不仅仅是技术,更是充满人文精神的艺术。《人件》中的一些很精辟的箴言远远超过了软件管理的范畴。没有大量的数字、精密的论证,也不需要这些。这正是《人件》深入浅出的长处。”——豆瓣,QingRen
《Soft Skills: The Software Developer’s Life Manual》
John Sonmez 著
《Soft Skills: The Software Developer’s Life Manual》,即《软技能:代码之外的生存指南》。同样,这不是一本关于编程的,却是每个开发者都应该读的书。John Sonmez是“Simple Programmer”网站的创始人,也是软件开发人员的人生导师,帮助软件工程师、程序员和其他专业技术人员推动事业进步,过上更充实的生活。这本书涉及开发者的生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”:从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造自身,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。
“一名成功的软件开发人员,不能只编写代码,还要有精彩的人生。”——豆瓣,曲天
本文转自极客头条