编程每一天(Write Code Every Day)

标签: 编程 write code | 发表时间:2016-01-22 04:00 | 作者:
分享到:
出处:http://kb.cnblogs.com/

   英文原文: Write Code Every Day

  去年秋天,我的个人项目似乎走到了尽头:我一直没能取得必要的进展,在不牺牲我的主业( 可汗学院的全职工作) 的情况下,我无法完成更多的个人编程事项。

  我个人项目上的工作始终存在着几个严重问题。我把这些工作主要放在周末,但有时也可能是周末的晚上。事实上,这种安排根本不合适。想要完成如此众多的工作(如果没有完成的话,我会产生挫折感),仅仅利用周末时间,对我来说压力太大,我有点儿吃不消。而且,这个问题本身就充满了矛盾 - 我既无法保证每个周末的空闲时间,也不想把整个周末都用在编程上(失去放松或者做点其他有趣事情的机会)。

  另外一个问题是,间隔一周对于同一段代码上的工作来说,时间太长了。很容易忘记自己究竟做过些什么(即使记笔记,帮助也不大)。如果碰巧错过一个周末,将导致两个星期的缺口。实际上,这种基于多个星期的工作环境切换非常致命(因为缺乏必要的关注,我的很多个人项目已经无疾而终)。

  去年, Jennifer Dewalt 为了自学编程,在一百八十天内设计编写了一百八十个 Web 应用程序和网站。我深受启发和鼓励,觉得自己很有必要尝试一下类似的策略:每天都为自己的个人项目做一点工作,而不是集中在每个周末。

  我决定给自己定下几条规则:

  1. 每天编写代码。我可以撰写文档、博客、或者做任何其他事情,但必须在写完代码之后。
  2. 代码必须可用。无需调整缩进,无需重新格式化,尽可能无需重构。
  3. 所有代码必须在午夜前写完。
  4. 代码必须开源在 GitHub 上。

  上述规则难免过于武断。代码不一定非要在午夜前写完,我这么说只是为了避免过度劳累,导致不良代码的产生。把代码放在 Github 上,是为了强迫自己更加细心(让自己尽早考虑代码重用以及模块化)。

  截至目前,我已经连续工作接近二十周时间,而且取得了显著的成功。我想告诉大家,这种策略改变了我编写代码的工作方式,对我的生活和精神产生了巨大的影响。

  以下是习惯改变之后发生在我身上的几件趣事:

   最小可用代码。我每天强制自己编写代码不少于三十分钟。有时候工作时间可能稍长一些(但一般不超过一个小时),周末的时候,我常常工作一整天。

   编程是一个习惯。有一点需要注意的是,我并不特别在意代码在 Github 上的受关注程度。我认为我从这项实验中得到的最大收获是:这是我为我自己做出的改变,与其他人无关,我不想以此取悦任何人。就像培养个人饮食与健身习惯一样:只有当你真正开始关心自己的进步状况时,进步才会发生。

   对抗焦虑。在开始这项实验之前,我经常处于高度焦虑的状态 - 总是担心自己无法完成足够的任务(尽管我给自己没有设定最后期限)。我在实验中慢慢意识到,感受进展本身与取得实际进展一样重要。这一点让我大开眼界,只要每天都能取得进展,焦虑感自然就会消失。我对工作不再抱有过高期望,这样,我的内心就能始终保持平静。

   周末。以前,周末工作对我以及对项目进展来说,绝对至关重要(因为只有在这个时段,我才进行大量的编程)。现在的情况已经截然不同,这真是一件大好事。我之前每个周末都会给自己安排一定的工作任务,但实际完成情况常常令人失望。我很少能够按时完成这些任务,以至于不得不退掉其他的周末活动,比如,吃吃点心,参观博物馆,逛公园,朋友聚会等。你知道,这些活动对我的生活都有着积极的作用。我强烈地感觉到,即使个人项目再重要,也不应该与生活中的其他内容发生冲突。

   后台处理。每天都为自己的个人项目做一点工作,将会产生一种副作用 - 你会觉得你的大脑始终处于编程中。当我外出散步、淋浴,或者任何其他非脑力活动时,解决问题的灵感时常显现。这在以前从来没发生过。那个时候,我的时间大量消耗在忧虑之中。多数情况下,忧虑并不能帮助我完成给更多的任务。

   环境切换。通常情况下,从一个项目切换到另一个项目需要一定的转换成本。不幸的是,当一个项目停顿一周之后,你很难恢复到原来的思考状态。在一个项目上停顿时间越短,越有利于恢复记忆。

   工作平衡。改变带来的最重要一点是,学会如何更好地平衡工作、生活、以及个人项目。事先知道自己的安排,这能让我更好地平衡时间。如果我打算晚上外出,而且很晚才回来,那我就会早点开始我的个人项目。另外,如果我还没有完成我的工作,我就会晚点儿再出去,或者,尽早回家(尽量不错过每天的工作)。我注意到,我花在业余爱好上的时间少了(如雕版印刷等),但这是一个合理妥协,我必须适应。

   对外沟通。对外沟通这个新习惯给我增加额外的好处。我在个人项目上的合作伙伴很容易了解我的工作计划与进程,他们的工作计划更易于制定。外出、看电影等活动显得更加自然,这种生活很舒服。

   代码量。我简直不敢相信自己在过去几个月的工作量。我创建了一个新网站,重构了一些框架,还构建了一大堆新模块。我写的太多了,以至于有时候,我会忘记曾经做过的事情。那怕是几周前的工作,对我来说,就像一个遥远的回忆。我对我所做的一切非常满意。

  我认为,这次改变对我来说是一次巨大的成功。可能的话,我希望继续保持下去。在此期间,如果有谁希望像我一样,我将尽我所能向你展示和推销这一策略。如果你在应用这项策略的过程中,遭遇任何问题或疑惑, 请一定和我联系。我很乐意听到一些逸闻趣事。

   作者: John Resig,程序员, jQuery 之父,现生活在美国纽约。

   原文: Write Code Every Day

   感谢: Qingniu 帮助审阅并完成校对。

