【【【強烈推薦】】】每天工作4小時的程式設計師
每個人都熟悉這種作息規律:早上9點去上班,坐在電腦前面,編一天的程式,下午5點下班回家。如今,非常感謝蒂莫西·費里斯 (Timothy Ferriss)的《每週工作4小時》,我開始重新思考應該如何工作,如何讓自己變成更有效率的程式設計師。
最近,我把我的從週一到週五的作息規律做了一次較大的調整。很長時間以來,我一直像所有其他程式設計師那樣工作、休息。但就在2011年的下半年,我開 始了一項試驗,想看看究竟什麼樣的作息時間能讓我更有效率。這項實驗目前仍在進行中,我並不是像軍人那樣嚴格遵守實驗規定——例如,我也想會早20分鐘、 或晚20分鐘起床——但當前制定的作息規律是這樣的:
早上4:30 到 7 點:冥想,寫作,目標複查,和家人吃早餐
早上4:30起床其實並不是你想象的那麼難。每個人的個人情況都多少有些不同,但人的身體基本上需要每天7到9小時的睡眠時間。保證你睡眠充足的一個方法是不用鬧鐘自然醒。你只需要早點睡覺,你就可以在早上4:30醒來。
起床之後,我會馬上喝上16盎司的水——不是咖啡!我很長時間都不喝咖啡了,而且也不太想喝。事實上,不喝咖啡我感覺會更好。然後我會衝個澡;這樣會讓我感覺一個清爽的一天的開始。
每天早上我都會冥想30分鐘。冥想的最佳時間是在日出之前或日出的過程中,也就是西方世界的早6點之前。我不打算解釋為什麼冥想會對你有好處;網上對此已經有了大量的研究。如果你想找一個關於冥想的書,我推薦《Meditation for Dummies》
冥想之後,我會花30-45分鐘的時間寫部落格。我一般會寫500到800字。我發現,冥想之後立即動筆,通常會一氣呵成,寫的很順利。另外,大腦經 過了一夜的休整,狀態非常好,在注意力轉移到其它事務之前,把大腦裡堆積的東西都倒出來清理一下是很有好處的。關於寫作的一個技巧:把這段時間用作對大腦 的初步清理。不要去做研究、編輯等。這些事情放在以後再做。
然後是To Do List(待辦清單)時間。我會檢視郵件,微博,LinkedIn,等等,以及安排下一步要做是任務。說到任務,我遵循GTD做事方法,我用Omnifocus軟 件來管理我的生活。我在iPad,iPhone和MacBook Air(我是蘋果的粉絲)都裝了它。不錯,作為一個待辦事宜管理軟體,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點:健身,午飯,購物
我每天都要健身。John J. Ratey的書《Spark: The Revolutionary New Science of Exercise and the Brain 》 對每天鍛鍊的好處做了很好的論證,如果你想知道鍛鍊對大腦功能改進的科學機理,你可以讀一下這本書。每天不做相同的運動,甚至不去相同的健身房。我每週在 一個瑜伽館裡做3次瑜伽,在一個spinning館裡上兩天的spinning課,在健身房裡做兩天的舉重,在健身房裡我有個教練。教練幫助了我很多,有 人這樣督促你會使你具有更大的動力。
我喜歡在健身房運動,因為哪裡有額外的服務。你可以一下用掉5條毛巾而不擔心老婆的抱怨。可以花30分鐘沖澡而不用擔心門外有人叫喊”你還沒完嗎?“…在家裡你經常會遇到這樣的事。
我還養成了一個習慣就是每天購物,通常是在Whole Foods, 一個離我家只有步行距離的超市。為什麼每天購物?在很多國家,特別是亞洲,人們每天都去購物,而不是一次買足2個星期的東西儲存在家裡的冰箱或冷櫃裡。這 種方式,你只買了你需要的東西,避免了浪費。很多時候你會發現冰箱裡有些不知是何物的東西,懷疑放在那裡有半年之久了。我午飯在外面吃,Whole Foods超市裡有不錯的沙拉自助。因為我喜歡日本食品,有時我會來一點日本壽司或盒飯。
下午1點到6點:學習和交流時間
我儘量會把一些討論、約會時間湊到一起,這樣不必每天都去公司。通常,這些事情包括會議,面試,做報告,指導開發,程式碼審查等等。這段時間我不做任何的開發,除非有緊急的bug或特殊情況需要處理。
我還用很大比例的一部分時間去學習。我花了很多時間去閱讀別人的東西,從書本到博格,大多與程式設計相關的東西。我每天都要學到新的知識。保持這樣的學習勁頭的最好的方法是對學到的東西做一些筆記,把相關的知識做寫標記。像EverNote這樣的軟體很適合做這種事情。
同時我會看看市場上有沒有其它的產品,最有效率的軟體開發者是不用寫一行程式碼就能把問題解決。我不想把別人已經做好的東西再做一遍。所以,在CodePlex, GitHub 和 Component Source這些網站上花時間是有好處的。
我從妻子的醫院實習的經歷中得到了一點啟示。新入職的大夫每天早上看病,到了下午,他們會聚到一起討論遇到的各種病症,討論他們是如何應診的。對於 我,我會事後反省一下自己做過的事,我會重新思考一下早上程式設計遇到的問題,在什麼地方遇到了什麼bug,或反省做報告時的表現,或如何主持的會議,等等。 我努力從過失中學到教訓,避免它們再次出現。
下午6點到晚上8點:家庭時間
我妻子是個醫生,工作很忙,但我們儘量一起度過這段時間。我們會一起做飯。然後我會和孩子一起做家庭作業。(一個二年級的學生竟會有這樣多的作業,這是另外一個話題,我以後再談。)
晚8點到8:30:反省和給大腦派活
我晚上不做冥思,而是換成坐下來反省一天的生活。如果你花上15分鐘做在一個安靜的地方反省你的一天,你會吃驚的發現這一天你學到了這樣多的東西,獲得了這樣大的提高。
接下來,我給大腦安排工作。眾所周知,當我們睡眠時大腦是在不停工作的。所以,你最好給它安排點工作。對於我,下面這些事情很有效:我把第二天早上要寫的東西做了個大綱。就像寫便條一樣。我發現把它寫到紙上比寫在電腦裡更有效。
或者,我會看一些程式設計/演算法問題。同樣,會紙上描述下來或寫出框架。讓人驚奇的是,很多時候早上起來你會發現已經有了解決方案!像這樣的事情我是在 一個整潔的、沒有格線的、信封大小的筆記本上寫畫的。在空白的白紙上寫畫會讓我更有靈感。我在晚8:30到9點間上床睡覺。越早越好。
這就是我一天的作息時間。當然,當我外出旅行時會有些變化;在途中我會花大量的時間來工作。我還沒有告訴你們在週末我都幹些什麼,我會在以後的文章裡講到這些。
我很想聽到其他人關於他們的作息時間的故事,以及他們是如何提高工作效率的。