我泡在GitHub上的177天
英文原文:177 Days of GitHub
這是一個關于我如何連續 177 天(將近半年)泡在 GitHub 上不間斷地貢獻代碼的故事。我會談到我為什么要這么做,以及為什么你也應該效仿,或者至少做點類似的事情。這是一個關于接受挑戰,改變舊習并懂得適可而止的故事。我在這個過程中獲益匪淺,也希望能夠給大家一點啟示。下面我開始講這個故事。
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, 不要斷開慣性鏈,指的是一種自我激勵方法,每天完成一個目標之后就在時間表上做一個標注,時間長了標注就會連成一條鏈,可以用來自我激勵,堅持每天完成目標,這條慣性鏈就不會斷開。
翻譯: 伯樂在線 - 龔凌暉 譯文鏈接: http://blog.jobbole.com/48252/