程式設計師應該每天寫程式碼

2016-02-10    分類:推薦閱讀、程式設計師人生、首頁精華3人評論發表於2016-02-10

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

去年秋天,我編寫的業餘專案到了緊要關頭:因為我找不到一個方法——既不用犧牲在Khan Academy工作的高效率,又可以做更多的事,所以專案一直沒有進展。

關於工作於業餘專案,主要問題為:我基本上在週末做業餘專案,偶爾也會在平時的晚上做一點。事實證明這個工作策略對我而言並不適合。儘可能地在工作日嘗試和完成高質量的工作讓我承受了很多難以置信的壓力(並且如果我不能的話,會讓我有挫敗感)。這裡有一個問題是,你不能保證每個週末都有空——而且我也不願意把兩天時間都用來程式設計(而沒有任何休息或去做其他事情的時間)。

而且,還有一個問題是,隔一週再工作於專案程式碼,會非常容易忘記曾經正在工作的要點以及一些遺留的內容(即使你已經記了筆記)。而且,如果這個週末有事,等下個週末再接著搞專案的話,那就間隔了兩週,14天了。這種多周的上下文切換可能是致命的(我有很多業餘專案正是死於這種飢餓的注意力)。

受Jennifer Dewalt去年完成的令人難以置信的工作——在180天自學程式設計建立180個網站的啟發,我覺得有必要嘗試和她類似的策略:每天做點業餘專案。

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

  1. 必須每天寫程式碼。也可以寫文件,寫部落格,寫其他的東西,但必須是在寫程式碼的基礎上。
  2. 程式碼必須有用。不要去調整程式碼縮排,也不要程式碼重新格式化,如果可以得話,也不要去重構。(當然所有這些事情是允許的,但不能作為一天的專屬工作。)
  3. 午夜之後不寫程式碼。
  4. 程式碼必須開源,放在Github上。

有些規則看上去有些隨意。因為從技術上說,程式碼並不需要在午夜之前寫,但我不希望因為熬夜太晚以致於寫出一些馬馬虎虎漏洞百出的程式碼。而且程式碼也沒有必要開源或放到Github上。我定這些規則的目的只是迫使我自己能在寫程式碼的時候更專注(考慮可重用性和決定在程式早期建立模組)。

到現在為止,我終於成功了,已經接近20周,我做到了連續工作於業餘專案上。這完全改變了我如何寫程式碼的方式,並且對我的生活和心理產生了重大的影響。

在改變習慣的過程中,發生了很多有意思的事情:

最小化可行的程式碼。

強迫每天不少於30分鐘的寫程式碼時間。(否則的話就真的很難寫出有意義的程式碼,特別是你還得記起前一天你是從哪裡離開的。)工作日我能投入的時間不是很多(通常不超過1小時,但都超過30分鐘),但在週末,有時我會工作一整天。

將編碼養成為一個習慣。

需要注意的是,我並不特別在意Github上的別人對我的看法。我認為這是這一條最關鍵的地方:這是你為自己做的改變,而不是為了取悅別人而做的改變。這同樣適用於健康飲食和鍛鍊:如果你不關注於改善自己,那麼你永遠不會取得真正的成功。

戰勝焦慮感。

首先我想說的是,我會頻繁地感到高度焦慮,當沒有完成“足夠”工作或沒有取得“足夠”進步的時候(這兩樣都比較難以量化,因為我的業餘專案沒有具體的時間限制)。我意識到,取得進展的感覺,和取得實際進展同樣重要。一旦我每天都能有持續的進步,那麼焦慮感就會一點點減少。合理安排自己的工作量,不要制定一些不切實際過度自負的期望。

週末。

在週末完成工作是朝著目標前進絕對至關重要的動力(因為通常只有在這種情況下,我才能為業餘專案編寫有意義的程式碼)。這是一件好事。在週末制定一個周計劃,能讓我不再耿耿於沮喪。因為以前我很少能在平時完成我想要做的工作,因此只能迫使自己為了完成更多的工作而拒絕其他的週末活動(享受美食,參觀博物館,逛公園,朋友聚會,等等)。我強烈地感覺到,雖然業餘專案非常重要,但也不應該沒有自己的生活樂趣。

後臺處理。

每天編碼業餘專案的一個有趣的副作用是,你當前的任務會經常執行在你的腦海裡。因此,當我去散步,去洗澡,或做任何其他不需要大腦參與的活動時,我都會思考之後我要編碼什麼,尋找解決問題的好辦法。但當我每週一次或隔週工作於程式碼時,這就不會發生。相反,那些時候我的腦海中會出現其他的任務,或者,通常情況下,會充斥著因為沒有完成任何業餘專案而生成的焦慮感。

上下文切換。

當重新繼續於業餘專案時,總會有上下文切換成本。不幸的是。在整整一週都工作於其他專案之後再想重新投入到業餘專案中是非常難的。每天寫程式碼則有助於減少“讀檔”時間,更容易記起自己當時正在做什麼。

工作的平衡。

想要有所改變的最重要的方面之一就是簡單地學習如何更好地平衡工作/生活/業餘專案。在決定我每天要工作於專案之後,我需要更好地平衡自己的時間。如果我被安排晚上出去,直到深夜才能回來,那麼那一天的話我就得在早上搞業餘專案,在我開始Khan Academy的工作之前。此外,如果我需要加班完成我的工作,並且回家晚了,那麼我會趕緊回家來完成我的每天任務(而不是跳過這一天)。我要指出的是,這樣一來,我在業餘愛好(如雕版印刷)上的確不能有太多的時間,但這是一個合理的權衡取捨。

別人的看法。

這是外部交流這個新習慣時帶來的好處。我的小夥伴理解我必須每天完成這項工作,因此有時活動會圍繞它進行排程。並且也可以心安理得地說:“是的,我也很想和你們一起出去玩/看電影/等。但我必須搞定我的編碼工作“,能夠被小夥伴理解和接受。

寫了多少程式碼?

曾經有一段時間我很難相信自己在過去的幾個月里居然寫了這麼多程式碼。我建立了幾個新網站,重寫了一些框架,並建立了大量新的node模組。我寫了這麼多,以致於有時侯會忘記自己做的這些成績——幾個星期似乎是一個遙遠的記憶。看到這些我已經完成的工作量,我特別開心。

我認為在習慣方面的改變是一個巨大的成功,並希望能夠保持繼續。因此,我向大家推薦這個策略,希望能幫助完成業餘專案的實質性工作。非常期待聽到大家的意見和建議,讓我們共同進步!

譯文連結:http://www.codeceo.com/article/write-code-everyday.html
英文原文:Write Code Every Day
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章