背景
最近看了《代码整洁之道——程序员的职业素养》这本书,做一个记录。作者的另一本书《代码整洁之道》之前也看过了,后续也会找机会补上。
本文我会挑几个我觉得比较有意思的内容做整理。
简介
以下简介内容来自ChatGPT
《代码整洁之道——程序员的职业素养》是由Robert C. Martin(Bob大叔)所著的一本技术书籍。该书主要探讨了程序员应该具备的职业素养和相关的实践方法,涵盖了程序员职业发展、团队合作、代码质量、职业道德等多个方面。
具体来说,这本书分为四个部分:
第一部分:职业发展 该部分主要介绍了程序员职业发展的各个阶段,包括新手、高级程序员、技术领袖等,并介绍了如何通过自我学习、开源贡献、参加技术会议等方式提升自己的职业能力。
第二部分:职业素养 该部分主要介绍了程序员应该具备的职业素养,包括代码整洁、测试驱动开发、重构、模式与惯例等,以及如何通过这些实践方法提高代码质量和开发效率。
第三部分:团队和管理 该部分主要介绍了团队合作和管理的相关知识,包括团队组建、项目管理、沟通技巧、面试和招聘等,以及如何通过良好的团队合作和管理提高项目的成功率和开发效率。
第四部分:职业道德 该部分主要介绍了程序员应该遵守的职业道德和伦理,包括知识产权、隐私保护、版权和许可证、安全和漏洞披露等,以及如何通过遵守职业道德和伦理保护用户和公司的利益。
总之,《代码整洁之道——程序员的职业素养》一书从多个方面探讨了程序员应该具备的职业素养和实践方法,帮助读者更好地理解自己的职业发展和工作职责,提高自己的技术水平和职业素养。
读书笔记整体概览
勇敢说出来
作者认为,面对无法按期完成的需求,应该勇敢对业务方说不,而不是用一些『试试看』『努努力』等模糊的词汇给出虚无缥缈的希望。
『试试看』『努努力』等词,往往会被误解为承诺。这些词又代表着你之前并未尽全力,承认自己还有余力可施。因此,只要你许诺自己会去『尝试』,你其实还是在承诺你会确保成功。这样压力又要由你自己去承受了。如果最后尝试没有达到预期的结果,也就表示你失败了。
时间管理
作者认为会议也是有成本的,而我们要对自己的时间负责,学会拒绝或者离席一些不必要的会议。
而当会议途中出现观点冲突,且议程停滞的时候,需要通过数据来选择更好的观点。也可以通过争论双方互相列举自己观点,以及对应的作证信息,让大家投票来解决冲突。
当自己的观点没有被采纳时,也不要消极对待,要尽力配合对方的行动。
对于时间管理,作者也推荐了番茄工作法,25分钟工作与5分钟休息组合成一个周期,在25分钟期间插入的事情暂时不去处理,等到25分钟结束后,先去处理这些被插入的事项,再执行5分钟的休息,以此重复进行。
预估
我们经常对完成项目所需的时间进行预估,作者认为不同角色对预估的理解不同,业务方认为预估代表着承诺,而开发方认为预估就是猜测。
开发人员只有在确切知道可以完成的前提下,才会给出承诺。但在实际中,业务方需要知道一个尽量准确的预估值,来做出合适的计划。
因此,作者提供了一个计划评审技术(Program Evaluation and Review Technique,PERT),来帮助开发人员进行预估。
首先需要列举出三个预估时间:
- O:乐观预估。一个非常乐观的数字,如果一切都异常顺利,你可以在这个时间内完成。这个预估的发生概率应该是小于1%。
- N:标称预估。这是概率最大的数字。
- P:悲观预估。这是最糟糕的数字。考虑各种很极端的情况,你可以在这个时间内完成。这个预估的发生概率应该是小于1%。
有了这三个预估数字,可以通过以下方法描述概率分布。
任务期望完成时间=(O+4N+P)/6
举个例子,假设一个任务,他的O=1,N=3,P=12。那么他的任务期望完成时间=(1+4*3+12)/6,即4.2天。
而它的概率分布标准差可以有以下描述。
概率分布标准差=(P-O)/6
用来衡量不确定性,数字越大越不确定。
对于一些大任务,直接计算任务期望完成时间不够准确。需要将大任务拆分成小人物,单独计算任务期望完成时间,再进行求和。
团队与协作
作者认为团队比项目更难构建。因此,组建稳健的团队,让团队在一个又一个项目中整体移动共同工作是较好的做法。并且团队也可以承接多个项目。在组建团队时,要给予充足的时间,让他们形成凝聚力,一直共同工作,成为不断交付项目的强大引擎。