程式設計每一天

Jodoo發表於2016-01-07

去年秋天,我的個人專案似乎走到了盡頭:我一直沒能取得必要的進展,在不犧牲我的主業(可汗學院的全職工作) 的情況下,我無法完成更多的個人程式設計事項。

我個人專案上的工作始終存在著幾個嚴重問題。我把這些工作主要放在週末,但有時也可能是週末的晚上。事實上,這種安排根本不合適。想要完成如此眾多的工作(如果沒有完成的話,我會產生挫折感),僅僅利用週末時間,對我來說壓力太大,我有點兒吃不消。而且,這個問題本身就充滿了矛盾 - 我既無法保證每個週末的空閒時間,也不想把整個週末都用在程式設計上(失去放鬆或者做點其他有趣事情的機會)。

另外一個問題是,間隔一週對於同一段程式碼上的工作來說,時間太長了。很容易忘記自己究竟做過些什麼(即使記筆記,幫助也不大)。如果碰巧錯過一個週末,將導致兩個星期的缺口。實際上,這種基於多個星期的工作環境切換非常致命(因為缺乏必要的關注,我的很多個人專案已經無疾而終)。

去年,Jennifer Dewalt 為了自學程式設計,在一百八十天內設計編寫了一百八十個 Web 應用程式和網站。我深受啟發和鼓勵,覺得自己很有必要嘗試一下類似的策略:每天都為自己的個人專案做一點工作,而不是集中在每個週末。

enter image description here

我決定給自己定下幾條規則:

  1. 每天編寫程式碼。我可以撰寫文件、部落格、或者做任何其他事情,但必須在寫完程式碼之後。
  2. 程式碼必須可用。無需調整縮排,無需重新格式化,儘可能無需重構。
  3. 所有程式碼必須在午夜前寫完。
  4. 程式碼必須開源在 GitHub 上。

上述規則難免過於武斷。程式碼不一定非要在午夜前寫完,我這麼說只是為了避免過度勞累,導致不良程式碼的產生。把程式碼放在 Github 上,是為了強迫自己更加細心(讓自己儘早考慮程式碼重用以及模組化)。

截至目前,我已經連續工作接近二十週時間,而且取得了顯著的成功。我想告訴大家,這種策略改變了我編寫程式碼的工作方式,對我的生活和精神產生了巨大的影響。

以下是習慣改變之後發生在我身上的幾件趣事:

最小可用程式碼。我每天強制自己編寫程式碼不少於三十分鐘。有時候工作時間可能稍長一些(但一般不超過一個小時),週末的時候,我常常工作一整天。

程式設計是一個習慣。有一點需要注意的是,我並不特別在意程式碼在 Github 上的受關注程度。我認為我從這項實驗中得到的最大收穫是:這是我為我自己做出的改變,與其他人無關,我不想以此取悅任何人。就像培養個人飲食與健身習慣一樣:只有當你真正開始關心自己的進步狀況時,進步才會發生。

對抗焦慮。在開始這項實驗之前,我經常處於高度焦慮的狀態 - 總是擔心自己無法完成足夠的任務(儘管我給自己沒有設定最後期限)。我在實驗中慢慢意識到,感受進展本身與取得實際進展一樣重要。這一點讓我大開眼界,只要每天都能取得進展,焦慮感自然就會消失。我對工作不再抱有過高期望,這樣,我的內心就能始終保持平靜。

週末。以前,週末工作對我以及對專案進展來說,絕對至關重要(因為只有在這個時段,我才進行大量的程式設計)。現在的情況已經截然不同,這真是一件大好事。我之前每個週末都會給自己安排一定的工作任務,但實際完成情況常常令人失望。我很少能夠按時完成這些任務,以至於不得不退掉其他的週末活動,比如,吃吃點心,參觀博物館,逛公園,朋友聚會等。你知道,這些活動對我的生活都有著積極的作用。我強烈地感覺到,即使個人專案再重要,也不應該與生活中的其他內容發生衝突。

後臺處理。每天都為自己的個人專案做一點工作,將會產生一種副作用 - 你會覺得你的大腦始終處於程式設計中。當我外出散步、淋浴,或者任何其他非腦力活動時,解決問題的靈感時常顯現。這在以前從來沒發生過。那個時候,我的時間大量消耗在憂慮之中。多數情況下,憂慮並不能幫助我完成給更多的任務。

環境切換。通常情況下,從一個專案切換到另一個專案需要一定的轉換成本。不幸的是,當一個專案停頓一週之後,你很難恢復到原來的思考狀態。在一個專案上停頓時間越短,越有利於恢復記憶。

工作平衡。改變帶來的最重要一點是,學會如何更好地平衡工作、生活、以及個人專案。事先知道自己的安排,這能讓我更好地平衡時間。如果我打算晚上外出,而且很晚才回來,那我就會早點開始我的個人專案。另外,如果我還沒有完成我的工作,我就會晚點兒再出去,或者,儘早回家(儘量不錯過每天的工作)。我注意到,我花在業餘愛好上的時間少了(如雕版印刷等),但這是一個合理妥協,我必須適應。

對外溝通。對外溝通這個新習慣給我增加額外的好處。我在個人專案上的合作伙伴很容易瞭解我的工作計劃與程式,他們的工作計劃更易於制定。外出、看電影等活動顯得更加自然,這種生活很舒服。

程式碼量。我簡直不敢相信自己在過去幾個月的工作量。我建立了一個新網站,重構了一些框架,還構建了一大堆新模組。我寫的太多了,以至於有時候,我會忘記曾經做過的事情。那怕是幾周前的工作,對我來說,就像一個遙遠的回憶。我對我所做的一切非常滿意。

我認為,這次改變對我來說是一次巨大的成功。可能的話,我希望繼續保持下去。在此期間,如果有誰希望像我一樣,我將盡我所能向你展示和推銷這一策略。如果你在應用這項策略的過程中,遭遇任何問題或疑惑,請一定和我聯絡。我很樂意聽到一些逸聞趣事。


作者:John Resig,程式設計師,jQuery 之父,現生活在美國紐約。

原文:Write Code Every Day

感謝: Qingniu 幫助審閱並完成校對。

原載:明珠夜話

相關文章