帮助我成为 Tech Lead 的书籍
为什么要读书?
在提升技能时,我喜欢结合会议演讲、视频教程、书籍、论文、博客文章、边做边学以及教学/博客等多种方式。书籍是学习他人经验、从成功中汲取灵感、并亲身体验他人成就的绝佳途径。
在这篇博文中,我想分享我最喜欢的书籍,它们在我从高级软件工程师晋升为 Tech Lead 的历程中给予了我最大的帮助。它们帮助我拓宽和加深了我对软件工程、软件架构以及构建和运营软件业务的理解。它们教会我挑战和塑造自己的行为和习惯。其中一些书籍对我的个人生活和职业生涯产生了深远的影响。
毋庸置疑,阅读这些书籍并不会让您自动晋升或获得新的技术主管职位。当然,您仍然需要积累经验,犯错,并且需要一点点运气。根据您所从事的具体领域,不断磨练您的技术知识和技能也很重要。这份书单上的书籍并非专注于特定的技术,而是关注适用于任何技术栈和业务的通用原则和概念。
对于书单上的每本书,我都会附上一个简短的概述,帮助你判断这本书是否适合你。为了增添个人特色,我还会附上我从这本书中学到的最宝贵的教训。这不一定是这本书的核心思想,也不是唯一重要的思想,而是最能引起我共鸣的思想。
清单
设计它!
Michael Keeling 所著的《设计它!:从程序员到软件架构师》是一本面向渴望转型成为软件架构师的软件开发者的综合指南。本书提供了一种实用且易于理解的软件架构方法,强调了设计在创建高效软件系统中的重要性。Keeling 的著作涵盖了广泛的主题,从软件架构的基本原理到设计可扩展且可维护系统的实用技巧。
在整本书中,Keeling 倡导一种实践性的、迭代式的软件设计方法,鼓励读者批判性地思考他们所做的架构选择。他介绍了各种架构风格和模式,并探讨了如何评估权衡利弊,并做出符合项目目标和约束条件的决策。本书充满了实际案例、练习和实用技巧,对于那些希望提升软件架构和设计技能的人来说,它是一本宝贵的资源。
我从这本书中学到的最宝贵的教训是:没有“无设计”这回事。“无设计”通常意味着工程师的头脑中存在着多个隐含的设计,这些设计彼此之间并不协调。要进行明确的、协作的、迭代式的设计,并以书面形式记录设计!
释放它!
Michael Nygard 所著的《发布!:设计和部署生产就绪软件》是一本面向软件开发人员和架构师的重要指南,旨在帮助他们应对在生产环境中创建可靠运行软件的挑战。本书深入探讨了设计、部署和维护能够经受实际操作严苛考验的软件的复杂性。Nygard 强调了从设计过程伊始就考虑生产现实的重要性,并倡导从仅仅编写代码到交付一个具有弹性、可扩展且可维护的系统这一思维模式的转变。
Nygard 深入分析了软件系统在生产环境中遇到的各种陷阱,例如网络问题、不可预测的负载模式以及硬件故障。他引入了稳定性模式和反模式等概念,阐述了如何构建能够优雅地处理故障并在压力下保持稳健的系统。本书充满了真实案例和案例研究,展现了糟糕的系统设计在生产环境中可能造成的灾难性后果。《Release It!》对于致力于确保系统不仅功能齐全,而且在面对现实挑战时具有韧性和可靠性的软件专业人士来说是一本宝贵的资源。
我从这本书中学到的最宝贵的一课是:每个软件工程师都应该以生产环境为中心来构建软件。生产环境中的软件运行着你的业务,影响着你的客户,并决定着成败。
站点可靠性工程
《站点可靠性工程:谷歌如何运行生产系统》由 Betsy Beyer、Chris Jones、Jennifer Petoff 和 Niall Richard Murphy 合著,深入探讨了谷歌用于管理其大规模高可靠性系统的实践和原则。本书引入了站点可靠性工程 (SRE) 的概念,这是一门将软件工程的各个方面与 IT 运营相结合的学科,专注于创建可扩展且可靠的软件系统。
作者均为 Google 经验丰富的 SRE 从业者,分享了他们在构建、部署、监控和维护稳健且高弹性系统方面的专业知识。他们深入探讨了 Google 使用的具体策略和技术,例如设定服务级别目标 (SLO)、有效管理变更以及在发布速度和服务可靠性之间取得平衡。本书涵盖了从 SRE 团队的组织架构到事件管理和事后反思文化等技术实践等一系列主题。本书为读者提供了一个难得的机会,让我们得以一窥全球最精通的工程组织之一的内部运作,对于任何参与大型系统运维、维护和扩展的人来说,都是一份宝贵的资源。
我从这本书中学到的最宝贵的教训是:没有完美的系统。通过明确定义和测量 SLO 和错误预算,你可以在可靠性和速度之间做出明智的权衡。
改变你的问题,改变你的生活
玛丽莉·亚当斯所著的《改变你的问题,改变你的人生:领导力、教练和人生的12个强大工具》探讨了我们提出的问题可能对我们的生活和事业产生的深远影响。亚当斯提出了“问题思维”的概念,这是一种通过深思熟虑、充满正念的提问来转变思维、行动和结果的方法。本书强调了我们自问的各种问题,从限制性、评判性的“判断者”式问题,到更开放、建设性的“学习者”式问题,都能显著影响我们的人生观和结果。
亚当斯以引人入胜的叙事阐述了她的观点,讲述了一个人如何应对生活中的挑战,并学习如何运用“问题思维”的原则。这种方法为个人提供了实用的工具和技巧,以提升他们的沟通、决策和解决问题的能力。通过培养学习者的心态,并提出更好、更有力量的问题,读者能够建立更积极、更高效的个人和职业关系。本书对于领导者、教练以及任何希望提升与他人沟通能力、更有效地应对复杂情况的人来说都尤为宝贵。
我从这本书中学到的最宝贵的一课是:我意识到自己经常处于“评判者”的心态。更加留意这一点,并有意识地选择转变为“学习者”的心态,这几乎成了我解决任何挑战的超能力。
《思考,快与慢》
丹尼尔·卡尼曼的《思考,快与慢》是对心理学和经济学的开创性探索,深入探讨了我们如何思考和决策。卡尼曼介绍了两种主导我们心理过程的不同思维模式:“系统1”(快速、直觉和情感)和“系统2”(更慢、更慎重、更合乎逻辑)。在整本书中,卡尼曼探讨了这两个系统对我们的判断、决策以及我们感知周围世界的方式的影响。
本书全面探究了影响我们日常思维的各种认知偏差和启发式方法。卡尼曼阐述了我们的直觉系统1(它通常对我们很有帮助)如何也会导致严重的错误和偏差。他还探讨了系统2的功能和局限性,强调了系统2如何受到系统1快速判断的影响和支配。本书汇集了数十年的研究成果,对人类思维和行为的复杂性提供了深刻的见解。对于任何有兴趣理解我们在个人和职业情境中选择和行动背后的心理过程的人来说,这都是一本必读之作。
我从这本书中学到的最宝贵的教训是:我认识到两种模式都有其价值,但也各有弊端。我学会了更加警惕那些影响我思维的偏见和启发式思维,并有意识地选择何时依赖系统1,何时使用系统2。
原子习惯
詹姆斯·克利尔 (James Clear) 的《原子习惯:轻松且行之有效的养成好习惯和打破坏习惯的方法》是一本变革指南,深入探讨了习惯的科学原理,以及微小的改变如何带来显著的效果。作者提出了一个全面的框架来理解习惯的形成,并提供了培养好习惯和打破坏习惯的实用策略。本书的核心理念是,微小的改进,或称“原子习惯”,随着时间的推移,可以积累成改变人生的重大成果。
克莱尔强调系统的重要性远胜于目标,他认为专注于实现目标的过程和系统比执着于目标本身更有效。他介绍了行为改变的四大法则——一套简单易行的指导习惯养成的原则。这些原则包括:让暗示显而易见、渴望更具吸引力、反应更容易、奖励令人满意。通过结合科学研究、个人故事和现实世界案例,克莱尔阐述了如何将这些原则应用于生活的各个方面,从健身、财务管理到生产力和个人成长。《原子习惯》提供了一个易于理解且引人入胜的蓝图,帮助人们养成持久的习惯,对于任何寻求积极持久改变的人来说都极具价值。
我从这本书中学到的最宝贵的教训是:通过对我的日常生活做出许多小的改变,这些改变只会对我的工作效率产生很小的影响,但所有这些习惯结合起来会产生巨大的影响。
有意识的商业
弗雷德·科夫曼的《良知商业:如何通过价值观构建价值》是一本发人深省的著作,探讨了个人诚信与职业成功的交集。作者提出,创建成功且可持续发展的企业的关键在于良知管理实践,其中个人价值观和道德原则是决策过程的首要考虑因素。本书认为,商业成功不仅关乎经济利益,也关乎个人和职业成就的实现。
科夫曼探讨了良心经营的方方面面,包括责任感、责任感、情商、沟通技巧以及建设性地解决冲突的能力。他强调领导者能够激发信任、培养开放诚实的文化,并以同理心引领企业的重要性。通过现实世界的案例、实用建议和练习,科夫曼指导读者如何培养这些技能并将其应用于职业生涯。
我从这本书中学到的最宝贵的一课是:无条件响应能力的概念。现在我不断提醒自己,无论情况如何,我都有能力和责任选择如何应对任何情况。“响应能力”是“response”(响应)和“ability”(能力)的双关语,强调有意识、主动地做出反应的能力。
首先,打破所有规则
马库斯·白金汉 (Marcus Buckingham) 和科特·科夫曼 (Curt Coffman) 合著的《首先,打破所有规则:世界最杰出管理者的独特之处》基于盖洛普公司的研究,提出了一种激进的管理方法。本书挑战了关于领导力和管理的传统观念,指出最高效的管理者往往能够打破常规。
本书的核心理念是,优秀的管理者不会墨守成规,也不会严格遵循传统的管理原则。相反,他们会打破常规,专注于员工的个人优势,而不是试图纠正他们的弱点。作者认为,这种方法能够提高员工的敬业度、生产力和整体工作满意度。
Buckingham 和 Coffman 总结了区分世界顶尖管理者的关键洞见和策略。这些洞见和策略包括:甄选人才而非仅仅填补职位空缺;明确正确的结果而非规定正确的步骤;关注员工的优势而非纠结于劣势;找到合适的人选而非简单地提拔他们。
我从这本书中学到的最宝贵的教训是:关注优势而非劣势的重要性。我学会了接受自己的弱点,并运用工具和策略来弥补,而不是试图“修复”它们。相反,我投入时间和精力来发展自己的优势,并努力为我领导的人做到这一点。
荣誉提名
在我从高级软件工程师晋升为 Tech Lead 的过程中,我发现还有很多书籍也非常有价值。它们更侧重于特定技术,因此我没有将它们列入主书单。尽管如此,我还是想在这里提一下,因为根据你所在的领域/行业,它们可能与你相关。
- Alex Petrov 的《数据库内部原理》 。这是我读过的最好的数据库书籍。它以通俗易懂的方式涵盖了数据库的所有基础知识。对于任何数据库工作者来说,这都是必读之作。
- Martin Kleppmann 撰写的《设计数据密集型应用程序》。这是一本构建数据密集型应用程序的综合指南。它涵盖了从数据库和数据处理到分布式系统和流处理等广泛的主题。
- Marcus Hirt 和 Marcus Lagergren 合著的Oracle JRockit:权威指南。对于任何对 JVM 内部机制感兴趣的人来说,这都是一本很棒的资源。
- Michael Kerrisk 著的《Linux 编程接口》。这是一本非常详尽的 Linux 书籍,涵盖了从基础系统调用到进程组、信号和套接字等高级主题的广泛主题。
最后的想法
虽然书籍是很好的学习工具,但它们并不能取代亲身体验。你仍然需要自己犯错并从中吸取教训。与他人讨论你读过的书,了解他们的观点并挑战你自己的观点,也会有所帮助。或许你可以加入读书俱乐部,或者和同事或朋友一起读书。
希望这份书单能对你的职业生涯有所帮助。如果有哪本书启发了你,并且你认为它应该被列入这份书单,请在下方评论区留言告诉我。
如果您喜欢这篇文章,您可以在 ko-fi 上支持我。
文章来源:https://dev.to/frosnerd/books-that-helped-me-become-a-tech-lead-3831