![](http://imgsrc.baidu.com/forum/w%3D580/sign=94bf372efd03918fd7d13dc2613f264b/ffd6c4d2572c11df5e74dfed692762d0f603c26c.jpg)
不受控制的自动保存 - 这个习惯已经伴随着我多年了。即使如今许多 IDE 甚至不需要用户(主动)保存文件,但我任然乐此不疲地按着“Ctrl + S”这个组合键。如果没记错的话,我每次停止打字时都会无所事事,于是会不受控制地做着这样的举动。
有些开发人员喜欢将自己“处在状态”比喻成“涅槃重生”或者是到达了“瓦尔哈拉殿堂”。在我看来,这更像是一种“暴走模式”。显而易见,这是生产效率非常惊人的一段时间,但之后你应该休息片刻来调整恢复(你体内的激素水平)。就像 F1 方程式赛车一样,短时间的爆发冲刺将直接影响最终成绩,但是更重要的是要确保“定期的进站(休息/恢复)”。长时间亢奋反而会让大脑麻木,从而导致更容易陷入困境。
确保隔绝所有干扰源 - 当我正在着手于非常重要的事项时,我会直接关闭手机,避免一切社交应用或者媒体的打扰。当然如果你有小孩子,那把他们锁在地下室里可能并不是一个很好的解决方案 :)。
着手工作前先想清楚预期结果 - 可视化可度量是至关重要的。它有助于我明确今天的目标清单,并且在一天结束时能减少自己“碌碌无为”而产生的沮丧和失望。所以对于任何时候你在做的事情,都先明确你预期要获得的收益。这听起来十分浅显,但实际上我们经常会遗漏这一点。
对我来说,另一个好习惯是“保持定期训练”。比如,坚持去健身就是一个非常好的习惯。我非常喜欢时不时得做一些编程练习,这可以让我时刻保持自己的锯子锋利无比。请记住,坚持这个习惯,虽然它现在不会给你带来报酬,但它一定会在未来给你巨大的收益。
“测试先行” - 这与前面提到的一点类似,先来组织并构建测试用例可以帮助我在开始之前就看到我的目的地。同时,它也能有助于设计和文档化这两个过程。但实际情况来看,很少有开发人员认同并实践这个观点。
避免过度的“面向未来编程”。之前我每次着手编程时,我总是第一天就力求完美,设计和实现上都尝试覆盖所有可能的特殊情况(edge cases)。随着时间的推移,我意识到这样常常会导致过度复杂的设计和代码实现,同时消耗更多的时间。