能够感知到错误确实十分重要。
要精熟掌握某项技艺,关键都是具备“信心”和“出错感知”能力。
4.1 做好准备
- 首先,代码必须能够正常工作
- 代码必须能够帮你解决客户提出的问题
- 代码必须要能和现有系统结合得天衣无缝
- 其他程序员必须能读懂你的代码
如果感到疲劳或者心烦意乱,千万不要编码。
4.1.1 凌晨3点写出的代码
疲劳的时候,千万不要写代码。奉献精神和职业素养,更多意义上指要遵循纪律原则而非成为长时间工作的工作狂。
4.1.2 焦虑时写下的代码
专业开发人员善于合理分配个人时间,以确保工作时间段中尽可能富有成效。
4.2 流态区
高效率状态,通常被称为“流态”。
避免进入流态区。为了追求所谓的速度,理性思考的能力会下降。
4.2.1 音乐
听音乐似乎消耗了一部分宝贵的脑力资源,而这些资源本该用于编写设计良好的整洁代码。
4..2.2 中断
结对是用以应对中断的一种好方法。
另一种很有帮助的方法便是采用TDD。
4.3 阻塞
有一个很简单的好方法可以解决阻塞:找一个搭档结对编程。
创造性输入
“创造性输出”依赖于“创造性输入”。
4.4 调试
调试时间
衡量你是否是一名专业人士的一个重要方面,便是看你是否能将调试时间尽量降到最低。
4.5 保持节奏
4.5.1 知道何时应该离开一会儿
当碰到困难而受阻时,当你感到疲惫时,就离开一会儿,让富有创造力的潜意识接管问题。
4.5.2 开车回家路上
从问题中暂时脱离出来,十分有助于大脑以不同的但更具创造性的方式搜求各种解决方案。
4.5.3 洗澡
4.6 进度延迟
管理延迟的诀窍,便是早期检测和保持透明。
要根据目标定期衡量进度,使用三个考虑到多种因素的期限:乐观预估、标准预估、悲观预估。
4.6.1 期望
如果你呈现的数字可能会错过最终期限,那又该怎么办?
要让团队和利益相关者明白这个形势,除非另有后备预案,否则不要轻易松口退步。不要让其他任何人对此抱有期望。
4.6.2 盲目冲刺
唯一能够加快进度的方法便是缩减范围。不要经受不住诱惑盲目冲刺。
4.6.3 加班加点
不应该采用额外加班加点工作的方案,除非以下三个条件都能满足:
- 你个人能挤出这些时间
- 短期加班,最多加班两周
- 你的老板要有后备方案,以防万一加班措施失败了
4.6.4 交付失误
在程序员所能表现的各种不专业行为中,最糟糕的是明知道还没有完成任务却宣称已经完成。
如果试图对”完成”做出一种新的合理化定义,潜在的危险性是最大的。
4.6.5 定义“完成”
可以通过创建一个确切定义的“完成”标准来避免交付失误。
最好的方法是让业务分析师和测试人员创建一个自动化的验收测试,只有完全通过这些验收测试,开发任务才能算已经完成。
4.7 帮助
编程并非易事。
编程很难,事实上,仅凭一己之力无法写出优秀的代码。
4.7.1 帮助他人
互相帮助是每个程序员的职责所在。作为专业人士,要以能够随时帮助别人为荣。
4.7.2 接受他人的帮助
如果有人向你伸出援手,要诚挚接受,心怀感激地接受帮助并诚意合作。
要学会如何寻求帮助。
4.7.3 辅导
辅导缺乏经验的程序员是那些经验丰富的程序员的职责。