代码整洁之道
简介:
本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。
本书适合所有程序员阅读,也可供所有想成为具备职业素养的职场人士参考。
第三章:说“是”
如果你能够一直信守承诺,大家会以为你“是一名严谨负责的开发人员”。
在我们这行中,这也是最有价值的评价。
3.1 承诺用语
口头上说;心里认真;付诸行动;
这也就是承诺的三个步骤:
(1)口头上说自己将会去做。
(2)心里认真对待做出的承诺。
(3)真正付诸行动。
3.1.1 识别“缺乏承诺”的征兆
我们有竭力逃避承担责任的倾向。
注意以下三种类型的词,当他们出现时候你就要警觉自己不必把此承诺太当真。
- 需要/应当。“我们要把这活做完。”“我需要减肥。”“有人应当负责去推动这件事。”
- 希望/但愿。希望明天我能完成这个任务。”“希望改天我们能再见面。”“但愿我有时间做这件事。”“但愿电脑能快点。”
- 让我们(而不是让我)。让我们回头再见。”“让我们把这事做完。”
3.1.2 真正的承诺听起来是怎样的?
寻找相似的句子:我将........之前............
你对自己将会做某件事做了清晰的事实陈述,而且还明确说明了完成期限。
那不是指别人,而是说的自己。你谈的是自己会去做的一项行动,而且,你不是可能去做,或是可能做到,而是必须做到。
到了所到时间之后,面临两个结果,要么完成,要么没完成。
如果你没做到,他人就能摆出你先前的承诺让你难堪。由于失信于人,你会感觉很糟糕。告诉别人自己没能兑现承诺时,你会感到十分难堪(如果那人曾当面听你做出承诺的话)。
作者在这里还说明没能信守自己的承诺的潜在想法,并且给出对应的应对方法。
-
之所以没成功,是因为我寄希望于某某去做这件事。
原因:你只能承诺自己能完全掌控的事。比如,如果你的目标是完成一个还依赖于另一团队的模块,那么你无法承诺自己既能够完成这个模块,还能实现该模块与其他团队所负责模块间的无缝集成。
应对方法:如果最终目标依赖于他人,那么你就应该采取些具体行动,接近最终目标。
-
之所以没成功,是因为我不太确信是否真能完成得了。
应对方法:即使目标无法完成,你仍能全力前进,离目标更近些。
例如:
-
把这25个bug全部过一遍,努力重现这些bug。
-
和发现bug的QA一起坐下来,看下bug重现时的现场。
-
用本周能支配的全部时间,尝试逐一修复bug。
-
-
之所以没成功,是因为有些时候我真的无能为力。
应对方法:如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。
这里有一点要注意:
如果你不尽早告诉他人可能的问题,就错失了让他们帮助你达成目标、兑现承诺的机会。
3.2 学习如何说“是”
坚持原则
如果不写测试,他或许可以更快点完成任务。如果不做重构,不运行整套回归测试,或许也可以快点完成任务。此时,如果是专业开发人员,就不会放弃底线。
首先,这种假设本身就是错误的。即使不写测试,不做重构,省掉完整的回归测试,Peter也无法更快完成任务。多年经验告诉我们,打破这些纪律和原则,必然会拖慢进度。
其次,身为专业开发人员,Peter有责任根据标准规范自身工作。代码必须经过测试,代码必须要有对应的测试代码。要确保代码清晰整洁,而且必须确保没有影响到系统的其他部分。
如果要“加班”,就需要考虑自己的经理储备,口头上说自己会在周末搞定这些事情很容易的,但要真正花精力高质量地完成工作会困难许多。
专业人士对自己的能力极限了如指掌。他们十分清楚自己还能保持效率加班多长时间,也非常明白要付出的代价。
总结
专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。当专业人士给出肯定回答时,他们会使用正式的承诺,以确保各方能明白无误地理解承诺的内容。