我泡在 GitHub 上的 177 天

2,243 阅读8分钟
原文链接: blog.jobbole.com
本文由 伯乐在线 - 龚凌晖 翻译自 Ryan Seys。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。

【感谢 Strikingly 团队成员 @idanielglh 的热心翻译。如果其他朋友也有不错的原创或译文,可以投递到伯乐在线。】

这是一个关于我如何连续177天(将近半年)泡在GitHub上不间断地贡献代码的故事。我会谈到我为什么要这么做,以及为什么你也应该效仿,或者至少做点类似的事情。这是一个关于接受挑战,改变旧习并懂得适可而止的故事。我在这个过程中获益匪浅,也希望能够给大家一点启示。下面我开始讲这个故事。

Github的30天挑战

故事要从一个30天的挑战开始说起。2月21日那天,我的一个好朋友Shuhao发消息给我,向我发出挑战:我必须连续30天向Github提交代码更新,而他也同样要完成这个任务。那时我在Github上的最长“连击”天数只有5天而已。这个“连击”记录太不给力了,我一直想要提高它,却总是没有足够的动力付诸实践。这个对我俩而言都非常具有挑战性的机会正是我所需要的。我接受了这个挑战,并列出了以下几个简单的约定:

  1. 除非有显著的更改,否则编辑README文件不能计入更新
  2. 禁止使用脚本自动编辑;所有的提交的更新必须是人为完成的
  3. 禁止提交搞笑的无关程序逻辑之类的更新

一开始我就来了个爆发式增长——第一天提交了近30个更新到我的网站及其他项目。 事实上,这也是我在这近半年的“连击”过程当中一天内贡献最多的一次。我立志完成这30天的目标,甚至更长,直到我俩中有一人认输为止,这样的想法让我感到斗志昂扬——我想这是最好的开端。

一个星期

到了一个星期左右的时候,这个挑战的难度开始渐渐地显现出来。有一次我差点忘记还有这回事,直到最后一刻才匆匆忙忙把当天的更新提交上去。Shuhao在第八天放弃了;我想他大概是忘记了——这也无可厚非。

两个星期

到了第二周和第三周,每天记得要提交更新已经变得比较容易,我把它变成了一种习惯性地动作。很快这种提交更新的自醒就和刷牙的自觉绑定了起来,而刷牙是一件我很少会忘记去做的事情。与此同时,我开始阅读一本叫《习惯的力量》的书,这本书让我了解了习惯,以及如何理解和改变你的习惯并从中受益。如果你有兴趣了解你的大脑是如何处理习惯的,我推荐你读一下这本书。它很有意思,里面有个故事提到了一个从来记不住回家路线的人,却能够每天在这个街区散步而从来不迷路,这都是因为习惯的力量。有点扯远了。还没等我意识到习惯的力量,它已经引领我到达了……

三十天!

三十天是个激动人心的里程碑!我做到了!我只想继续前进!三十天之后,“连击”就变成了一种生活方式。吃饭,睡觉,提交更新——已经成为常态,我可以不费吹灰之力地把它纳入我每天的例行公事。可是像所有习惯一样,它很难保持百分百的连贯性,有时太忙了就得临时抱一下佛脚。曾经我从手机上提交过更新,跟朋友聚会到很晚回家之后提交过更新,甚至在“鲍尔默癫峰”【译注1】状态下都提交过更新。这让我想起了一些我学到的关于向GitHub提交代码的小技巧:

GitHub代码更新小技巧:

  1. GitHub按照太平洋标准时间(PST, Pacific Standard Time)计时,这意味着我可以在东部时间(EST, East Standard Time)凌晨12点到3点之间随便在哪儿提交代码,然后算成是前一天的任务,这招在我有几次回家特别晚的时候很管用。
  2. 记录一个问题可以算做提交过东西了,这招在我想不出什么新点子的时候救我过几次。
  3. 提交更新和上传代码是分开算的,现在提交更新然后晚点再上传代码,还是会以提交更新的时间为准。
  4. 新建代码库的初次提交是不纳入统计的,但是当你第二次提交更新的时候就会把两次都算进去,这点比较诡异。
  5. 归并请求创建的时候会被算作一次提交,实际合并分支的时候则算作另一次提交。如果最后两个分支没有合并,那么不好意思,第二次提交就不算数了。

虽然这些小技巧曾经在我的GitHub“连击”过程中毋庸置疑地挽回了局势,我还是遵守了之前列出的那些小约定。你可以在这里找到更多GitHub小贴士。

一百天

一百天对我来说也是一个重要的时刻。那时我在旧金山,在Mozilla实习。你可以在我的博客(注:该文已由@ctcetl 翻译)上读到关于这段经历的所有东西。在Mozilla实习最棒的一点就是一切都是开源的,所以我基本上只需要工作就可以让我的“连击”不间断。虽然没有说起来那么容易,但是呆在Mozilla确实帮了大忙。

在Mozilla内部也有一些竞争对手,包括Shuhao,他这个暑假跟我一起在那里实习,重新开始了他的“连击”并且这次更加成功;据Mozilla的小道消息说,另外还有一个我不认识的对手也在默默地与我竞争。

一百五十天

那时我继续坚持“连击”的动力突然急剧下降。我把这归根于新想法的缺失,想追寻新挑战的冲动,同时我也意识到“连击”总有一天会不可避免地结束。这些因素,再加上实在有太多方法可以作弊(就像这哥们干的那样),使得这个挑战变得来越鸡肋。

我想要逃离。我想要片刻休憩,彻底忘掉GitHub。我只想要无拘无束地思考新的主意而不用愁着为了提交更新而提交更新。于是我决定用一个整数来结束”连击“。我决定一直继续到两百天,然后我就可以淡定地坐下来,看着我的“连击”记录逐渐崩塌。

呃噢!

200天的目标终于还是没有达成,我在第178天得时候忘了提交更新。意识到杯具的同时,我也卸下了心头的重担,感觉浑身轻松。一切终于结束了。

回顾

177天的“连击”教会了我不少关于习惯的东西。它教会了我好习惯如果刻意过度遵循的话也会变成坏事;它让我明白了“不要断开惯性链”【译注2】的力量,那是驱使GitHub“连击”成功的激励方法。我现在仍然定期向GitHub提交更新,但是现在“必须”提交的少了,“需要”提交的多了。我有时会离开电脑几天去更新我的想法,等我回来的时候就变得更加给力。我推荐每个人都可以尝试一下用这个方法去打破一个旧习惯或者建立一个新习惯,但它可能过于强大以至于会让人不能自拔,所以小心点!

如果你知道谁有比我更长的GitHub“连击”数,务必告诉我!我还没找到过这样的人呢!:)

快乐地贡献代码吧!请在GitHub上follow我!这是在HN上的讨论

【译注】

  1. Ballmer Peak, 鲍尔默癫峰,传说中微软在80年代末发现的定律,即程序员在血液酒精浓度在0.129%~0.138%时会产生超人的编程能力。这个能力也有副作用,千万不要给一个团队可以喝一年的威士忌然后让他们开始干活,Windows ME就是前车之鉴。
  2. Don’t break the chain, 不要断开惯性链,指的是一种自我激励方法,每天完成一个目标之后就在时间表上做一个标注,时间长了标注就会连成一条链,可以用来自我激励,坚持每天完成目标,这条惯性链就不会断开。