去年秋天个人支线代码项目 遇到了一些问题,项目进展不足,并且我无法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工做的前提下)。node
我主要在周末进行个人支线,固然有时候也在晚上进行。这个方法对我而言效果不佳。个人压力过重了,我须要在周末努力完成尽量多的工做(若是没作到,我会为此感到挫败)。还有一个问题是我没法保证每一个周末都有空,并且我也不想把周末全部的时间都花在编程上(失去一切放松娱乐的机会)。jquery
此外,每隔一周进行编码的话,间隙太长了。太容易忘记你正在作什么,或者你还须要作什么了(即便你有笔记)。若是你错过了一个周末的话,问题就更严重了,间隔一会儿变成两周了。多周的上下文切换多是致命的(我有不少支线项目由于这类注意力缺少而死亡了)。git
Jennifer Dewalt 去年经过在 180 天建立 180 个网站的方式来自学编程,她的作法启发了我。我决定采用一个简单的策略:天天编码。github
我决定为本身定下一些规则:编程
有些规则比较武断。好比代码其实不用在午夜前写完的。但我担忧熬夜致使代码质量降低。一样,代码也不用开源,或者放在GitHub上。我这么作是想强迫本身写代码的时候上点心(考虑可读性,同时较早地考虑模块化)。segmentfault
到目前为止这个策略颇有效。我基本保持了20周的连续工做。我之因此写这篇博客,正是由于它彻底改变了我编写代码的方式,更重要的是影响了我生活和心智。框架
这个习惯的改变产生了一些有趣的结果:jsp
最小可行的编码。 我强迫本身天天花很多于半个小时来写代码(若是少于这个时间就很难写出有价值的代码了,特别是回忆前一天写了什么还要花一点时间)。工做日的时候我有时写得多一点(通常不超过一个小时),周末我有时成天写代码。模块化
写代码成为习惯。 值得一提的是我并非特别在意上面的Github图形。我以为这是这个实验最值得借鉴的一点:这是你为本身作的一个改变,而不是为了知足别人对你工做的评价。节食和锻炼也是一个道理:若是你不在意提高本身,那么你永远都不会取得成功。网站
与焦虑做斗争。 在开始这个实验以前,我时常为没有完成足够的工做或取得足够进展而感到焦虑(工做和进展都难以量化,由于个人支线项目没有死限)。我意识到,感受到进展和实际推动工做一样重要。这令我大开眼界。一旦我天天持续地推动项目,个人焦虑就开始消散了。我对本身的工做量很心安,我再也没有那种难以承受的渴望,想要疾风骤雨式地推动项目的渴望。
周末。 之前,在周末完成工做绝对是前进的关键动力(由于一般而言这是我惟一大量推动支线项目工做的机会。)如今状况不同了——这是件好事。指望在一个周末完成一周的全部工做只会让我失望。我极少很完成工做,所以为了完成更多工做而拒绝了其余喜欢的周末活动(例如吃 dim sum,参观博物馆,去公园游玩,陪伴个人伴侣等)。我深深地感到,虽然支线项目是很是重要的,可是它们不该该是生活的所有。
后台处理。 天天编写支线项目代码的一个有趣的反作用是你当前的任务时常在你大脑的后台运行。所以当我去散步或沐浴的时候,或者进行其余不费脑的活动的时候,我在思考我接下来将作哪些编码,寻找解决问题的好方法。我之前一周或两周编码一次的时候可不是这样。当时时间被花费在思考其余一些事情上,一般是在为无法完成任何支线项目而感到焦虑。
上下文切换。 拾起支线项目工做的时候总会有上下文开销的。很不幸,重拾整整一周前的思考是极其困难的。天天作一点对此颇有帮助,由于间隔时间大大缩短了,让我很容易想起在作什么。
平衡工做。 这个改变最重要的方面之一是我已经简单地学会了如何更好地平衡工做、生活和支线项目。我知道本身天天都要作支线项目,所以我须要更好地管理时间。若是我计划晚上出去,而且很晚才能回家,那么我须要在早上为支线项目工做,在开始为我主业Khan Academy工做以前。一样的,若是我在外面,而我尚未完成个人工做,时间已经很晚了,那么我须要尽快赶回家去完成工做(以避免错过一天)。我须要指出的是我发现本身把更少的时间花在爱好上了(例如木版画),可是这是一个合理的代价,我得接受这个。
对外沟通。 跟外界沟通本身的新习惯是颇有好处的。个人伴侣理解每都必须完成工做,所以有活动安排有时须要据此做出调整。这样我就能够很方便地说:“是的,咱们能够出去/看个电影/等等。可是我以后须要写代码。”个人伴侣会理解我,并在安排活动时考虑到这点。
我写了多少代码? 我很难相信本身在过去的几个月写了这么多的代码。我新建了几个网站,重写了一些框架,并建立了大量node模块。我写了如此之多的代码以致于我有时我都忘记本身作了写什么——几周前的工做感受是好久远的记忆。我很是很是高兴本身能写这么多代码。
我认为这个习惯的改变是一个巨大的成功。我但愿本身能持续保持这个习惯。同时,我尽力向其余但愿能完成大量的支线项目的人推荐这个策略。告诉我这个策略对你而言是有效仍是无效。我很但愿能从你那里听到一些有意思的东西。
John Resig, jQuery之父,同时也是Pro Javascript Techniques和Secrets of the JavaScript Ninja的做者。他目前主持 Khan Academy 的开发工做。