蹲在马桶上编程

简介:

screenshot

5点钟了。这段代码我已经研究了好几个小时,半天写出一行。这真是一种折磨。有些天里,代码会不由自主的从脑子里溜到我的指尖。可今天不是。

我的任务是往一个类里添加一个新功能。“Easy”,我想。“我写的这个类,现在去扩展它,怎么也不应该太难。”于是,在饱饱的午餐后,我就开始坐下来编程。

开 始一切都很顺利——我有个不错的主意,知道如何将这个新功能放进这个类里。然而,越往细里分析,我开始发现我的妙主意并不是那么好。这个功能需要的数据在 这里无法获取到。我尝试了各种激进的方法,使得这个类混乱不堪,bug横生。修改后的代码的单元测试几乎没有成功通过过。

接下来的几个小时 里我感觉就像是在兔子洞里越掉越深,最后完全认不出自己写的代码。我反复的对比修改后的代码和修改前的原始代码,试图能清楚什么地方出了问题。我的脑子已 经无法理解这段代码为什么能运行起来。已经不知道我要把它改成什么样。情况很快变成了我和计算机之间的一场拳击。“编译呀,该死的,赶快编译!”

于是到了现在,5点钟了——一个小时后就是下班时间。我几乎放弃今天完成这个功能的计划。“不可能了,”我想。“光把这些乱糟糟的代码理清楚就需要1个小时。”

我沮丧的站起来,耷拉着头,慢慢往卫生间走去。我坐在马桶上,深呼吸——就在这时,灵感来了!

灵感女神的宝座

忽然间,我想清楚了一切。代码一下子在涌进了我的脑海。我想清楚了这个类,它的所有功能,它的使用场景。我想清楚了如何把我的功能代码加进去。我想清楚了一切!

解决完生理问题后(洗了手),我跑回办公桌前,开始一阵狂敲代码。我敲键盘的速度赶不上那些不断涌进我脑海的代码的速度。在我的手指的重敲下,键盘看起来要散架。电脑和我不再是敌人,我们是最亲密的战友,是为了一个共同的目标走到一起来。

30分钟后,代码编译成功。所有的单元测试都顺利通过。我完整的按着新功能的需求跑了一遍,所有功能点都按预期运行。“我搞定了这无法完成的任务,我成功了!”

当编码的兴奋劲慢慢消退后,我意识到了一个无法回避的事实:我最高效的编程不是坐在计算机前,而是蹲在马桶上。

退一步海阔天空(From Your Code)

现在,我并不是说马桶具有神奇的代码设计的魔法(虽然我承认它是一个伟大的发明)。然而,我要说的是,不论你是要完成多么重大或多么微不足道的编程任务,从电脑前走开,从一个更高的层面思考问题,你的效率至少会提高10倍。不论是去卫生间,还是去公园走一走,或在办公室休息区休息一会儿,远离你的电脑屏幕,这能清醒你的大脑,让你推开树木看到森林。

很多程序员舍不得离开他们的电脑桌。他们认为时间没有花在IDE上都是浪费,担心被别人说不努力工作。“为什么你不在工位上编码!?等着扣薪水吧,”项目经理会这样说。

我 认为,这种逻辑是愚蠢的,是反效率的。程序员不是雇来坐在桌边的,或雇来盯着屏幕的,甚至雇来写代码的。这些只是程序员达到他们最终目的的过程,而真正的 目标是:为最终用户开发功能。如果我们要是能在远离电脑桌的情况下可以更快速更高效的开发出这些功能,那何乐而不为呢?

总之,在编程时别忘了充分利用马桶。

[英文原文:Programming on the Toilet ]

文章转载自开源中国社区 [http://www.oschina.net]

相关文章
|
7月前
|
运维 监控 数据安全/隐私保护
绝地反击,不做背锅侠!
那么作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?堡垒机当然是破解此局面的绝杀大招。
65 0
|
安全 iOS开发 UED
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
实战编程·刻在男人DNA里的浪漫,空气投篮(一)
91 0
《人间清醒语录》
今天,我们想分享来自大淘宝技术工程师们的《人间清醒语录》,这些金句里凝结了他们多年实践经验的智慧,希望可以给你“打怪升级”的过程带来一些帮助。
247 0
|
机器学习/深度学习
学霸、学神OR开挂
我们学习知识 好比武侠世界里的人修炼武功一般 有人天赋异禀、骨骼清奇 是天生的练武奇才——学神 有人天资平庸,但通过后天的孜孜不倦 终成一代大侠——学霸 还有人一路奇遇不断,屡获高人指点 成为绝世高手——外挂玩家
学霸、学神OR开挂
|
弹性计算
于无声处听惊雷