標籤:

為什麼很多程序員、geek 都喜歡熬夜,而且在後半夜工作效率異常高?

比如筆者的生物鐘就是正常人生物鐘向後撥了 4 小時。


借用一張圖:


一個姑娘問我,搞學術的為什麼都睡得那麼晚,難道只有到晚上才有靈感?不是,姑娘,搞學術不靠靈感,靠的是碌碌無為的白天引發的愧疚心。(轉)

程序員、Geek 們也是這樣。


安靜,無外界干擾


程序員geek只是突然想到了一個好主意,然後去完成他,在完成他的時候才發現時間已經超過了凌晨3點。


只要那幫人願意晚上一起開會,白天我們畫圖寫代碼也是可以的。


「程序員是將咖啡轉化成代碼的神奇生物。」

  • 創造者時間表

Paul Graham曾在2009年寫過一篇文章《Maker"s Schedule, Manager"s Schedule》,程序員作為抽象系統的創造者遵循Maker"s Schedule。編寫程序需要大量精神投入,需要整塊連續的時間思考,所以程序員工作時是不希望被打擾的,若思路被打斷則後果很嚴重。

  • 睏倦的大腦

疲憊使程序員變得更稱職,道理類似於Ballmer peak。疲勞感可以使程序員更有效的提升專註度,因為沒有多餘的腦力去兼顧其他事情。若大腦極度活躍,則更容易分神,刷微博,上知乎,看twitter,無法專註。

  • 明亮的顯示器

在夜晚持續盯著一大塊液晶顯示器是可以延遲晝夜節律的,所以很多程序員晚睡晚起並不稀奇,因為他們處於另一個時區。


作為一個晚上經常熬夜寫東西的人,我也想說幾句.單純比較效率的話,自然是上午最高,下午次之,再次晚上10點到2點,最後是晚上3點到6點的階段.沒做過Geek,所以不懂得Geek的感受,但是做科研的感受還是非常多.做科研的有一部分人也是習慣熬夜,大體有如下幾個原因:

1. 白天做實驗,晚上分析數據,寫總結,找文獻等等.其實這種生活規律,最晚到1點就能做完,不必熬夜太久.

2. 白天儀器狀態差,晚上儀器狀態好,所以要熬夜做實驗.這種生活規律的常見主要依賴AFM (原子力顯微鏡), SEM,TEM出數據的人.因為白天的干擾太大,儀器的數據質量跟晚上相比,能差不少.同時,測試條件的穩定也對儀器的數據質量有直接的影響,所以不得不熬夜.這類人群往往長期熬夜,黑白顛倒,直到積累了足夠多的數據,就很少做試驗,專心發文章了,那個時候也就調整回了正常的作息時間.

3. 實驗安排沒辦法,需要通宵做.比如某些需要監測反應進程的試驗,半個小時處理一次,一個小時取一個點記錄,連續24h之類的.這種情況往往是短期內需要連續作業,一般不超過一周時間.

4. 突發情況,比如老闆突然給了一個綜述的任務,要一周之內交貨,或者下午給任務,第二天就要的那種情況.這屬於沒辦法,只能兵來將擋,水來土掩.此情況很少發生.

5. 白天干擾事項太多,沒狀態,只有晚上有大塊的不被干擾的時間能夠好好思考,處理試驗.除去以上四點,這一點的人能有不少,說好聽點是努力拚命,其實就是時間管理差,或者說拖延症患者.我就屬於這類.

所以,第五點中槍的人,抓緊時間改掉自身的毛病才是正途.後半夜效率異常高,不是真實情況,而是自我感覺和自我欺騙而已.


1.老婆孩子睡了
2.產品經理下班了
基本上這是影響程序員工作效率的兩大殺手級原因
不停被打斷而導致內心深處千萬頭草泥馬奔騰的事情天天在上演

頂@pansz 早起比熬夜好,至少身體健康


效率高是因為晚上身邊沒有妹子。。。


