编码
要精熟掌握每项技艺,关键都是要具备“信心”和“出错感知”能力。
总结《代码整洁之道——程序员的职业素养》第四章(编码)
目录:
做好准备
编码是一项颇具挑战也十分累人的智力活动。
- 首先,代码必须能够正常工作。
- 代码必须能够帮你解决客户提出的问题。
- 代码必须要能和现有系统结合得天衣无缝。
- 其他程序员必须能读懂你的代码。
需要平衡好这些需要长时间维持高度集中精神,但编码时无可避免地会受到各种干扰。如果感到疲累或者心烦意乱,千万不要编码。强而为之,最终只能再回头返工。相反,要找到一种方法来消除干扰,让心绪平静下来。
凌晨 3 点写出的代码
疲劳的时候,千万不要写代码。奉献精神和职业素养,更多意义上指要遵循纪律原则而非成为长时间工作的工作狂。要确保自己已经将睡眠、健康和生活方式调整到最佳状况,这样才能做到在每天的 8 小时工作时间内全力以赴。
焦虑时写下的代码
如果发现自己虽然人坐在办公室里,但内心的焦虑正在不断削弱工作效率,那么最好还是花上一个小时让他们先安静下来。理想情况下,应该使用私人时间去解决私人问题。
专业开发人员善于合理分配个人时间,以确保工作时间段中尽可能富有成效。即在家中时就应该专门安排时间去解决焦虑,这样就不会把焦虑情绪带到办公室里。
流态区
高效率状态通常被称为“流态区”。这是程序员再编写代码时会进入的一种意识高度专注但思维视野却会收拢到狭窄的状态。在这种状态下,为了追求所谓的速度,理想思考的能力会下降。说白了,就是你可能可以敲出更多的代码,但是这些代码的写法往往是为了完成任务,而没有经过细心思考而写的,导致后面可能需要推到重写。因此,避免进入流态区。
音乐
音乐会消耗一部分宝贵的脑力资源,而这些资源本该用于编写设计良好的整洁代码。也许对于部分人来说,音乐有助于编写代码,但是真实的情况是,音乐正带领他们进入流态区。
中断
中断无法避免,总有干扰会打断你、消耗你的时间,这时,需要礼貌地表现出乐于助人的态度才是专业的态度,因为下次也会轮到你去打断别人请求帮助。
调试
虽然说,调试不等于编码,但是对于公司来讲,调试时间和编码时间是一样的昂贵,因此我们需要尽量避免甚或消除调试活动。
医生不喜欢重新打开病人的胸腔去修复此前犯下的错误。律师不喜欢重新接手此前搞砸的案子。经常重新返工的医生或律师会被认为不专业。同样,制造出许多 bug 的软件开发人员也不专业。
保持节奏
- 当碰到困难而受阻时,当你感到疲倦时,不要坚持,你应该离开一会儿,让富有创造力的潜意识接管问题。
- 从问题中暂时脱离出来,十分有助于大脑以不同的但更具创造性的方式搜求各种解决方案。
进度延迟
根据目标定期衡量进度,尽量严守乐观预估、标称预估、悲观预估这三个时间点。不要把预估和期望混淆再一起!把全部这三个数字呈现给团队和利益相关者,并每天修正这些数字。
期望
假设 10 天后有一个展会,我们需要在展会上展示产品。但是,你对正在开发的特性时间预估是 8/12/20。由于你的常规预估已经是 12 天,你是绝不可能完成任务的。要让团队和利益相关者明白这个形势,除非另外有后备预案,否则不要轻易松口退步。不要让其他任何人对此抱有期望。
盲目冲刺
如果经理坚持要求你“按期完成”该怎么办?**坚持维持你的估算!**告诉老板你已经考虑过所有情况(因为你确实已经这么做了),唯一能够加快进度的方法便是缩减范围。不要经受不住诱惑盲目冲刺。
加班加点
不应该采用额外加班加点工作的方案,除非以下三个条件都能满足:
- 你个人能挤出这些时间;
- 短期加班,最多加班两周;
- 你的老板要有后备预案,以防万一加班措施失败了。
最后一条至为关键。如果老板无法向你清楚说明加班方案失败的后备预案,那么你就不该同意接受加班方案。
交付失误
在程序员所能表现的各种不专业行为中,最糟糕的是明知道还没完成任务却宣称已经完成。
定义“完成”
可以通过创建一个确切定义的“完成”标准来避免交付失误。
帮助
仅凭一己之力无法写出优秀的代码。即使你的技能格外高超,也肯定能从另外一名程序员的思考与想法中获益。
帮助他人
互相帮助是每个程序员的职责所在。给他人提供帮助并非说明你比人家聪明很多,而是因为你带来了一个新的视角,对于解决问题起到了显著的催化作用。
接受他人的帮助
如果有人向你伸出援手,要诚挚接受,心怀感激地接受帮助并诚意合作。如果到时那个人不能真正帮到你,再礼貌地致歉用感谢结束谈话也不迟。要记住,如同要以乐于助人为荣一样,也要以乐于接受别人的帮助为荣。
要学会如何请求帮助。如果帮助唾手可得却让自己一个人堵在那儿,是很不专业的表现。
辅导
花时间手把手地辅导年轻程序员是资深程序员的专业职责所在。同样道理,向资深导师寻求辅导也是年轻程序员的专业职责。