去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下)。

我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法对我而言效果不佳。我的压力太重了,我需要在周末努力完成尽可能多的工作(如果没做 到,我会为此感到挫败)。还有一个问题是我无法保证每个周末都有空,而且我也不想把周末所有的时间都花在编程上(失去一切放松娱乐的机会)。

此外,每隔一周进行编码的话,间隙太长了。太容易忘记你正在做什么,或者你还需要做什么了(即使你有笔记)。如果你错过了一个周末的话,问题就更严重了,间隔一下子变成两周了。多周的上下文切换可能是致命的(我有很多支线项目因为这类注意力缺乏而死亡了)。

Jennifer Dewalt 去年通过在 180 天创建 180 个网站的方式来自学编程,她的做法启发了我。我决定采用一个简单的策略:每天编码。

我决定为自己定下一些规则:

  1. 每天必须写代码。我可以写文档、写博客或者写其他东西,但是这些不能代替写代码。

  2. 代码必须是实际起作用的。调整缩进、重新排版不算。如果有可能,重构也不算。(可以进行这些事情,但这些不能是一天唯一的编码。)

  3. 所有代码必须在午夜之前完成。

  4. 代码必须是开源的,放在Github上。

有些规则比较武断。比如代码其实不用在午夜前写完的。但我担心熬夜导致代码质量下降。同样,代码也不用开源,或者放在GitHub上。我这么做是想强迫自己写代码的时候上点心(考虑可读性,同时较早地考虑模块化)。

到目前为止这个策略很有效。我基本保持了20周的连续工作。我之所以写这篇博客,正是因为它完全改变了我编写代码的方式,更重要的是影响了我生活和心智。

这个习惯的改变产生了一些有趣的结果:

最小可行的编码。 我强迫自己每天花不少于半个小时来写代码(如果少于这个时间就很难写出有价值的代码了,特别是回忆前一天写了什么还要花一点时间)。工作日的时候我有时写得多一点(一般不超过一个小时),周末我有时整天写代码。

写代码成为习惯。 值得一提的是我并不是特别在乎上面的Github图形。我觉得这是这个实验最值得借鉴的一点:这是你为自己做的一个改变,而不是为了满足别人对你工作的评价。节食和锻炼也是一个道理:如果你不在乎提升自己,那么你永远都不会取得成功。

与焦虑作斗争。 在开始这个实验之前,我时常为没有完成足够的工作或取得足够进展而感到焦虑(工作和进展都难以量化,因为我的支线项目没有死限)。我意识到,感觉到进展和 实际推进工作同样重要。这令我大开眼界。一旦我每天持续地推进项目,我的焦虑就开始消散了。我对自己的工作量很心安,我再也没有那种难以承受的渴望,想要 疾风骤雨式地推进项目的渴望。

周末。 以前,在周末完成工作绝对是前进的关键动力(因为通常而言这是我唯一大量推进支线项目工作的机会。)现在情况不一样了——这是件好事。期望在一个周末完成 一周的所有工作只会让我失望。我极少很完成工作,因此为了完成更多工作而拒绝了其他喜欢的周末活动(例如吃 dim sum,参观博物馆,去公园游玩,陪伴我的伴侣等)。我深深地感到,虽然支线项目是非常重要的,但是它们不应该是生活的全部。

后台处理。 每天编写支线项目代码的一个有趣的副作用是你当前的任务时常在你大脑的后台运行。因此当我去散步或沐浴的时候,或者进行其他不费脑的活动的时候,我在思考 我接下来将做哪些编码,寻找解决问题的好方法。我以前一周或两周编码一次的时候可不是这样。当时时间被花费在思考其他一些事情上,通常是在为没法完成任何 支线项目而感到焦虑。

上下文切换。 拾起支线项目工作的时候总会有上下文开销的。很不幸,重拾整整一周前的思考是极其困难的。每天做一点对此很有帮助,因为间隔时间大大缩短了,让我很容易想起在做什么。

平衡工作。 这个改变最重要的方面之一是我已经简单地学会了如何更好地平衡工作、生活和支线项目。我知道自己每天都要做支线项目,因此我需要更好地管理时间。如果我计 划晚上出去,并且很晚才能回家,那么我需要在早上为支线项目工作,在开始为我主业Khan Academy工作之前。同样的,如果我在外面,而我还没有完成我的工作,时间已经很晚了,那么我需要尽快赶回家去完成工作(以免错过一天)。我需要指出 的是我发现自己把更少的时间花在爱好上了(例如木版画),但是这是一个合理的代价,我得接受这个。

对外沟通。 跟外界沟通自己的新习惯是很有好处的。我的伴侣理解每都必须完成工作,因此有活动安排有时需要据此作出调整。这样我就可以很方便地说:“是的,我们可以出去/看个电影/等等。但是我之后需要写代码。”我的伴侣会理解我,并在安排活动时考虑到这点。

我写了多少代码? 我很难相信自己在过去的几个月写了这么多的代码。我新建了几个网站,重写了一些框架,并创建了大量node模块。我写了如此之多的代码以至于我有时我都忘记自己做了写什么——几周前的工作感觉是很久远的记忆。我非常非常高兴自己能写这么多代码。

