5点钟。这段代码我研究了几个小时,半天写了一行。这是一种真正的折磨。有时,代码会不由自主地从我的脑海中滑落到我的指尖。但不是今天。我的任务是向类添加新功能。“简单”,我想。“我写的类,现在扩展应该不会太难吧。”所以,吃完午饭后,我开始坐下来编程。一切都开始得很顺利——我对如何将这个新功能融入这个类有了一个很好的主意。然而,我看得越仔细,就越发现我的绝妙想法并不是那么好。此功能所需的数据在此处不可用。我已经尝试过各种极端的事情,而且课堂上乱七八糟。修改后的代码的单元测试几乎没有成功。接下来的几个小时我感觉自己在兔子洞里越陷越深,***根本不认识我写的代码。我反复将修改后的代码与修改前的原始代码进行对比,试图找出问题所在。我的大脑无法弄清楚为什么这段代码有效。我不知道该改成什么。情况很快就变成了我和电脑之间的拳打脚踢。“编译,该死的,快编译!”那么现在,已经5点了——还有一个小时就要下班了。我几乎放弃了今天完成这个功能的计划。“不可能,”我想。“整理这些乱七八糟的代码需要一个小时。”我沮丧地站起来,低下头,慢慢地向厕所走去。我坐在马桶上,深吸一口气——就在那时,灵感来了!灵感女神宝座突然间,我想通了一切。代码突然涌入我的脑海。我弄清楚了这个类,它的所有功能,以及它的使用场景。我想出了如何将我的功能代码放入其中。我想通了!解决完身体问题(洗手)后,我跑回办公桌开始敲代码。我打字的速度赶不上不断涌入我脑海的代码。在我手指的敲打下,键盘似乎要散架了。我和电脑不再是敌人,我们是最亲密的战友,为了共同的目标走到一起。30分钟后,代码编译成功。所有单元测试都顺利通过。我完全按照新功能的要求跑起来,所有的功能点都按预期工作。“我做了不可能的事,我做到了!”随着编码的兴奋逐渐消退,我意识到一个无法回避的事实:我最有效的编程不是坐在电脑前,而是蹲在马桶上。退后一步(来自您的代码)现在,我并不是说马桶具有神奇的代码设计魔力(尽管我承认这是一项伟大的发明)。但是,我要说的是,无论您要完成的编程任务是多么大或多么琐碎,离开计算机,站在更高的层次上思考,都会使您的效率至少提高10倍。无论是去厕所、在公园散步,还是在办公室休息区远离电脑屏幕休息一下,它都能让你头脑清醒,让你看到树木之外的森林。许多程序员都不愿意离开他们的电脑桌。他们认为不花在IDE上的时间是一种浪费,他们担心被告知他们没有努力工作。“你为什么不在办公桌前写代码!?等着扣你的工资。”项目经理会说。我认为这种逻辑是愚蠢的并且适得其反。雇用程序员不是为了坐在办公桌前,或盯着屏幕,甚至是编写代码。这些只是程序员为实现最终目标而采取的步骤,这才是真正的目标:为最终用户开发功能。如果我们能够在远离电脑桌的同时更快、更高效地开发这些功能,何乐而不为呢?总之,编程时不要忘记充分利用马桶。英文原文:ProgrammingontheToilet翻译链接:http://www.vaikan.com/programming-on-toilet/
