程序員應該每天寫代碼
英文原文:Write Code Every Day
去年秋天,我編寫的業余項目到了緊要關頭:因為我找不到一個方法——既不用犧牲在 Khan Academy 工作的高效率,又可以做更多的事,所以項目一直沒有進展。
關于工作于業余項目,主要問題為:我基本上在周末做業余項目,偶爾也會在平時的晚上做一點。事實證明這個工作策略對我而言并不適合。盡可能地在工作日嘗試和完成高質量的工作讓我承受了很多難以置信的壓力(并且如果我不能的話,會讓我有挫敗感)。這里有一個問題是,你不能保證每個周末都有空——而且我也不愿意把兩天時間都用來編程(而沒有任何休息或去做其他事情的時間)。
而且,還有一個問題是,隔一周再工作于項目代碼,會非常容易忘記曾經正在工作的要點以及一些遺留的內容(即使你已經記了筆記)。而且,如果這個周末有事,等下個周末再接著搞項目的話,那就間隔了兩周,14 天了。這種多周的上下文切換可能是致命的(我有很多業余項目正是死于這種饑餓的注意力)。
受 Jennifer Dewalt 去年完成的令人難以置信的工作——在 180 天自學編程建立 180 個網站的啟發,我覺得有必要嘗試和她類似的策略:每天做點業余項目。
我決定為自己定一些規則:
- 必須每天寫代碼。也可以寫文檔,寫博客,寫其他的東西,但必須是在寫代碼的基礎上。
- 代碼必須有用。不要去調整代碼縮進,也不要代碼重新格式化,如果可以得話,也不要去重構。(當然所有這些事情是允許的,但不能作為一天的專屬工作。)
- 午夜之后不寫代碼。
- 代碼必須開源,放在 Github 上。 </ol>
有些規則看上去有些隨意。因為從技術上說,代碼并不需要在午夜之前寫,但我不希望因為熬夜太晚以致于寫出一些馬馬虎虎漏洞百出的代碼。而且代碼也沒有必要開源或放到 Github 上。我定這些規則的目的只是迫使我自己能在寫代碼的時候更專注(考慮可重用性和決定在進程早期創建模塊)。
到現在為止,我終于成功了,已經接近 20 周,我做到了連續工作于業余項目上。這完全改變了我如何寫代碼的方式,并且對我的生活和心理產生了重大的影響。
在改變習慣的過程中,發生了很多有意思的事情:
最小化可行的代碼。
強迫每天不少于 30 分鐘的寫代碼時間。(否則的話就真的很難寫出有意義的代碼,特別是你還得記起前一天你是從哪里離開的。)工作日我能投入的時間不是很多(通常不超過 1 小時,但都超過 30 分鐘),但在周末,有時我會工作一整天。
將編碼養成為一個習慣。
需要注意的是,我并不特別在意 Github 上的別人對我的看法。我認為這是這一條最關鍵的地方:這是你為自己做的改變,而不是為了取悅別人而做的改變。這同樣適用于健康飲食和鍛煉:如果你不關注于改善自己,那么你永遠不會取得真正的成功。
戰勝焦慮感。
首先我想說的是,我會頻繁地感到高度焦慮,當沒有完成“足夠”工作或沒有取得“足夠”進步的時候(這兩樣都比較難以量化,因為我的業余項目沒有具體的時間限制)。我意識到,取得進展的感覺,和取得實際進展同樣重要。一旦我每天都能有持續的進步,那么焦慮感就會一點點減少。合理安排自己的工作量,不要制定一些不切實際過度自負的期望。
周末。
在周末完成工作是朝著目標前進絕對至關重要的動力(因為通常只有在這種情況下,我才能為業余項目編寫有意義的代碼)。這是一件好事。在周末制定一個周計劃,能讓我不再耿耿于沮喪。因為以前我很少能在平時完成我想要做的工作,因此只能迫使自己為了完成更多的工作而拒絕其他的周末活動(享受美食,參觀博物館,逛公園,朋友聚會,等等)。我強烈地感覺到,雖然業余項目非常重要,但也不應該沒有自己的生活樂趣。
后臺處理。
每天編碼業余項目的一個有趣的副作用是,你當前的任務會經常運行在你的腦海里。因此,當我去散步,去洗澡,或做任何其他不需要大腦參與的活動時,我都會思考之后我要編碼什么,尋找解決問題的好辦法。但當我每周一次或隔周工作于代碼時,這就不會發生。相反,那些時候我的腦海中會出現其他的任務,或者,通常情況下,會充斥著因為沒有完成任何業余項目而生成的焦慮感。
上下文切換。
當重新繼續于業余項目時,總會有上下文切換成本。不幸的是。在整整一周都工作于其他項目之后再想重新投入到業余項目中是非常難的。每天寫代碼則有助于減少“讀檔”時間,更容易記起自己當時正在做什么。
工作的平衡。
想要有所改變的最重要的方面之一就是簡單地學習如何更好地平衡工作/生活/業余項目。在決定我每天要工作于項目之后,我需要更好地平衡自己的時間。如果我被安排晚上出去,直到深夜才能回來,那么那一天的話我就得在早上搞業余項目,在我開始 Khan Academy 的工作之前。此外,如果我需要加班完成我的工作,并且回家晚了,那么我會趕緊回家來完成我的每天任務(而不是跳過這一天)。我要指出的是,這樣一來,我在業余愛好(如雕版印刷)上的確不能有太多的時間,但這是一個合理的權衡取舍。
別人的看法。
這是外部交流這個新習慣時帶來的好處。我的小伙伴理解我必須每天完成這項工作,因此有時活動會圍繞它進行調度。并且也可以心安理得地說:“是的,我也很想和你們一起出去玩/看電影/等。但我必須搞定我的編碼工作“,能夠被小伙伴理解和接受。
寫了多少代碼?
曾經有一段時間我很難相信自己在過去的幾個月里居然寫了這么多代碼。我創建了幾個新網站,重寫了一些框架,并創建了大量新的 node 模塊。我寫了這么多,以致于有時侯會忘記自己做的這些成績——幾個星期似乎是一個遙遠的記憶。看到這些我已經完成的工作量,我特別開心。
我認為在習慣方面的改變是一個巨大的成功,并希望能夠保持繼續。因此,我向大家推薦這個策略,希望能幫助完成業余項目的實質性工作。非常期待聽到大家的意見和建議,讓我們共同進步!
-
譯文鏈接:http://www.codeceo.com/article/write-code-everyday.html
翻譯作者:碼農網 – 小峰
來自: www.codeceo.com