jQuery之父:每天寫程式碼

發表於2014-04-21

去年秋天我的支線程式碼專案 遇到了一些問題,專案進展不足,而且我沒法找到一個完成更多程式碼的方法(在不影響我在Khan Academy方面的工作的前提下)。

我主要在週末進行我的支線,當然有時候也在晚上進行。這個方法對我而言效果不佳。我的壓力太重了,我需要在週末努力完成儘可能多的工作(如果沒做到,我會為此感到挫敗)。還有一個問題是我無法保證每個週末都有空,而且我也不想把週末所有的時間都花在程式設計上(失去一切放鬆娛樂的機會)。

此外,每隔一週進行編碼的話,間隙太長了。太容易忘記你正在做什麼,或者你還需要做什麼了(即使你有筆記)。如果你錯過了一個週末的話,問題就更嚴重了,間隔一下子變成兩週了。多周的上下文切換可能是致命的(我有很多支線專案因為這類注意力缺乏而死亡了)。

Jennifer Dewalt 去年透過在 180 天建立 180 個網站的方式來自學程式設計,她的做法啟發了我。我決定採用一個簡單的策略:每天編碼。

我決定為自己定下一些規則:

  1. 每天必須寫程式碼。我可以寫文件、寫部落格或者寫其他東西,但是這些不能代替寫程式碼。
  2. 程式碼必須是實際起作用的。調整縮排、重新排版不算。如果有可能,重構也不算。(可以進行這些事情,但這些不能是一天唯一的編碼。)
  3. 所有程式碼必須在午夜之前完成。
  4. 程式碼必須是開源的,放在Github上。

有些規則比較武斷。比如程式碼其實不用在午夜前寫完的。但我擔心熬夜導致程式碼質量下降。同樣,程式碼也不用開源,或者放在GitHub上。我這麼做是想強迫自己寫程式碼的時候上點心(考慮可讀性,同時較早地考慮模組化)。

到目前為止這個策略很有效。我基本保持了20周的連續工作。我之所以寫這篇部落格,正是因為它完全改變了我編寫程式碼的方式,更重要的是影響了我生活和心智。

這個習慣的改變產生了一些有趣的結果:

最小可行的編碼。 我強迫自己每天花不少於半個小時來寫程式碼(如果少於這個時間就很難寫出有價值的程式碼了,特別是回憶前一天寫了什麼還要花一點時間)。工作日的時候我有時寫得多一點(一般不超過一個小時),週末我有時整天寫程式碼。

寫程式碼成為習慣。 值得一提的是我並不是特別在乎上面的Github圖形。我覺得這是這個實驗最值得借鑑的一點:這是你為自己做的一個改變,而不是為了滿足別人對你工作的評價。節食和鍛鍊也是一個道理:如果你不在乎提升自己,那麼你永遠都不會取得成功。

與焦慮作鬥爭。 在開始這個實驗之前,我時常為沒有完成足夠的工作或取得足夠進展而感到焦慮(工作和進展都難以量化,因為我的支線專案沒有死限)。我意識到,感覺到進展和實際推進工作同樣重要。這令我大開眼界。一旦我每天持續地推進專案,我的焦慮就開始消散了。我對自己的工作量很心安,我再也沒有那種難以承受的渴望,想要疾風驟雨式地推進專案的渴望。

週末。 以前,在週末完成工作絕對是前進的關鍵動力(因為通常而言這是我唯一大量推進支線專案工作的機會。)現在情況不一樣了——這是件好事。期望在一個週末完成一週的所有工作只會讓我失望。我極少很完成工作,因此為了完成更多工作而拒絕了其他喜歡的週末活動(例如吃 dim sum,參觀博物館,去公園遊玩,陪伴我的伴侶等)。我深深地感到,雖然支線專案是非常重要的,但是它們不應該是生活的全部。

後臺處理。 每天編寫支線專案程式碼的一個有趣的副作用是你當前的任務時常在你大腦的後臺執行。因此當我去散步或沐浴的時候,或者進行其他不費腦的活動的時候,我在思考我接下來將做哪些編碼,尋找解決問題的好方法。我以前一週或兩週編碼一次的時候可不是這樣。當時時間被花費在思考其他一些事情上,通常是在為沒法完成任何支線專案而感到焦慮。

上下文切換。 拾起支線專案工作的時候總會有上下文開銷的。很不幸,重拾整整一週前的思考是極其困難的。每天做一點對此很有幫助,因為間隔時間大大縮短了,讓我很容易想起在做什麼。

平衡工作。 這個改變最重要的方面之一是我已經簡單地學會了如何更好地平衡工作、生活和支線專案。我知道自己每天都要做支線專案,因此我需要更好地管理時間。如果我計劃晚上出去,並且很晚才能回家,那麼我需要在早上為支線專案工作,在開始為我主業Khan Academy工作之前。同樣的,如果我在外面,而我還沒有完成我的工作,時間已經很晚了,那麼我需要儘快趕回家去完成工作(以免錯過一天)。我需要指出的是我發現自己把更少的時間花在愛好上了(例如木版畫),但是這是一個合理的代價,我得接受這個。

對外溝通。 跟外界溝通自己的新習慣是很有好處的。我的伴侶理解每都必須完成工作,因此有活動安排有時需要據此作出調整。這樣我就可以很方便地說:“是的,我們可以出去/看個電影/等等。但是我之後需要寫程式碼。”我的伴侶會理解我,並在安排活動時考慮到這點。

我寫了多少程式碼? 我很難相信自己在過去的幾個月寫了這麼多的程式碼。我新建了幾個網站,重寫了一些框架,並建立了大量node模組。我寫了如此之多的程式碼以至於我有時我都忘記自己做了寫什麼——幾周前的工作感覺是很久遠的記憶。我非常非常高興自己能寫這麼多程式碼。

我認為這個習慣的改變是一個巨大的成功。我希望自己能持續保持這個習慣。同時,我盡力向其他希望能完成大量的支線專案的人推薦這個策略。告訴我這個策略對你而言是有效還是無效。我很希望能從你那裡聽到一些有意思的東西。

關於作者

John Resig, jQuery之父,同時也是Pro Javascript TechniquesSecrets of the JavaScript Ninja的作者。他目前主持 Khan Academy 的開發工作。


原文 Write Code Every Day
翻譯 SegmentFault

相關文章