在程序員中一個廣為流傳的說法就是程序員就是把咖啡因轉(zhuǎn)換為代碼的機(jī)器,如果隨機(jī)問一個程序員,他們什么時候效率最高,很有可能他們會說是在深夜。有一個流行的趨勢是早上4點起床,就開始完成瘋狂一天的某些工作,小部分人則喜歡4點上床睡覺。
當(dāng)然這一切的前提都是為了避免分心,那時候你除了可以看看房門,你還能干什么呢? 而且當(dāng)時所有的事情都集中在3件事上,你的日程表、昏昏欲睡的大腦、明亮的電腦屏幕。
程序員的日程表
Paul Graham曾在2009年寫過一篇文章叫做the maker’s schedule,里面提到基本上在世界上有兩種日程表,一個傳統(tǒng)經(jīng)理的日程安排是一天被劃分成幾個小時,然后各小時中間是10分鐘的休息時間。另外一個就是生產(chǎn)者的日程表———那些專門生產(chǎn)東西的員工的日程表。
他們?yōu)槟硞€大型虛擬系統(tǒng)工作,會把整個事件裝進(jìn)腦袋,確保代碼運(yùn)行在一個處理器之前就必須運(yùn)行在他的思想里。就像不管有多少困難,他都要用水晶構(gòu)建一個他自己的房子。
這就是程序員一被打擾就會很生氣的原因。因為巨大的智力投資,他們根本不可能開始幾個小時后又停下來,不然他花了那么多事件在大腦里構(gòu)建模型,又過一個小時就打斷一下,那感覺會讓他抓狂。
事實上,你跟許多創(chuàng)始人交流的時候,你就會發(fā)現(xiàn)他們老是不確定一天內(nèi)他們能完成什么事情:接二連三地被打斷、突然重要的事情要處理、某封需要回復(fù)的郵件,所以他們大部分時間在深夜的時候才有時間完成工作,這時別人都睡著了。
昏昏欲睡的大腦
每一個程序員在晚上都得睡覺,因為我們不是超人,每一個程序員當(dāng)然在白天更清醒。為什么我們要在大腦昏昏欲睡的時候?qū)嵭凶顝?fù)雜的工作,而白天在那做些稍微簡單的工作呢?
因為累的時候能寫出更好的代碼?那個時候會讓你簡單集中在一件事上,因為大腦很累的時候你跟根本沒有所謂集中點,沒有過剩的腦力讓你去分心。一般我們在喝了濃茶或者不合時宜的飲料后反而做了最多的事,這樣一下子你就極度活躍,上一秒在檢查Twitter動態(tài),下一秒就在看黑客新聞。
有時候你會想,我有如此多的能源、無限的超頻腦力,我應(yīng)該工作地更好,但是相反你因為精力充沛反而集中精力的時間不能超過2秒。如果在夜間,你累了你就挪挪屁股,一個輕度疲倦的大腦甚至讓你沒時間去刷新Twitter和Facebook,就像互聯(lián)網(wǎng)不存在似的。
這對于很多程序員是真實的,因為80%的工作他們還是有足夠腦力應(yīng)對的,一般先是寫出算法,然后用10倍的代碼生成一個環(huán)境,并確保它可以運(yùn)行。即使你做的是最先進(jìn)的機(jī)器學(xué)習(xí),大部分的工作是簡單的清理數(shù)據(jù)以及用活潑的方式呈現(xiàn)數(shù)據(jù)。疲勞也許使你變蠢,但足夠應(yīng)付手頭的工作。
明亮的電腦屏幕
這個很簡單,在晚上坐在一個明亮的燈光下工作,會延遲你睡覺的時間,甚至直到3點你都沒有睡意,然后在第二天11點醒來。而且奇怪地是,時間久了,不到那個點你還睡不著。
最后
總的來說,程序員喜歡在深夜工作,因為你無法預(yù)料一件事情完成的時間點,只能以連續(xù)性來促進(jìn)項目進(jìn)度,在這樣一個寬松的心理環(huán)境下,你的大腦不會分心、對著明亮的屏幕、手指卻在那啪啪地敲著鍵盤。