= =對於樓上批時間管理的真心。。寫代碼的時間並不是明確可控的,會有各種各樣的突發事件來影響你的規劃。
一個例子是:每本講技術的書最前面都有環境配置那部分,但如果你認為你可以很輕鬆地照著說明配置好,那!才!奇!怪!了!看了那麼多本書,沒有一本書我不需要耗費少則一小時多則一天去上網搜索一些bug的解決方法,這些超時明顯是不可控因素,除非你給自己一開始的時間分配非常寬泛,那我們的時間管理還有什麼意義?(好吧。。還是有那麼些書的不需要配置環境的。。什麼CSS啊Javascript啊。。我承認裝個瀏覽器還是輕鬆拿下的)

回到正題。
只能給出個人的一個原因,我是突擊型coder,不寫完這塊代碼腦袋會一直興奮中,反而睡不好,但如上所說,水平有限,有不可控因素,經常一寫時間就晚了,除非非常非常疲倦or明天還要早起上班。
再補充一個原因= =,看到感興趣的信息一不留神就晚了。。


其實還有一種情況,就是。。
11點的時候,想著一個小時解決完這個問題就睡了~。但是沒想到不小心就到了三點。。

其實 程序員也很希望能夠早睡的。。


雖不是GEEK,但是有著GEEK精神的我,工作的時候最煩的就是中途被打斷,回復到工作狀態需要很長時間


因為白天沉迷於蒼井空老師的事業線,而晚上不得不面對步步進逼的死線——


沒人吵


其實也不是喜歡熬夜,很多時候只是不得不去熬夜來工作。而剛好有那麼一兩個因素導致半夜效率更高。

1.白天總有事物干擾

因為下班後的夜晚是屬於自己的(當然是指單身的人),一整晚的時間都可以隨自己支配,而白天則是碎片化的。偶爾上司一個命令就要去開會;QQ和郵箱時不時響一下;一會兒測試跑過來報bug反饋要修改······寫程序不是說停就能停的啊!這可是創作啊,靈感一來擋都擋不住被迫暫停了都不知道要花多長時間來恢復。但是晚上就不同了,想到什麼寫什麼,寫到什麼時候就什麼時候——「扶我起來,我還能寫」。

2.突然下達的任務

人生在世,誰不會遇到幾個讓你想罵娘的人呢?

你可能會有一個認為手下的程序員都是天才的老闆:「這個明天搞定給我沒問題吧」「啊我上午忘記告訴你了,這個下周就要交趕緊的」

這個時候還能怎麼辦?他是老闆啊,再苦再累也只能笑著寫下去。

3.專註

不過不管怎麼樣,在工作了一整天回到家就算沒人再打擾自己了,大晚上還在啪嗒啪嗒碼程序還是很累的。不過當你靈感來了,還是會拖著疲憊的身軀坐在電腦前兩眼放光的打出一行有一行的代碼。而正因為你累了所以沒有多餘的精力再走神或者在網路上蹦躂,大腦只能集中在一件事情上,所以就更加專註了。

4.電腦屏幕讓你處在另一個時區

日出而作日落而息大家都懂的吧,而你長時間對著發出亮光的電腦屏幕,大腦可能還以為你在白天可以工作呢。簡單的來說,就是身體自動把生物鐘根據電腦屏幕的光調整延後了。

5.中醫角度

為什麼過了晚上11點就越夜越精神了呢?中醫角度來說,丑時(凌晨一點到三點)是膽經運行的時候,而肝主魂,顧名思義,這個時候你可能會覺得越來越精神了。但是如果總是在這個時間段用腦,相當於長期耗損肝氣。這個時候大部分器官工作極慢,但肝在加緊排毒,更應熟睡才是。

不過其實廣泛一點來講這個也不只是程序員、geek的問題。現在很多年輕人都仗著年輕每天每夜有事沒事都熬夜修仙,總認為還年輕不會有問題。

雖然種種原因導致晚上效率更高,但還是不提倡半夜碼代碼,還不如絞盡腦汁排除萬難在白天的時候把事情都做好了呢。

