2019年初级程序员必备书单:《代码整洁之道》《重构》等
编者按:在程序员的职业生涯中,总是需要学习新知识(也许不光是程序员)。本文作者Khalil Stemmler最喜欢的学习方法之一就是看书,他总结了业内人士高度评价的9本书,希望能给程序员带来启发。原文标题Books that Junior Developers should read in 2019。
无论你是刚入行的新人,还是经验丰富的程序员,你都会意识到工作并非你提高自己编程技能和知识的最佳途径。
你在业余时间所做的事情、你掌握自己所学知识的方法……是这些因素最终决定你在这个行业能否成功。这就是为什么对我们程序员来说,增长的心态如此重要。
作为程序员,我们学习和改进的方法特别多,比如:结对编程、学习在线课程、参加聚会、更多的工作经验、做项目和联系导师。
我个人最喜欢的学习方法之一是:选择一本不错的书看,试着从那些在这个行业浸淫多年的人那里学习一些东西。
这都是我的个人建议,是我认为所有程序员(尤其是初级程序员)都应该在某些阶段来阅读的书目。业内专业人士高度评价这几本书,它们有可能对你的工作质量和你的发展、学习速度产生深远影响。
其中一些书和技术细节没关系,而更多地关注于优秀程序员也应当重视的人际关系和专业性,它们为你提供了一些实用规则。
1. 代码整洁之道
作者:Robert C. Martin(Uncle Bob) 鬼知道它到底是干嘛的啊。这样的代码可能可以运行,但当我们需要修改它的时候,我们必须祈祷写这几行代码的人还在公司,祈祷他们能够以某种方式破译这些可能已经运行了好几年的代码。 如果不注意代码的可读性和可维护性,我们最终只会得到这样的代码,每个人都不敢碰它,如果它崩溃了,我们就完了。 我们是软件匠人。建造一座房子与建造一个应用程序在原则上没有太大的不同。我们需要注意细节,否则,如果一开始做得不对,将来要修复这些细节可能会花费不菲。 作者:Robert C. Martin(Uncle Bob) 这本书不是一本技术书籍,它是一本教你成为业内专业人士的书——专业人士指那些在面对挑战、不确定性和压力时,将继续把开发软件视为一种工艺,并决心坚持自己的专业价值的人。 《代码整洁之道:程序员的职业素养》在评估、重构、测试、处理冲突、日程安排、避免疲劳等方面提供了很多实用的建议。这本书全都是值得信赖的建议,毕竟它的作者花了几十年时间做这件事。 它教给我们很多东西,最好的之一是:作为一名程序员,如何保持正直,何时说“不”,以及如何拒绝。 Martin Fowler是我最喜欢的作家之一。首先是因为他很搞笑,他写书也特别Fowler,很搞笑。另一个原因是,他非常擅长用简单的话解释复杂的话题,而且可以说是非常简单,不会让读者感到疲劳。 作者:Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides 这是一本关于设计模式的开创性著作。你可能会问,什么是设计模式?设计模式就是软件开发中常见问题的通用解决方案。如果你熟悉这些模式,你将发现你能够大大减少解决这些问题需要的时间。 良好的设计模式意识还能让你与其他程序员更有效地沟通解决方案。 这的的确确是本老书,但它仍然是当前最好的参考之一。如果你对这个话题感兴趣,想了解一些更新的东西,我还推荐Eric Freeman的《Head First设计模式(中文版)》(购买链接:京东丨当当丨亚马逊)。 要使大型代码库能够继续扩展,我们需要将代码合乎逻辑地分割成不同的部分。这样做的目的是对代码进行分区,使独立的团队能够在不影响任何人的情况下处理系统的这些部分。 支持代码向这一发展方向的基本概念是领域驱动设计(Domain-Driven Design,缩写DDD)。它是一种软件开发方法,将“问题域”(现实世界)中存在的问题建模为多个解决方案域。 如果代码库非常庞大,那么DDD就非常重要。大型企业部署DDD,将团队分配到公司代码库的各部分。 这本书比其他几本书更具有技术性和挑战性,但是如果你熟悉这些概念,你就会很好地理解当今的大公司是如何保持代码库的可管理性和可扩展性的。 作为一名程序员,我们应该努力保持平衡。不幸的是,保持良好的平衡并不是大多数程序员拥有的品质。事实上,作为一名程序员,投资于你的学习、健康和整体幸福感是非常重要的。 “软技能”指的是编程能力之外的重要东西,比如生产力、职业目标和理财能力。Sonmez还探讨了投资、他在33岁退休的方法、黑客健身技巧和维持人际关系等内容,其中很多东西在编程界少有人涉及。 作者:Robert C. Martin(Uncle Bob) 《架构整洁之道》关于基本的软件设计原则和模式,你将能够使用它们来应对这些挑战。 “整洁的架构”,谢谢Robert! 本书中最好的几个关键点是依赖关系的成本、稳定代码与非稳定代码的对比以及SOLID原则:一种编写代码的方法,使代码更容易理解、更灵活、更易于维护。 这本书其他非常有用的方面是“尖叫的软件架构”和“按组件封装”的概念,它们交给你如何组织模块,以便“尖叫”着告诉他人这些项目到底是干什么的。 时间是我们生命中唯一的、最有价值的资产,我们应该更有效地利用它。在工作中,我们很容易陷入困境,花费大量时间修复bug、浪费精力。高效的工程师能够在更短的时间内完成更多的工作,减少重复性工作。 我们可以通过一个叫做“杠杆”的框架来减少在重复性工作上浪费的时间和精力。 杠杆能够帮助你确定哪些工作的产出成果和投入时间比最差。这个框架适用于任何事情。 经过他们多年的反思,这本书介绍了一些在你的职业生涯中必须遵循的基本程序员哲学,比如:程序员应该有“一次性完成,或把它自动化”的哲学。 它包含了一些简单但细致的建议,在写新一行代码或开始一个新项目之前,你应该将这些建议牢记在心。 作为一名初级程序员,书籍确实是提高知识和技能的最佳工具之一。书籍往往有很高的投资回报——毕竟编程还是很赚钱的2. 代码整洁之道:程序员的职业素养
3. 重构 改善既有代码的设计
4. 设计模式:可复用面向对象软件的基础
5. 领域驱动设计 软件核心复杂性应对之道
6. 软技能 代码之外的生存指南
8. The Effective Engineer(高效工程师)
9. 程序员修炼之道:从小工到专家
最后的话