我泡在GitHub上的177天 by Ryan Seys
我泡在GitHub上的177天
github的30天挑战
故事要从一个30天的挑战开始说起。2月21日那天,我的一个好朋友Shuhao发消息给我,向我发出挑战:我必须连续30天向Github提交代码更新,而他也同样要完成这个任务。那时我在Github上的最长“连击”天数只有5天而已。这个“连击”记录太不给力了,我一直想要提高它,却总是没有足够的动力付诸实践。这个对我俩而言都非常具有挑战性的机会正是我所需要的。我接受了这个挑战,并列出了以下几个简单的约定:
- 除非有显著的更改,否则编辑README文件不能计入更新
- 禁止使用脚本自动编辑;所有的提交的更新必须是人为完成的
- 禁止提交搞笑的无关程序逻辑之类的更新
一开始我就来了个爆发式增长——第一天提交了近30个更新到我的网站及其他项目。 事实上,这也是我在这近半年的“连击”过程当中一天内贡献最多的一次。我立志完成这30天的目标,甚至更长,直到我俩中有一人认输为止,这样的想法让我感到斗志昂扬——我想这是最好的开端。
一个星期
到了一个星期左右的时候,这个挑战的难度开始渐渐地显现出来。有一次我差点忘记还有这回事,直到最后一刻才匆匆忙忙把当天的更新提交上去。Shuhao在第八天放弃了;我想他大概是忘记了——这也无可厚非。
两个星期
到了第二周和第三周,每天记得要提交更新已经变得比较容易,我把它变成了一种习惯性地动作。很快这种提交更新的自醒就和刷牙的自觉绑定了起来,而刷牙是一件我很少会忘记去做的事情。与此同时,我开始阅读一本叫《习惯的力量》的书,这本书让我了解了习惯,以及如何理解和改变你的习惯并从中受益。如果你有兴趣了解你的大脑是如何处理习惯的,我推荐你读一下这本书。它很有意思,里面有个故事提到了一个从来记不住回家路线的人,却能够每天在这个街区散步而从来不迷路,这都是因为习惯的力量。有点扯远了。还没等我意识到习惯的力量,它已经引领我到达了……
三十天!
三十天是个激动人心的里程碑!我做到了!我只想继续前进!三十天之后,“连击”就变成了一种生活方式。吃饭,睡觉,提交更新——已经成为常态,我可以不费吹灰之力地把它纳入我每天的例行公事。可是像所有习惯一样,它很难保持百分百的连贯性,有时太忙了就得临时抱一下佛脚。曾经我从手机上提交过更新,跟朋友聚会到很晚回家之后提交过更新,甚至在“鲍尔默癫峰”【译注1】状态下都提交过更新。这让我想起了一些我学到的关于向GitHub提交代码的小技巧:
GitHub代码更新小技巧:
- GitHub按照太平洋标准时间(PST, Pacific Standard Time)计时,这意味着我可以在东部时间(EST, East Standard Time)凌晨12点到3点之间随便在哪儿提交代码,然后算成是前一天的任务,这招在我有几次回家特别晚的时候很管用。
- 记录一个问题可以算做提交过东西了,这招在我想不出什么新点子的时候救我过几次。
- 提交更新和上传代码是分开算的,现在提交更新然后晚点再上传代码,还是会以提交更新的时间为准。
- 新建代码库的初次提交是不纳入统计的,但是当你第二次提交更新的时候就会把两次都算进去,这点比较诡异。
- 归并请求创建的时候会被算作一次提交,实际合并分支的时候则算作另一次提交。如果最后两个分支没有合并,那么不好意思,第二次提交就不算数了。
虽然这些小技巧曾经在我的GitHub“连击”过程中毋庸置疑地挽回了局势,我还是遵守了之前列出的那些小约定。你可以在这里找到更多GitHub小贴士。
一百天
一百天对我来说也是一个重要的时刻。那时我在旧金山,在Mozilla实习。你可以在我的博客(注:该文已由@ctcetl 翻译)上读到关于这段经历的所有东西。在Mozilla实习最棒的一点就是一切都是开源的,所以我基本上只需要工作就可以让我的“连击”不间断。虽然没有说起来那么容易,但是呆在Mozilla确实帮了大忙。
在Mozilla内部也有一些竞争对手,包括Shuhao,他这个暑假跟我一起在那里实习,重新开始了他的“连击”并且这次更加成功;据Mozilla的小道消息说,另外还有一个我不认识的对手也在默默地与我竞争。
一百五十天
那时我继续坚持“连击”的动力突然急剧下降。我把这归根于新想法的缺失,想追寻新挑战的冲动,同时我也意识到“连击”总有一天会不可避免地结束。这些因素,再加上实在有太多方法可以作弊(就像这哥们干的那样),使得这个挑战变得来越鸡肋。
我想要逃离。我想要片刻休憩,彻底忘掉GitHub。我只想要无拘无束地思考新的主意而不用愁着为了提交更新而提交更新。于是我决定用一个整数来结束”连击“。我决定一直继续到两百天,然后我就可以淡定地坐下来,看着我的“连击”记录逐渐崩塌。
呃噢!
200天的目标终于还是没有达成,我在第178天得时候忘了提交更新。意识到杯具的同时,我也卸下了心头的重担,感觉浑身轻松。一切终于结束了。
回顾
177天的“连击”教会了我不少关于习惯的东西。它教会了我好习惯如果刻意过度遵循的话也会变成坏事;它让我明白了“不要断开惯性链”【译注2】的力量,那是驱使GitHub“连击”成功的激励方法。我现在仍然定期向GitHub提交更新,但是现在“必须”提交的少了,“需要”提交的多了。我有时会离开电脑几天去更新我的想法,等我回来的时候就变得更加给力。我推荐每个人都可以尝试一下用这个方法去打破一个旧习惯或者建立一个新习惯,但它可能过于强大以至于会让人不能自拔,所以小心点!
如果你知道谁有比我更长的GitHub“连击”数,务必告诉我!我还没找到过这样的人呢!:)
快乐地贡献代码吧!请在GitHub上follow我!这是在HN上的讨论。
【译注】
- Ballmer Peak, 鲍尔默癫峰,传说中微软在80年代末发现的定律,即程序员在血液酒精浓度在0.129%~0.138%时会产生超人的编程能力。这个能力也有副作用,千万不要给一个团队可以喝一年的威士忌然后让他们开始干活,Windows ME就是前车之鉴。
- Don’t break the chain, 不要断开惯性链,指的是一种自我激励方法,每天完成一个目标之后就在时间表上做一个标注,时间长了标注就会连成一条链,可以用来自我激励,坚持每天完成目标,这条惯性链就不会断开
参考:本文由 伯乐在线 - 龚凌晖 翻译自 Ryan Seys。
我泡在GitHub上的177天 by Ryan Seys的更多相关文章
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- GitHub上受欢迎的Android UI Library
GitHub上受欢迎的Android UI Library 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 Vi ...
- github上关于iOS的各种开源项目集合(转)
UI 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITable ...
- Android github上开源项目、酷炫的交互动画和视觉效果地址集合
Android上开源的酷炫的交互动画和视觉效果:http://blog.csdn.net/u013278099/article/details/50323689 Awesome-android-ui: ...
- github上最全的资源教程-前端涉及的所有知识体系【转】
github上最全的资源教程-前端涉及的所有知识体系[转自:蓝猫的博客] 综合类 综合类 地址 前端知识体系 http://www.cnblogs.com/sb19871023/p/3894452.h ...
- 转: Github上关于iOS的各种开源项目集合
https://blog.csdn.net/jiashaoying/article/details/79079500 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. ...
- 还怕问源码?Github上神级Android三方源码解析手册,已有7.6 KStar
或许对于许多Android开发者来说,所谓的Android工程师的工作"不过就是用XML实现设计师的美术图,用JSON解析服务器的数据,再把数据显示到界面上"就好了,源码什么的,看 ...
- 清空Github上某个文件的历史版本
title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...
随机推荐
- 特殊浮点值 Java
// Finite +-0.0 System.out.println("Finite with +-0.0:"); System.out.println("Finite ...
- 总结Qt中经常出现的一些问题
1.Qt中用高版本打开低版本的工程 编译时出现错误 : C1189: #error : "This file was generated using the moc from 4.7.0. ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- linux修改主机名(hostname)转载
Linux修改主机名的方法 用hostname命令可以临时修改机器名,但机器重新启动之后就会恢复原来的值. #hostname //查看机器名#hostname -i //查看本机器名对应的ip ...
- bootstrap 正则表达式
<asp:TextBox runat="server" title="邮箱正确格式:xxx@xxx.xxx" class="form-cont ...
- $.extend(),与$.fn.extend() 讲解
$.extend(),与$.fn.extend() 讲解(一) (2013-07-11 10:24:31) 转载▼ 转自:http://blog.sina.com.cn/s/blog_a3bd3bd0 ...
- 查内网虚拟机映射的公网IP
1.访问ip138.com 2.curl ifconfig.me
- bzoj1260[CQOI2007]涂色paint
思路:区间dp,用f[i][j]表示区间[i,j]的答案,然后转移即可. #include<iostream> #include<cstdio> #include<cst ...
- ubuntu下编译安装apache
官网http://httpd.apache.org/download.cgi下载apache源码包后 /*解包*/ gzip -d httpd-2_x_NN.tar.gz tar -xf httpd- ...
- css动画怎么写:3个属性实现
3个属性:transition,animation,transform 实现步骤: 1.css定位 2.rgba设置颜色透明度 3.转换+动画 transform+animation 4.动画平滑过渡 ...