一個程式設計師的自白:一天工作計劃

NO IMAGE

上班族都已習慣了這種生活規律:早上9點去上班,坐在電腦前面,編一天的程式,下午5點下班回家。一直以來,程式設計師這樣傻逼的生活規律,讓很多想學計算機技術培訓的人都望而卻步。這樣的生活我也過了很長一段時間。如今,非常感謝蒂莫西·費里斯(TimothyFerriss)的《每週工作4小時》,我開始重新思考應該如何工作,如何讓自己變成更有效率的程式設計師。
  
  最近,我把我的從週一到週五的作息規律做了一次較大的調整。很長時間以來,我一直像所有其他程式設計師那樣工作、休息。但就在2011年的下半年,我開始了一項試驗,想看看究竟什麼樣的作息時間能讓我更有效率。這項實驗目前仍在進行中,我並不是像軍人那樣嚴格遵守實驗規定——例如,我也想會早20分鐘、或晚20分鐘起床——但當前制定的作息規律是這樣的:
  
  早上4:30到7點:冥想,寫作,目標複查,和家人吃早餐
  
  早上4:30起床其實並不是你想象的那麼難。每個人的個人情況都多少有些不同,但人的身體基本上需要每天7到9小時的睡眠時間。保證你睡眠充足的一個方法是不用鬧鐘自然醒。你只需要早點睡覺,你就可以在早上4:30醒來。
  
  起床之後,我會馬上喝上16盎司的水——不是咖啡!我很長時間都不喝咖啡了,而且也不太想喝。事實上,不喝咖啡我感覺會更好。然後我會衝個澡;這樣會讓我感覺一個清爽的一天的開始。
  
  每天早上我都會冥想30分鐘。冥想的最佳時間是在日出之前或日出的過程中,也就是西方世界的早6點之前。我不打算解釋為什麼冥想會對你有好處;網上對此已經有了大量的研究。如果你想找一個關於冥想的書,我推薦《MeditationforDummies》。儘管書名很怪,但它是我讀過的最好的一本書。
  
  冥想之後,我會花30-45分鐘的時間寫部落格。我一般會寫500到800字。我發現,冥想之後立即動筆,通常會一氣呵成,寫的很順利。另外,大腦經過了一夜的休整,狀態非常好,在注意力轉移到其它事務之前,把大腦裡堆積的東西都倒出來清理一下是很有好處的。關於寫作的一個技巧:把這段時間用作對大腦的初步清理。不要去做研究、編輯等。這些事情放在以後再做。
  
  然後是ToDoList(待辦清單)時間。我會檢視郵件,微博,LinkedIn,等等,以及安排下一步要做是任務。說到任務,我遵循GTD做事方法,我用Omnifocus軟體來管理我的生活。我在iPad,iPhone和MacBookAir(我是蘋果的粉絲)都裝了它。不錯,作為一個待辦事宜管理軟體,Omnifocus是有點貴了,但因為我的整個生活都和它有關,這個價格也值了。我通覽一下待辦清單,想想每個事情上的預期目標——所有的事情,從今天要做的小事情,到長期的目標。清單中的每個條目都設定有一個目標,如果沒有目標,我會刪除它。
  
  接著是早餐時間。關於應該什麼時候吃早餐、應該吃什麼的問題上,已經有大量你可以借鑑的養生指導。我嘗試過各種不同的東西。我發現那些富含纖維素,低碳,高蛋白質的東西最適合我。你試過燕麥片加花生醬嗎?好極了!我還喜歡吃一些水果、喝一點茶。還有,我儘量和家人一起吃早餐。有時事情能按照這種願望執行,但有時不行。我的目標是今年一年都要按照這個執行下去。
  
  早7點到11點:4個小時的程式設計時間
  
  這是我用來程式設計的時間。一天4小時也許你會覺得少的可憐,可是我卻發現,在這4小時我做的事情能比大多數人一週乾的事情都要多。研究顯示,具有固定工作時間表的人比那些隨機工作的人更有效率。對於我來說,這個固定時間是早7點到11點,每天。這段時間我要做的事情就是程式設計,不做其它的。有幾個基本的原則:
  
  首先,關掉所有的通訊設施——電話,郵件,聊天工具等。沒有讓你分心的事。你可以給少數幾個人保留一個聯絡到你的方法,以防有緊急事情發生。那些真有緊急事情需要找你的人自有辦法聯絡到你,我還沒有碰到過這樣的事。我甚至還教育我的妻子,她通常習慣對所有的請求都立即給予迴應,我告訴她要尊重我這4個小時的時間。在這段時間裡你應該只幹一件事。千萬不要同時幹5、6件事情。
  
  第二,中間不要留下休息時間來檢視郵件或上網,或幹其它類似的事情。原因是:在一個小時裡,我可以開發出x個功能。如果我要是連續工作4小時,我發現我的產量不是4倍,而是8倍或16倍。當你全神貫注的幹某項事情時,相信你也經歷過這樣的體驗。這就是我們所說的大腦的Flow(流)狀態。在以後的部落格裡我打算多寫一些關於Flow的文章。
  
  那為什麼不把這樣的制度應用到整個8小時的工作時間裡呢?這是因為人的有效率的狀態是有限度的。人的大腦跟肌肉一樣。你可以在跑步機上持續運動8小時嗎?就像我們的肌肉,大腦需要時不時的休息。這種限度依據個人的不同而各異。通過嘗試和根據犯下的錯誤,我發現我的極限時間是4小時。
  
  還有一點需要提的是,我並沒有在11點設了鬧鐘提示。當我感覺大腦有些疲倦,工作效率開始下降時,我就停止工作。有些天我只工作3小時,有時我會工作5小時;4小時是平均值。
  
  我在家工作是為了避開打攪。如果你需要在辦公室裡工作,看看管理部門是否允許你把最有效率的這段時間放在家裡工作。你上班途中的折騰會把早上做瑜伽和冥想獲得的好處給抵消了。在經過了早高峰的喧鬧,還有辦公室裡的嘈雜,你的神經會變的緊張,冥思帶來的效果完全消失。在家工作必定會更有效率的多。
  
  早11點到下午1點:健身,午飯,購物
  
  我每天都要健身。JohnJ.Ratey的書《Spark:TheRevolutionaryNewScienceofExerciseandtheBrain》對每天鍛鍊的好處做了很好的論證,如果你想知道鍛鍊對大腦功能改進的科學機理,你可以讀一下這本書。每天不做相同的運動,甚至不去相同的健身房。我每週在一個瑜伽館裡做3次瑜伽,在一個spinning館裡上兩天的spinning課,在健身房裡做兩天的舉重,在健身房裡我有個教練。教練幫助了我很多,有人這樣督促你會使你具有更大的動力。
  
  我喜歡在健身房運動,因為哪裡有額外的服務。你可以一下用掉5條毛巾而不擔心老婆的抱怨。可以花30分鐘沖澡而不用擔心門外有人叫喊”你還沒完嗎?“…在家裡你經常會遇到這樣的事。
  
  我還養成了一個習慣就是每天購物,通常是在WholeFoods,一個離我家只有步行距離的超市。為什麼每天購物?在很多國家,特別是亞洲,人們每天都去購物,而不是一次買足2個星期的東西儲存在家裡的冰箱或冷櫃裡。這種方式,你只買了你需要的東西,避免了浪費。很多時候你會發現冰箱裡有些不知是何物的東西,懷疑放在那裡有半年之久了。我午飯在外面吃,WholeFoods超市裡有不錯的沙拉自助。因為我喜歡日本食品,有時我會來一點日本壽司或盒飯。
  
  下午1點到6點:學習和交流時間
  
  我儘量會把一些討論、約會時間湊到一起,這樣不必每天都去公司。通常,這些事情包括會議,面試,做報告,指導開發,程式碼審查等等。這段時間我不做任何的開發,除非有緊急的bug或特殊情況需要處理。
  
  我還用很大比例的一部分時間去學習。我花了很多時間去閱讀別人的東西,從書本到博格,大多與程式設計相關的東西。我每天都要學到新的知識。保持這樣的學習勁頭的最好的方法是對學到的東西做一些筆記,把相關的知識做寫標記。像EverNote這樣的軟體很適合做這種事情。
  
  同時我會看看市場上有沒有其它的產品,最有效率的軟體開發者是不用寫一行程式碼就能把問題解決。我不想把別人已經做好的東西再做一遍。所以,在CodePlex,GitHub和ComponentSource這些網站上花時間是有好處的。
  
  我從妻子的醫院實習的經歷中得到了一點啟示。新入職的大夫每天早上看病,到了下午,他們會聚到一起討論遇到的各種病症,討論他們是如何應診的。對於我,我會事後反省一下自己做過的事,我會重新思考一下早上程式設計遇到的問題,在什麼地方遇到了什麼bug,或反省做報告時的表現,或如何主持的會議,等等。我努力從過失中學到教訓,避免它們再次出現。
  
  下午6點到晚上8點:家庭時間
  
  我妻子是個醫生,工作很忙,但我們儘量一起度過這段時間。我們會一起做飯。然後我會和孩子一起做家庭作業。(一個二年級的學生竟會有這樣多的作業,這是另外一個話題,我以後再談。)
  
  晚8點到8:30:反省和給大腦派活
  
  我晚上不做冥思,而是換成坐下來反省一天的生活。如果你花上15分鐘做在一個安靜的地方反省你的一天,你會吃驚的發現這一天你學到了這樣多的東西,獲得了這樣大的提高。
  
  接下來,我給大腦安排工作。眾所周知,當我們睡眠時大腦是在不停工作的。所以,你最好給它安排點工作。對於我,下面這些事情很有效:我把第二天早上要寫的東西做了個大綱。就像寫便條一樣。我發現把它寫到紙上比寫在電腦裡更有效。
  
  或者,我會看一些程式設計/演算法問題。同樣,會紙上描述下來或寫出框架。讓人驚奇的是,很多時候早上起來你會發現已經有了解決方案!像這樣的事情我是在一個整潔的、沒有格線的、信封大小的筆記本上寫畫的。在空白的白紙上寫畫會讓我更有靈感。我在晚8:30到9點間上床睡覺。越早越好。
  
  這就是我一天的作息時間。當然,當我外出旅行時會有些變化;在途中我會花大量的時間來工作。我還沒有告訴你們在週末我都幹些什麼,我會在以後的文章裡講到這些。
  
  我很想聽到其他人關於他們的作息時間的故事,以及他們是如何提高工作效率的。