熬夜修仙大家都知道是不好的,具體會造成多少負面影響呢?

  • 脫髮。
  • 影響生育力。
  • 肝功能異常。
  • 內分泌失調,女性經期紊亂。
  • 心臟衰弱。
  • 過度肥胖。
  • 皮膚受損。
  • 猝死。

最近還有份研究表明,睡眠不足造成毒性蛋白在腦內堆積,可能引發阿爾茨海默病。簡單點說,深度非快速動眼睡眠模式是幫助我們將新的記憶整合在大腦結構中,防止遺忘的重要模式,然而長期熬夜會引起深度非快速動眼睡眠障礙。後果可想而知了。

希望各位程序員、geek可以更多地從健康角度出發,少熬夜,保持正常的作息~

推薦閱讀

乾貨!史上最強位運算面試題大總結!

線段樹知識點總結

【乾貨】動態規劃十問十答

還在斷點調試?教你四種調試技巧讓你快速定位錯誤!

歡迎關注我的微信公眾號:九章演算法(ninechapter),幫助你了解IT技術前沿,通過面試、拿到offer、找到好工作!


這件事有好多原因綜合起來的。

一、腦力勞動需要連貫性——所以程序員需要一個不易打擾的時間段高效產出。
一件腦力勞動一旦開了頭就無法放下。寫程序就是一件這樣的事情,當你全神貫注在寫代碼的時候,別人叫你你都不想去回應,尿急了都先憋一會——這個類做個一個改動,那邊就需要加一個配置;等到加配置的時候看著一大堆配置覺得一項項去讀簡直侮辱了程序員這個工種,於是寫了一個註解做自動載入,寫完以後又開始補單元測試,測試寫好一跑卧槽一片紅,又開始調試,調試到一半系統裡面好幾十個變數的值都銘記於心一一比對追尋是哪裡不對——每一個步驟都是上一個步驟的後繼,每一個步驟都需要用心查找,錯一個字母都不行。這種嚴謹程度堪比記賬,但是白天的時候一會一個qq,一會一個微信,一會一封郵件,一會要收快遞,一會測試跑過來報bug,一會產品過來要開會,白天的時間是碎片的,做出來的程序簡直充滿了bug。好幾次上線前發現較少執行的某個邏輯分支缺乏程序處理,原因就是開放過程中被叫去開會等瑣碎事情。

二、臨時任務多——所以程序員按時下班太難了
這種臨時任務並不是由領導分派的,而是自己追求的,簡稱「zuo1」。
比如沒事重構。比如優化代碼。比如。。。實在太多了。
程序員沒事找事的能力太強大了,當然這與程序員需要不斷深化對系統的學習有關。這種事情,經常是下班前覺得自己一小時能搞定,結果搞了四小時,不知不覺夜已經深了。結合第一點,當你搞到興起,同事拉你去吃飯你都不想動。

三、加班不受控——所以願意晚上幹活而不是早上
很多人,包括 @pansz,都表示願意早起工作而不是晚睡。
可是實際是這樣的——
1、下班時老大說,今天我們開個進度會議。balalba。9點半下班,回家已經11點了。
2、今天程序上線,半夜。2點拖著疲憊的身軀回家,6點習慣性醒了,再睡,從此又習慣10點起床了。
3、下班晚高峰,系統出問題了,響應慢,趕緊跳板機查bug。一查查到12點,修修補補改好了。第二天又是10點起床。
。。。

所以早起是很好,可是在兲朝工作,每個月總有那麼幾天折騰到半夜才能睡。如果習慣早睡,到了晚上11點就會犯困想睡覺,可是現在有故障有bug急等,你根本沒法睡。折騰這麼幾次,大家也就習慣了晚睡晚起——因為這樣即便是有故障,生活起碼還是比較規律的,而且修bug時還不困,不會太痛苦。

所以這麼一綜合,程序員晚上處於一個方便幹活,習慣幹活,又習慣晚睡的一個環境,除了寫代碼還有什麼好乾的?


