jQuery之父:每天都寫點程式碼

伯樂線上讀者發表於2014-05-29

【伯樂線上導讀】:John Resig 是 jQuery 的創造者和主程,2011年5月 John Resig 從 Mozilla 離職,隨後加入線上教育組織 Khan Academy。2012年國外一位藝術妹紙 Jennifer Dewalt 在180天做了180個“網站”,Jennifer 的堅持鼓舞和啟發了很多技術人員。John Resig 也深受啟發,結合自身情況寫了這篇博文。感謝 AvisBlume 的熱心翻譯。如果其他朋友也有不錯的原創或譯文,可以嘗試加入伯樂線上專欄作者

去年秋天,我的“兼職程式設計專案”遇到了一些問題:要不是從 Khan Academy 的專案裡挪出時間來的話,我根本沒辦法將不理想的進度彌補上。

這些專案遇到了一些嚴重的問題。之前的工作我主要是在週末,有時是工作日的晚上做。但最終證明,這樣的工作安排並不適合我。為了在週末儘可能地嘗試完成高質量的工作,我壓力巨大(如果我做不到的話,會有很深的挫敗感)。這樣安排的問題在於週末並不一定都有空–而我也不想週末兩天都在寫程式碼(要犧牲掉所有的休閒和樂趣)。

另外一個問題就是隔了一週這麼長的時間之後,很容易會忘掉上個週末在做什麼、還有什麼沒做(即使做了備忘也會這樣)。更不用說萬一某個週末什麼程式碼都沒寫,那就要隔兩週了。間隔太長的話對於專案來說是致命的(我有好多兼職專案就這麼掛掉了)。

Jennifer Dewalt 去年完成了一項創舉,她在180天裡完成了180個網站。我深受啟發,因此我強迫自己採用類似的策略:那就是每一天都要花時間在兼職專案上。

Illustration bySteven Resig

於是我為自己定了一些規矩:

  1. 我必須每天都寫點程式碼。我可以寫文件、博文或者其它的東西,但必須是在寫了一些程式碼的基礎上。
  2. 寫的程式碼必須是有用的。不調整程式碼縮排,不轉換格式,如果可能的話絕不重構程式碼。(這些事情都是允許的,但不能作為當天僅有的工作。)
  3. 所有的程式碼都必須在午夜前完成。
  4. 程式碼必須是開源的並且放在Github上。

部分規矩執行起來並不是那麼嚴格要求的。並不是說只能在午夜前才能寫程式碼,只是不想熬夜然後寫出來的程式碼卻馬馬虎虎的。程式碼也並不是一定要開源或者放在Github上。這麼做只是為了讓我對自己寫的程式碼印象更深刻(以便於重用程式碼、為之前寫的程式碼建立模組)。

至今為止效果非常好,我已經連續堅持了20個星期了。我寫程式碼的習慣得到了徹底改變,我的生活質量和精神狀態也得到了很大的提升,因此我想把這段經歷寫下來。

習慣的改變帶來了以下不少有意思的影響:

最小量的可行程式碼 每天我都強迫自己至少要寫30分鐘的程式碼(時間太少的話真的很難寫出有意義的程式碼,尤其是在花時間記起前一天是在哪裡停止的之後)。有些工作日我會多寫點時間(通常不超過1小時),而週末的話有時能寫一整天。

讓編碼成為習慣 值得一提的是我並不特別在意上面這張Github工作記錄表會給別人什麼樣的印象。我覺得最重要的一點是:你做出這樣的改變是為了你自己的生活,而不是為了讓別人對你的工作感到滿意。這個道理對於減肥或者健身也適用:如果你不是以提升自己為目的的話,你是不會成功的。

與焦慮做鬥爭 在作此嘗試之前,我經常會很焦慮,總覺得做的工作“不夠多”,完成的進度“不夠多”(其實這兩者都是無法衡量的,因為我的兼職專案都沒有特定的最後期限)。我意識到要做出進展的感覺其實和做出實際進展是同樣重要的。這讓我豁然開朗。自從我每天持續不斷地做出進展之後,焦慮感也漸漸消失了。看著每天都有完成工作量,內心感到很平靜。再也不會憂心重重地覺得還要完成更多的量才行。

週末 在週末完成工作對於推動工作進度來說曾是十分重要的(那時週末是我唯一能夠很好的完成編碼工作的時間)。現在情況發生了改變–好的改變。制定好週末必須要完成哪些工作的做法除了最後讓我感到失望之外別無他用。我幾乎就沒完成過週末計劃表上的事情,而為此我還不得不拒絕其它我喜歡的週末活動(吃點心、參觀博物館、逛公園、陪妻子等等),就只是為了能完成更多的工作。我深深地覺得,就算兼職專案真的很重要,它們也不應該成為生活的唯一。

後臺執行 每天寫點兼職專案程式碼會帶來一個有趣的副作用,它讓你覺得這些工作都是在大腦的後臺執行的。因此,當我在散步、洗澡或者做其它不需要耗費腦力的事情時,我就會在考慮之後我要寫什麼程式碼、要怎麼解決遇到的問題。這種情況在我一週寫一次程式碼或者隔週寫一次程式碼的時候是沒有發生過的。那時時間都被消耗在思考其它事情上,通常是在為還沒完成工作而感到焦慮。

上下文交換 中斷後又繼續開始兼職專案的時候總是會有上下文交換時那樣的損耗發生。很不幸的是做了一週其它工作之後再回到之前的專案上來總是會非常困難。而持續的每天工作對減少這種損耗就很有幫助,因為時間間隔要短得多,要記起前一天在做什麼很輕鬆。

工作的平衡 這種改變帶來的最重要的一點就是讓我學會了如何更好地平衡本職工作、生活和兼職專案。知道我要每一天都花時間在兼職專案上,我就必須更好地平衡分配時間。如果我計劃晚上出去並且要很晚才回來,那我就需要在當天早些時候做兼職部分的工作,而將主要的Khan Academy的工作放到後面再做。另外如果我還沒完成工作而又在晚些的時候出去了,那我就得趕緊回家做完它(而不是又錯過一天)。我要指出一點,一直以來我都發現能花在業餘愛好(譬如雕版印刷)上的時間變少了,但是這對於維持生計來說是很合理的交易。

給別人的印象 這是我要說的改變帶來的最重要的一個好處。我妻子理解我每天都得完成一些工作,因而有時活動安排要圍繞著這些工作展開。當能夠對她說“是的,我們可以出去看電影什麼的。但我之後必須要寫程式碼。”,而她也表示理解並且安排時間時會將寫程式碼的事考慮進去,這讓我感到非常舒服。

之前寫了多少程式碼? 我不知道過去的幾個月裡一共寫了多少程式碼。我建立了幾個網站、重寫了一些架構、寫了一堆新的節點模組。寫的程式碼太多了我有時會不記得寫了什麼–幾周前寫的東西看起來確實非常遙遠了。我對已完成的工作量相當地滿足。

我將這種習慣上的改變視為很大的成功,希望我能日復一日地堅持下去。同時我也會盡力向其他想做很多兼職專案人推薦這種策略。不管這對你有沒有幫助,都請聯絡我,我很想聽聽你們的故事。

相關文章