《代码整洁之道:程序员的职业素养》
- 介绍:《代码整洁之道:程序员的职业素养》 读书笔记。
- 评价 : 内容短小精悍,大概一下午就能完全看完。书中比较有用的核心观点总结下来并不多,我这篇读书笔记也才 2500 多字左右。不过,我并没有总结每一个章节,只总结了一些我觉得比较有用的章节。总之,看完这本书可能不能让你直接成为一个专业的程序员,但一定能够让你意识到如何成为一个专业的程序员。
- 作者:Guide哥

前言
Bob 大叔的书籍总是能够用浅显易懂的语言把一些软件领域比较重要的东西给你讲清楚。
看完了这本书之后,你需要问问自己下面这些问题:
- 软件开发者如何让自己更专业?
- 软件开发者有哪些应该坚持的编码习惯?
- 专业的软件开发者如何处理冲突?如何应对交付压力?如何与不讲道理/不懂技术的管理人员打交道?
- 专业的软件开发者应该如何应对压力?
让自己更专业的几条建议
- 对你的软件负责,保证你的软件的质量。
- 尽全力让 QA 找不出问题
- 写好单元测试
- 熟悉你的领域里的优秀实践比如设计模式(比如策略模式)、设计原则(比如 SOLID)、工程实践(比如持续集成)。
- 坚持学习,善于总结。 不写代码的架构师注定会被淘汰。
- 多练习,多实践。
- 学会与别人合作。 因为软件的开发往往需要一群人的通力协作。
- **熟悉你要开发的软件的业务领域。**比如你要开发支付系统的话,那你就要对支付领域有所了解,知道支付领域常见的一些概念。
- 保持谦虚,切忌自负。
学会说不
面对不合理的要求/需求,学会说不。比如某个需求根本不可能在一周完成,那你在接这个需求之前就要和项目 Leader 说清楚,商量好最后的 deadline。
每一个人的精力都有限,我们还需要专属于自己的时间。不要总想着做项目的上的救火员,让自己陷入比较累且学不到什么东西的状态。
养成正确编码的习惯
当你感觉到疲劳或者心烦意乱的时候,一定要尽量要避免需要耗费大量脑力的工作比如编码。 试着缓解自己的疲劳,让自己的内心平静下来。像我平时状态不好的时候,都是干一些不是那么费脑力的事情,比如看看类似于《The Clean Code》的非技术书籍。
保持健康的生活习惯,吃好睡好!避免熬夜写代码,这是一种得不偿失的行为。
很多时候,你可能还会卡在某个技术难点上,久久想不出来。这个时候,你可以去干点其他的事情(比如刷刷社交平台,处理下邮件、站起来走走)放松下脑子。
软件开发更像是一场马拉松而不是短跑比赛,你要学会保存自己的精力和创造力。
有哪些可以提高专注度的方法:
- 结对编程 (有个人看你编码,能不专注么?)
- 健康作息(比如工作半个小时之后起来走一小会)
- 洗澡(我有时候状态不好的时候,洗个澡之后会好很多,状态好了之后,专注度当然会提高)
测试驱动开发
测试驱动开发也就是 TDD,有好有坏。这里不对书中的内容做额外的笔记,比较熟悉了。
简单补充点我认为 TDD 中比较重要的点。
TDD 的节奏:“红 - 绿 - 重构”。