我认为这个习惯的改变是一个巨大的成功。我希望自己能持续保持这个习惯。同时,我尽力向其他希望能完成大量的支线项目的人推荐这个策略。告诉我这个策略对你而言是有效还是无效。我很希望能从你那里听到一些有意思的东西。

关于作者

John Resig, jQuery之父,同时也是Pro Javascript Techniques和Secrets of the JavaScript Ninja的作者。他目前主持 Khan Academy 的开发工作。

jQuery 之父:每天写代码相关推荐

  1. 被劝退的学渣,逆袭成高级语言之父,改变编程方式却说“不喜欢写代码”!...

    作者 | 年素清 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 上世纪五十年代,程序员使用的是 0/1 机器语言写代码,费时费力.如何进化到如今只需轻松高效地输入字符组成不同的编 ...

  2. python在哪里写代码比较适合-AI辅助写代码,Python之父都爱不释手的工具

    我刚看到这个工具的时候,也是一脸懵x,AI?机器学习?辅助?如果能全自动写出代码得多好,不过真要是这样,在座各位的就业危机就彻底来了. 言归正传,这个工具是-- kite 这是一款IDE插件,使用机器 ...

  3. 60岁还在写代码的程序员大师,Delphi、C#、TypeScript之父Anders Hejlsberg(安德斯·海尔斯伯格):编程符合10000小时定律

    [转载]Delphi.C#之父Anders Hejlsberg 近日首次访华,并在10月24日和27日参加了两场见面会,分享了他目前领导开发的TypeScript项目,并与国内前端开发者近距离交流.本 ...

  4. Erlang之父去世,忠告程序员:先思考再编程,累的时候不要写代码

    作者:黄哲铿<技术管理之巅>作者.技术领导力特约撰稿人 Erlang之父Joe Armstrong于4月20日去世,享年68岁. Erlang Solutions.Erlang Facto ...

  5. python写代码工具_AI辅助写代码,Python之父都爱不释手的工具

    我刚看到这个工具的时候,也是一脸懵x,AI?机器学习?辅助?如果能全自动写出代码得多好,不过真要是这样,在座各位的就业危机就彻底来了. 言归正传,这个工具是-- kite 这是一款IDE插件,使用机器 ...

  6. jQuery之父强烈推荐之jQuery实战

    jQuery之父强烈推荐 点击查看 媒体评论: "本书令我惊喜--这是一部深入透彻的著作,jQuery项目本身都从中获益匪浅.相信它将成为你学习和使用jQuery的理想资源.". ...

  7. 对话jQuery之父John Resig:JavaScript的开发之路

    在参加完CSDN组织的TUP对话大师系列演讲活动后,27岁的jQuery之父John Resig接受了本刊总编刘江的深度访谈,这篇对话文章,让我们一窥这位著名程序员的人生及技术感悟. 编程初体验 &l ...

  8. jQuery获取父节点、子节点、兄弟节点

    介绍 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布. jQuery设计的宗 ...

  9. 抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?

    作者 |  James Vincent等 编译 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:在过去的一年中,AI 生成书面文字的能力大大提高.通过扫描庞大的文本数据集,机器学 ...

最新文章

  1. 【c语言】求最大公约数
  2. linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
  3. 简单粗暴方便好用树莓派FTP远程文件服务器
  4. php文件域的作用,PHP作用域和文件夹操作示例
  5. getElementById 和 getElementByName的区别
  6. 此windows副本不是正版解决方法
  7. == 捕获对象时的模式切换 ==
  8. 转!最适合新手小白的8个python开发环境(内附python IDE最新下载地址+软件激活码+长期有效)
  9. 因为支付宝,日本网民哭了!
  10. 如何将spyder打包成exe_exe程序打包成安装文件,自己的程序制作成一键安装程序...
  11. Vue脚手架中添加favicon.ico图标失效问题
  12. Luogu2467 SDOI2010 地精部落 DP
  13. linux下Eclipse连接真机调试Android应用程序
  14. gbq6什么软件能打开_GBQ5是啥文件,用哪个软件打开
  15. 本科论文房地产公司财务风险评价与控制研究
  16. 云安全技术——PGP加密技术
  17. STM32与FPGA Cyclone IV芯片fsmc通信
  18. 服务器怎么做虚拟ip,如何在服务器上添加虚拟IP?看完原来如此简单!!
  19. latex参考文献生成双语对照文献表
  20. 操作系统有哪些.智能手机的操作系统有哪些?

热门文章

  1. 保Cloudera弃Hortonworks,新平台将支持五大云供应商
  2. Android EventBus使用(不含源码解析)
  3. 查看删除的帐号的DN名称(活动目录快照配置管理系列六)
  4. Linux命令(32):rar命令-解压
  5. iOS:MBProgressHUD的基本使用
  6. 背景属性的相关属性设置
  7. Microsoft Excel软件打开文件出现文件的格式与文件扩展名指定格式不一致?
  8. 反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏
  9. windbg 调试技巧
  10. qt 启动画面显示图片_用QT实现软件启动画面的效果,学习参考!