1. 程式人生 > >為什麼程式設計師喜歡在深夜工作

為什麼程式設計師喜歡在深夜工作

有句還挺受歡迎的話是,程式設計師就是把咖啡變成程式碼的機器。

果然,隨便問一個程式設計師什麼時候效率最高,很有可能他們會說大多是深夜的時候。有些早點,有些晚點。常見的是:在凌晨4點起床,趕在吵鬧的一天開始前完成一些工作。另外一些喜歡在凌晨4點睡覺。這種做法的目的是避免干擾。但是你可以鎖上門啊,為什麼夜晚這麼特別呢?

我認為可以歸結為三件事:員工的時間表、疲憊的大腦和明亮的電腦螢幕

Chimp Brain

(倫敦科學博物館中的黑猩猩大腦,圖片來自維基百科)

員工的時間表

Paul Graham2009年寫過關於員工的時間表的問題 —— 基本上,在世界上有兩種型別的時間表。傳統管理者的時間表是分散地切割成小時和一個個十分鐘的方式績效,通常是按一個小時的價值給你報酬。

另一種,叫做員工的時間表——針對我們這些程式設計師。工作於大型虛擬系統時,需要把所有涉及的事都記在腦子裡——有人曾經比喻這就像用昂貴的水晶建造房子,一旦有人打擾,房子就一股腦塌落並碎成一片。

這就是為什麼當有人打斷程式設計師的思路時,他們那麼惱火。

由於這種巨大的精力投入,使得我們無法簡單地開始工作,直到我們能連續幾小時不被分散注意力才行。剛在腦中構建了整個模型,結果半小時後就毀了可不值得。

事實上,跟很多員工交談後你會發現,他們感覺根本不能在白天完成任何工作。接連不斷地被打擾、關注重要的事物和回覆郵件都不能讓他們安心工作。所以他們選擇在別人睡覺的深夜來完成大部分的工作。

疲憊的大腦 

就算是程式設計師,晚上也應該睡覺。我們不是超人。也會感到白天更機敏。

那為什麼我們要在大腦想睡覺的時候做最複雜的工作,而在大腦最敏銳和靈活的時候做簡單的任務呢?

因為疲勞成就更好的程式設計師。

與巴爾默峰值類似,疲勞讓我們更易集中精力,因為當你的大腦疲勞時,它就必須集中精力!沒有多餘的腦力讓你不集中精力。(《“10倍效率”程式設計師/開發人員的習慣》第5點:集中精力)

我似乎在喝茶過多或不合適的時間喝能量飲料後完成的工作最少。這些讓我很活躍,一會兒檢視Twitter一會兒看看Hacker News,我似乎一直在到處瀏覽。

你應該在想我能很好地工作——這麼有精力,這麼有腦力。但是相反,我一直在阻絆自己因為我不能集中精力超過兩秒。

然而,當我微感疲倦時,我就能坐下來編碼了。用有點疲勞的大腦,我能一小時又一小時地編碼,甚至都不想檢視Twitter或者FaceBook。就好像網際網路不存在了。

我覺得這適用於大多數程式設計師。我們有太多的精力去完成80%的工作——面對現實吧,一個好的演算法,需要用10倍的程式碼量來營造使用它的環境。即使你做的是最高階的機器學習(或者是其他的),很多工作也僅僅只是清理資料和將結果以友好的方式呈現出來。

當你的大腦並不是竭盡全力地工作時,它就會找其他的事做。疲勞使你愚鈍,從而使你只能顧及手頭上的工作。

昏昏沉沉的大腦

明亮的電腦螢幕

這條非常簡單。在夜晚一直盯著明亮的光源並且使你的睡眠週期延後。你直到凌晨3才感到疲倦。然後中午11點起床,當夜晚來臨時你並不感到疲勞,因為,呵呵,你中午11點才起床!

經過足夠多的反覆,本質上是把你帶到了不同的時區。更有趣的是,它會保持相對穩定,一旦你進入凌晨3、4睡覺的節奏中,你就會一直保持那樣。

結語

綜上所述,程式設計師晚上工作是因為沒人強制規定你必須什麼時候停止工作,這可以給你更輕鬆的方式,你的大腦不再一直尋找分心的事並且明亮的螢幕使你保持清醒。