每天写代码

本文是翻译,版权归原作者所有


去年秋天,我想到了做业余项目:我没有取得足够的进步,如果我不牺牲我在Khan Academy上高效工作的投入,我将找不到能更多进步的方法。

我在如何从事业余项目上有一些主要问题。我主要在周末做,有时候在周末的晚上。事实证明,这个策略对我不太好使。我为了试着在周末完成尽可能高质量的工作而承受着难以置信的巨大压力(如果我不能承受,它就失败了)。这是一个问题,因为无法保证每个周末都是自由的,我也不想在这两天全部用来写程序(失去任何放松或做有趣的事情的机会)。

还有一个问题,一周写这些代码的时间间隔长,非常容易忘记你要做什么或你在什么地方停下来的(即使你做笔记了)。更不要说如果你失去了一周,你最终会造成一个两周的缺口。大量的多周情景切换很要命(我的很多业余项目多是由于缺乏专注而死去的)。

我受到了Jennifer Dewalt的鼓舞,她在去年完成了令人难以相信的成就,在180天内通过建立180个网站来自学编程,我强迫自己尝试类似方法:每天都做业余项目。

SsevWYY

我决定给自己制定一些规则:

  1. 我必须每天都要写代码。我能够写文档、或博文,或其它东东,但必须是除了我要写代码之外的事情。

  2. 它必须是有用的代码。不调整缩进,不能有代码格式化,如果有各种可能,不做重构(所有这些事情是许可的,但是不能在当天的专用时间里)。

  3. 所有代码必须在午夜之前编写。

  4. 代码必须开源,提交到Github。

一些规则偏主观,从技术上讲,代码不需要在午夜之前完成,但是我想避免拖得太晚而写出丑陋的代码。代码不必开源或放到Github,这只是为了强迫我更在意我要写的代码(考虑可复用性,决定在过程早期生成模块)。

截至目前我相当成功,我差不多连续20周工作。我想写写这些情况,因为它完全改变了我编码的方式,并对我的生活和心智产生了持续性的影响。

github

想到了由于习惯的改变而发生的一些趣事:

最小化可用代码

我被强迫过一天写代码不能少于30分钟(在较少的时间里真的很难写出有意义的代码,特别是要记住你前一天停下来的地方)。在工作日我写的稍微多些(通常不超过一小时),在周末我有时候能够写一整天。

代码习惯

需要提到的重点是,我没有特别在意Github图表上的外在感觉。我认为这个尝试最重要的收获是,这是你为了你自己在生活上做出的一个改变,而不是为了取悦于其他人对你工作看法而做出的改变。同样,任何方式的饮食或锻炼也是一样:如果你自己不在意提高,那么你就永远成功不了。

与焦虑斗争

在开始尝试之前,我经常因为没有完成“足够多的”工作、或取得“足够大的”进步而深感焦虑(工作和进步相对不可测量,正如我的业余项目没有截止日期)。我意识到,进步的感觉仅仅和实际进步一样重要。这让我大开眼界。一旦我每天开始取得持续的进步,焦虑就消退了。我对要完成的大量工作感到沉稳,我不再有疯狂搞定任何工作的、无法忍受的急切想法。

周末

周末把工作做完对于保持前进的动力一直是绝对关键的(它们通常是我做完重要业余项目的唯一时间)。现在不再是这种情况了,这是好事。关于我应当完成什么,如果我建立一个周末的高预期,将会让我失望。我很少能够完成我要完成的所有工作,为了把事情做完,它强迫我抵制我喜欢的其它周末活动(吃点心、参观博物馆、去公园,与我的伙伴待在一起等等)。我强烈认为,就算业余项目真的重要,它们通常也不应当排斥生活。

背景处理

每天忙于业余项目的有意思的侧面影响是,你的当前任务经常浮现在你的意识后面。这样当我散步、洗澡或任何不需要用脑的活动时,我就会考虑我稍后要编码什么,以找到解决问题的办法。当我每周或每几周写代码时,就不会有这种情况。这些时间被用来考虑一些其它问题,或者通常被还没有完成任何业余项目的焦虑所代替。

情景切换

当回到业余项目时,总会有一个情景切换成本。不幸的是,在经过一整周投入另一项任务之后,就非常难以回到考虑这个项目了。在这一点上 每天工作 就相当有帮助了,因为工作之间的时间跨度非常短,很容易回忆起我要做什么。

工作平衡

这种变化带来的最重要的方面之一是简单地学到了如何更好地平衡工作/生活/业余项目。知道我将不得不每天工作,我不得不更好地平衡时间。在开始我的主要工作Khan Academy之前,如果我日程规划到了晚上,还回不来,那么我需要在白天尽早去做业余项目。另外如果我还没有完成工作,出去晚了,那么我将着急地回家去完成(而不是失去这一天)。我应该清楚,我已经发现我花在爱好(比如版画)上的时间少了,不过这是一个我需要接受的合理交易。

表面感受

与别人沟通这种新习惯也有一些增加的好处。我的伙伴理解我不得不每天完成工作,这样,有时候的活动将不得不围绕它规划。能够说“是的,我们能够出去/看电影/等,但是我不得不晚些写代码“是相当舒服的,得到了理解,也做了考虑。

写多少代码?

我有段时间 对 我在过去的数月里写了多少代码 感到痛苦。我新建了一些新网站,重写了一些框架,创建了大量新的node module。我写了这么多以致于有时候我忘了我已经做过的东西——数周前的工作就像一个遥远的回忆。我对完成的工作总量感到非常满意。

我认为习惯上的变化会是一个巨大的成功,希望能够尽可能长久地持续下去。同时我愿意做我能做的来把这种方法推荐给那些想完成持续性业余项目的人。无论这种方法管用、或不管用,都让我知道——我都有兴趣听到额外的趣事!

原文地址:http://ejohn.org/blog/write-code-every-day/

译文:每天写代码 》| 腊八粥