贊同「工作時怕被打斷思路」。
想起這段:

叔本華:論噪音

  我對噪音是很反感的。比如說,當你把一顆寶石分割成若干小塊時,這塊寶石就失去了作為整體的價值;而一支大部隊被分成若干小分隊之後的威力就大大減小了;傑出人物的思路一旦被打擾,他的注意力就被分散或打亂,他的智力隨之會降到普通人的水平之上。智力得以發揮,完全在於精力的集中,亦即所有的智能都集中在一個主題上,也就像照射在凹透鏡上的光束都聚在一點上一樣。而噪音就妨礙了精力的集中。為此,有傑出才智的人對任何形式的擾亂深惡痛絕,因為擾亂轉移了或分散了他們的思路,尤其是噪音,普通人對此倒沒有什麼不安的。歐洲一個最聰慧、敏捷的民族頒布了「嚴禁打擾」的法規,還作為第十一條寫進了憲法。在所有的打擾的形式中,噪音是最不禮貌的一種,它不僅打擾了思路,而且還具有破壞性。而且即使無其它打擾之時,噪音也會讓人痛苦難言。偶然也會有一種輕微但持續不斷的噪音在打擾我,過了一段時間我就清楚地感覺到,我的思路越來越困難,就好比是腿上負了重卻還要儘力行走一樣費力,最終我意識到了問題的所在。

——————————————上面發佈於 2013-09-16 ——————————————————

2014年7月27日15:23:50補充,剛看到的《黑客與畫家》里的一段:

^「往往只有在創業公司里,你才能得到一種寶貴的工作環境,就叫做「不受干擾」。不同的工作對「不受干擾」有不同的要求。文稿校對人員每15分鐘被打斷一次,工作效率也不會有太大損失。但是,黑客要求的「不受干擾」的時間是非常長的,有時你要用1個小時才剛剛把一個問題理清。所以,人事部突然打電話要你去填一張表格,會造成巨大的成本損失。

這就是為什麼當你打擾黑客讓他們從屏幕前扭過頭回答問題時,他們會惡狠狠地盯著你的原因。他們大腦內部精心構建的精巧建築,瞬間就崩潰了。

僅僅因為工作經常受到干擾,黑客就會無法應對高難度的項目。這就是為什麼黑客往往在深夜工作的原因,也是黑客無法在小隔間里寫出優秀軟體的原因(除非在半夜)。創業公司的一個巨大優勢就是不會有任何人來打擾你。沒有人事部,也沒有表格,自然也就不會有人打電話要求你填表格。」


千萬別再「喜歡」了。不要因為感覺這樣很「極客」、很「酷」,啥黑客、極客都推崇這樣的方式/態度,或者覺得這樣很安靜、思路很平靜、很適合一個人幹活,所以這樣。

年輕時候我也這麼玩過(哪個程序員沒經歷呢?),但是說實話,這是在透支自己的健康和歲月。等你老了,你就會體會到代價了。而且熬夜往往伴著香煙、零食和速食麵,損傷值破萬點以上。

有時候真的是思路停不下來,但不是迫不得已的情況(如加班上線),無論如何還是要改掉熬夜的習慣。否則老了就悔之晚矣。


借用之前看過的一張圖。
深夜來自QQ、Email、知乎(←_←)等的打擾幾率降低,程序猿大腦不需要處理中斷時引發的"保存現場"、"恢復現場"(更多時候要重新整理思路)的額外消耗
=====


一到深夜我就感覺自己被愛因斯坦上身了,什麼白天想不明白的事情在深夜都能想明白了......


推薦閱讀:

怎樣成為全棧工程師(Full Stack Developer)?
軟體工程專業本科畢業直接工作的話,還有沒有機會靠自學從事機器學習方面的工作?
為什麼程序員這麼討厭被人問「會不會修電腦」?
做一個優秀的程序員到底難在哪裡?
怎麼寫出一本程序員風格的修真小說?

TAG:程序員 |