分享

在马桶上编程

 weijianian 2016-08-07


现在是下午5点,我已经在同一处代码耗了几个小时了,为了完成一个功能的实现琢磨每一行代码。这是一个备受折磨的过程。有时候,代码会自然而然的从大脑中流到我的指尖上,这次却不然。

我一直负责增加新的功能到一个类。“简单”,我想,“我先写出这个类,搞清楚如何扩展它应该不是难事。”于是,美味的午餐之后,我坐下来开始编码。

事情开始很顺利——我有了一个模糊的想法,关于新的功能如何来适应这个类。但是,随着我的实现越加深入,我就越加意识到我模糊的想法远远不够。类的方法需要访问那些没有访问权限的数据。我不停地创建各种边界用例,把这个类弄得非常的脆弱、漏洞百出。更重要的是,当我运行我的新的代码的时候,单元测试总是通不过。

在接下来的几个小时内,我在这样的困境中越陷越深,直到后来,我几乎连自己的代码都看不懂了。我不停地查看我本地代码和原始代码的差异,想找出我做了哪些修改。我已经搞不懂代码是如何工作的了,也不知道我期望它怎么做。事情很快演变成我和电脑之间的一场战争。“只要编译通过,你这该死的,编译!”

就这样直到现在,下午5点了——还有一个小时我就要回家了。我几乎放弃了在今天完成这项功能的打算。“不可能完成了”我想,“只是清理这些混乱的代码就要花费我一个小时!”

我从电脑桌旁站起来,情绪低落,低着头,前往洗手间。我坐在马桶上,深吸了一口气——那就是我灵光乍现的时刻!

thinker on the toilet


灵感的宝座

在马桶上的一瞬间,?我什么都明白了。代码飞速的闪现在我脑海中。我可以看见那个类,以及它所有的功能和用例。我可以清楚地看到在哪里添加代码。我全都能看见!

我方便完后(回去工作之前先洗手!)跑回电脑桌前开始敲代码。代码从我的大脑中奔腾而出,我手指上的速度完全跟不上这种速度。当我用力敲击键打,键盘都开始扛不住了。计算机和我不再是敌人了——我们是最亲近的同盟,为了一个共同的目标而努力。

30分钟过后,代码编译成功了。所有的单元测试都通过了。我遍历完新功能的需求列表,其中的每一项都按预期运行着。“我做到了不可能的事,我完成了!”

当我从编程的高兴劲儿中静下来,我领悟到一个简单的真理:我编程最有效率的时候不是在键盘面前,而是在马桶上。

后退一步

现在,我并不是在说马桶有某种构建代码的魔力(当然我确信它们是伟大的发明)。不过,我想要说的是如果从你的电脑前退一步,从一个更高的角度看待问题,即使是最复杂琐碎的任务也会容易10倍。无论是去一趟洗手间,还是去公园走走,或者仅仅是在你的办公室坐一会儿,只要暂时离开你的电脑屏幕,都能够清醒你的头脑,让你更全面地看问题。

许多程序员不愿意离开他们的电脑桌。他们觉得离开IDE时间会浪费掉,或者他们会被瞧不起。“他为什么不在工作岗位上?!准备着降职吧。”他们的经理会说。

我认为这个逻辑完全错误,并且只会适得其反。程序员的职责并不是坐在电脑桌前,或者盯着屏幕,甚至也不是写代码。这些仅仅是通往最终目的的基本步骤:为最终用户开发好的功能。如果离开你的电脑桌可以使你更快速高效地开发那样的功能,那这正是你应该做的。

总之:别忘记在敲代码的时候上洗手间一趟。


原文来源:brianslam

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多