原文:https://johnresig.com/blog/write-code-every-day/
作者:John Resig
译者:ChatGPT 4 Turbo
编者注:10 年前的文章,现在看来依旧是很好的建议:「我必须每天都写点代码」。
去年秋天,我在我的编程副项目上的工作达到了一个顶点:我没有取得足够的进展,而且我找不到不牺牲在 Khan Academy 上进行有效工作能力的情况下完成更多工作的方法。
在我处理副项目的方式上存在一些主要问题。我主要是在周末,有时在一周的晚上工作。结果证明,这是一种对我来说不太行得通的策略。我背负着巨大的压力,试图在周末完成尽可能多的高质量工作(如果做不到,感觉就像是一次失败)。这是一个问题,因为不能保证每个周末都有空 – 也不能保证我愿意每周程序化两天(消除了放松或做任何有趣事情的机会)。
还有一个问题是,一周不接触一些代码是很长的时间,很容易忘记你在做什么或你停在哪里了(即使你保留了笔记)。更不用说如果你错过了一个周末,你最终会有两周的间隔。那种庞大的多周上下文切换可能是致命的(很多我的副项目因为像那样的注意力饥渴而死掉)。
受到 Jennifer Dewalt 去年完成的令人难以置信的工作的启发,她通过在 180 天内制作 180 个网站自学了编程,我感到有必要尝试一个类似的策略:每天都在我的副项目上工作。
插图由 Steven Resig 绘制
我决定为自己设定几条规则:
- 我必须每天都写代码。我可以写文档、博客文章或其他东西,但它必须是除了我写的代码之外的。
- 它必须是有用的代码。不调整缩进,不重新格式化代码,如果可能的话不重构。(所有这些事情都是允许的,但不作为当天的唯一工作。)
- 所有代码必须在午夜之前编写完成。
- 代码必须是开源的,并且上传到 Github 上。
这些规则中的一些是任意定的。技术上讲,代码并不需要在当天的午夜前编写完成,但我希望避免熬夜写代码导致代码质量低下。同样,代码也不一定要开源或上传到 Github。这只是迫使我更加注意我所写的代码(考虑到可重用性,并决定在过程早期就开始创建模块)。
到目前为止,我非常成功,我接近连续工作了 20 周。我想要写下来,因为它完全改变了我的编码方式,并且对我的生活和心态产生了重大影响。
考虑到这一点,由于这种习惯的改变,发生了一些有趣的事情:
最小可行代码。 我被迫每天至少编写 30 分钟的代码。(特别是在回忆起前一天结束时的工作内容之后,要在更短的时间内编写有意义的代码真的很难。)有些工作日我会多工作一点(通常不超过一个小时),周末有时能够全天工作。
将编码作为习惯。 重要的是要注意,我并不特别关心上述 Github 图表的外在感知。我认为这是从这个实验中获得的最重要的收获:这是关于你为自己的生活做出的改变,而不是为了满足他人对你工作的看法而做出的改变。这同样适用于任何形式的节食或锻炼:如果你不关心自我提升,那么你将永远不会成功。
对抗焦虑。 在开始这个实验之前,我经常因为没有完成“足够多”的工作或没有取得“足够大”的进步(这两者都相对无法量化,因为我的副项目没有具体的截止日期)而感到高度焦虑。我意识到进展的感觉与实际取得进展同样重要。这是一个启示。一旦我开始每天都取得持续的进展,焦虑就开始消散。我对自己完成的工作量感到满意,我不再有疯狂完成任何工作的压倒性欲望。
周末。 在周末完成工作曾经对于取得进展至关重要(因为这通常是我完成重要边项目编码的唯一时间)。但现在情况不太一样了——这是一件好事。对周末应该完成的工作寄予一周的期望,最终只会让我感到失望。我很少能完成所有我想做的工作,这迫使我拒绝了我喜欢的其他周末活动(吃点心、参观博物馆、去公园、与伴侣共度时光等),以便完成更多工作。我强烈感觉,虽然边项目真的很重要,但它们不应该排除掉生活中的一般事物。
后台处理。 每天编写边项目代码的一个有趣副作用是,你当前的任务经常在你的脑后运行。因此,当我去散步、洗澡或参与其他不使用大脑的活动时,我会思考稍后要编码的内容并找到解决问题的好方法。当我每周或每两周只工作一次时,这种情况不会发生。相反,那些时间被消耗在思考其他任务上,或者,通常是被没有完成任何边项目工作的焦虑所替代。
上下文切换。 在恢复边项目的工作时,总会有上下文切换的成本。不幸的是,在整整一周工作于另一个任务后,很难再回到项目上来思考。日常工作在这方面非常有帮助,因为工作间隔时间短得多,使得回忆我正在做的事情变得更容易。
工作平衡。 这种变化最重要的方面之一是简单地学会如何更好地平衡工作/生活/边项目。知道我将_必须_每天都在项目上工作,我不得不更好地平衡我的时间。如果我计划晚上出去,并且不会早回来,那么我需要在一天开始前、在开始我的主要 Khan Academy 工作之前,先在我的边项目上工作。此外,如果我还没有完成我的工作,并且我晚上出去了,那么我会赶紧回家完成它(而不是错过一天)。我应该注意的是,我发现我花在爱好上的时间变少了(例如木版画),但这是我需要接受的合理权衡。
外界的认知。 这一切还带来了一个额外的好处,就是向外界传达了这个新习惯。我的伴侣明白我每天必须完成这项工作,因此有时候必须围绕它来安排活动。能够说“是的,我们可以出去 / 看电影 / 等等,但我稍后必须完成我的编码工作”并且这被理解并考虑进去,是件非常令人欣慰的事情。
编写了多少代码? 过去几个月里,我难以置信自己写了这么多代码。我创建了几个新的网站,重写了一些框架,并创建了大量新的节点模块。我写了这么多,有时候甚至忘记了自己制作的东西——就算是几周前的工作,也感觉像是遥远的记忆。我对自己完成的工作量感到非常满意。
我认为这种习惯的改变是一个巨大的成功,并希望能够尽可能长久地持续下去。同时,我会尽我所能推荐这种策略给那些希望完成大量副项目工作的其他人。告诉我 这项技巧是否对你有用——我非常有兴趣听听更多的轶事!