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