相关 [编程 write code] 推荐:

编程每一天(Write Code Every Day)

- - 博客园_知识库
   英文原文: Write Code Every Day.   去年秋天,我的个人项目似乎走到了尽头:我一直没能取得必要的进展,在不牺牲我的主业( 可汗学院的全职工作) 的情况下,我无法完成更多的个人编程事项.   我个人项目上的工作始终存在着几个严重问题. 我把这些工作主要放在周末,但有时也可能是周末的晚上.

Clean-Code: 注释

- We_Get - 博客园-首页原创精华区
别给糟糕的代码加注释-----------------重新写吧. 这是书中的关于注释一章的第一句话,怎么说呢,这句话个人感觉很对,但是实际上却很少这么做,. 糟糕的代码不是自己写的,别人写的代码,还是让别人自己去维护吧,出了问题也是别人的. 糟糕的代码目前可以正常工作,软件开发中有一条古老哲言:如果它能工作就不要动它,很多程序员都遵守这条准则.

聊聊Code Review

- - 梦想风暴
hopesfish评论《 那一点的调用》时,问了一个关于Code Review的问题:. 想请教一下,TW的筒子是如何做code reivew或者鼓励客户做code review的. 我在翻阅博主的帖子的时候,似乎对这块没有特别强调,而是更多偏重于TDD,我觉得TDD的问题是一碰到没有责任心的程序猿,就很容易流于形式了.

Redo write触发的四种情况

- - CSDN博客推荐文章
1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动的执行将其写入. 2、当有进程要从redo buffer中分配空间时,会先计算redo buffer中已经占用的空间,如果该空间大于_log_io_size这个参数值,并且此时的LGWR处于空闲状态,便会被激活执行后台写.

Java Code Review清单

- - ImportNew
使用可以表达实际意图(Intention-Revealing)的名称. DRY(Don’t Repeat Yourself)原则,(拒绝重复). 用代码来解释自己的做法(译者注:即代码注释). *参考自: http://techbus.safaribooksonline.com/book/software-engineering-and-development/agile-development/9780136083238.

Write or die:不能停笔的写作应用

- tossking - 爱范儿 · Beats of Bits
作家 Alisa Bowman 在文章《如何写得快》中,认为如果要写得快,就“不能停笔”:. 一开始就不要停下,除非你脑中在没有词可以涌出. 不要因为拼写错误而停下,不要因为语法而停下,不要因为反复思量而停下. Write or Die(WoD),就是一个让你“不能停笔”的应用. 如果停下笔来,它就会惩罚你,直到你重新提笔写作为止.

how to write extension for firefox -- 如何给firefox编写插件

- - CSDN博客Web前端推荐文章
1.1 创建一个dev profile. 1.3 创建或者修改一些preference. 1.4 启动firefox. 使用-no-remoet可以使你同时用自己平时使用的profile浏览网页,和你开发的profile互补干扰. Note 1:当你修改install.rdf中有关firefox的compatile version时,有时会提示你版本不兼容当前的firefox,不要理会,.

我的code review规则

- vento - 我的宝贝孙秀楠 ﹣C++, Lua, 大连,程序员
1) 是否有语法错误,编译错误,编译警告. 做法:下载最新代码,将编译警告级别提升到最高,检查output信息. 2)是否符合需求,完成requirement文档要求的内容,不能多,也不能少. 注意:即使发现有问题代码,如果与需求关联不大,不要涉及. 应该让每次enhancement和bug fix最简洁,牵涉范围最小,影响到组件最少.

Google Code Jam Japan開催

- Adam - スラッシュドット・ジャパン
あるAnonymous Coward 曰く、Googleによって毎年開催されているプログラミングコンテストGoogle Code Jamですが、今年は初めて日本人向けの日本語でのコンテストGoogle Code Jam Japanが開催されるようです(Google Japan Blog). 予選は10月1日にオンラインで開催され、予選開催中にも参加登録を受け付けるとのこと(スケジュール).

Code Review那些事儿

- - 非技术 - ITeye博客
       曾经有一段 垃圾代码放在我的面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此. ---------改编于周星星的经典台词.       虽然有点夸张,但编码界确实大大存在这种情况,每当接手别人的代码,都有一种想重新写一遍的感觉,等到别人再来接手你的代码时,同样的感觉.