想要做好 TDD 的一个关键是学会如何正确地进行任务分解。
多练习,多实践
下面是一些比较实际的手段:
- 自己开源项目或者为别人的开源项目贡献源码
- 用学到的新技术做一些能够解决实际问题的项目
- 参加一些自己行业领域内的比赛
- 对于一些优秀实践比如设计模式(比如策略模式)、设计原则(比如 SOLID)、工程实践(比如持续集成),你不光要搞懂理论,还应该在自己后续的软件开发中去实践。在实践中体会!
时间管理
之前分享过一位字节(TikTok)的大佬分享的时间管理经验。我觉得很不错。
如何提高工作效率?最近实践了一段时间 7 点左右下班,在保证了同等产出的前提下优化了白天的工作效率,分享一些经验(thread)。
- 提前计划 :我们组使用 Jira 来管理工作量,每周一个 sprint,在周一的 sprint planning meeting 上会规划好一整周的工作安排,这个时候就需要每个人对自己的工作有一个提前的规划,一般来说,一周安排 4 个左右的 story points 就 ok 了,因为总有一些工作会被插入进来。
- 个人计划 :个人方面,我会在每天早上花 10-20 分钟做一个整天的工作安排,一般会确定今天最重要的 3 件工作,如果这 3 件事都完成了,那么就代表今天的产出是非常高的(实际上实践下来,完成 2 件事就已经很不错了)。
- 避免频繁的上下文切换 :如果遇到额外插入(计划之外)的事情,我会先评估优先级,非常紧急的事会 block 手上的工作,优先处理;紧急的事会插入到这周的 sprint 上来,非紧急的工作直接进入 backlog 等待下一周的安排。context switching 的代价是很高昂的,所以要尽量避免。
- 没必要严格遵守 Scrum 的流程 :每天的站会人多了也很费时间,所以我们改成了隔天一次的同步,只需要关注是否有 block 的内容和手头上的工作是不是 on track 即可,至于每天干了啥感兴趣的可以自己私下去了解。(btw,考虑到大家的上班时间,会在 11:30 后才开。)
- 会前准备 :一般我会遵循 WWGHQ 原则来准备:
- What:这个会是做什么的?
- Why:为什么开/参加这个会?
- Goal:这个会议的目标是什么?
- How:会议上我们需要讨论什么来达成这个目标?
- Question:准备一些会上会问的问题。
- 控制会议节奏 :会议尽可能保持紧凑,一般来说人数控制在 10 人以内,会议时间要短于 1 小时,会议的前十分钟让大家安静读文档进行评论,因为不是所有有人都会会前做好准备,这样做可以保证大家都对本次会议有一个大体了解,然后会中着重讲评论中的内容即可。
- 每天 block 出一段用来专注的时间 :可以在 public calendar 上提前 block 出每天用来专注工作的时间,这段时间不要安排会议,关闭 IM 通知,全身心的 focus 在今天最重要的事上。可以利用番茄工作法来保持专注。这期间收到的消息等专注时间过了再统一处理。
- 利用早上的时间来专注工作 :国内的互联网公司基本上都 10 点之后才上班,而上午的时间大家一般都用来处理邮件、消息,这些都是信息密度比较低的工作,这段时间一般是很少会有人来打扰你的,所以可以尝试把专注的时间挪到上午,这样也可以在一天的最开始就把最重要的事解决掉。
- 产出导向 :团队内不能用加班时长来作为评判的依据,而是要把重点放在每个人的相对产出上(每个人的职级不同,所以更多的是和自己比),如果一个人的单位相对产出是在提高的,就证明 ta 是在进步的。判断你一周的工作有没有做好,更多的是要看这周的产出有没有达到预期。
下面是我对书中比较重要的点的补充:
- 编程是需要持续投入精力和注意力的智力活动。注意力是稀缺的资源,如果你用光了自己的注意力点数,必须花一个小时或更多的时间做不需要注意力的事情,来补充它。
- 在你不集中注意力的时候,注意力点数可以缓慢恢复。冥想、看看窗外、小睡一会或者听听播客都有助于恢复注意力点数。一旦注意力点数耗尽,你就没法控制注意力。你仍然可以写代码,但是多半需
要第二天重写,或者在几周或几个月之后备受这段代码的煎熬。所以,更好的办法还是花 30
到 60 分钟来换换脑子。 - 番茄工作法用来管理时间非常有效!
- 安排好任务的优先级!
压力
应对压力的诀窍在于,能回避压力时尽可能地回避,当无法回避时则勇敢直面压力。可以通过慎重做承诺、坚持自己觉得正确的习惯比如 TDD、保持整洁等来回避压力。直面压力时,则要保持冷
静,与别入多多沟通,坚守自己的原则纪律,并寻求他人的帮助。
更新: 2022-02-18 12:47:02
原文: https://www.yuque.com/snailclimb/to3hqu/mmrhyu