程式設計師喜歡在晚上敲代碼是有科學原因的

2021-01-18 開課吧

網上流傳著一個段子:「程式設計師就是把咖啡因變為編碼的機器。」

如果你問大多數開發人員更喜歡在什麼時候工作,大部人會說他們最高效的時間在晚上,對於那些在工作之餘為開源項目做貢獻的人來說更是如此。

圖片源自網絡

程式設計師為什麼喜歡在晚上寫代碼?關於這個問題,幾年前一位名為 Swizec Teller的歪果仁曾在inside.com上發了一篇文章《Why programmers work at night》。

文中解釋了為什麼大部分工程師,包括他本人,總是遵循著「吸血鬼的生活作息」來寫代碼。他作為一名自由職業者兼連續創業家,有超過17 年以上的軟體開發經驗,自稱 A Geek with a Hat。

這篇文章最後還寫成了一本書,可以在Swizec Teller的網站上購買電子書或實體書籍。書的內容主要是文章的延伸,加上他擔任工程師以來的個人經驗、採訪其他工程師的心得、以及針對工程師的心理學研究。

網絡上對這個話題也眾說紛紜,他們會告訴你工作最有效率的時段是在夜深人靜的時候。有些人比較早,有些人比較晚,最常見到的作息時間大概是這兩種:凌晨四點起床做事的,跟凌晨四點做完事去睡覺的。

圖片源自網絡

這種作息時間的用意就是為了減少分心的機會。不過你可能會問,鎖上房門不是可以達到一樣的效果?何必熬夜傷身寫代碼?

深夜工作的關鍵就在於三件事:創作者的時間表、睏倦的大腦、明亮的電腦屏幕。

01. 創作者的時間表

Paul Graham在2009年寫了一篇文章《Maker’s Schedule, Manager’s Schedule》,他認為基本上世界上主要分成兩種時間表,一種是「管理者的時間表」(Manager’s Schedule),適用於總經理、總監、產品經理等「管理者」。

另一種則是「創作者的時間表」(Maker’s Schedule),適用於軟體工程師、設計師、開發者、作家等「創意工作者」。

首先先簡單介紹「管理者的時間表」,這種時間表是以「一小時」為基本劃分單位,每小時都有不同的事情需要處理,大部分的人都是在這樣的時間表下工作。Paul Graham 認為這是一個適合「下命令」的時間表(Schedule of command)。

因為時間可以彈性安排、拆開再重組,所以這個小時去開會、下個小時要整理會議記錄、再下個小時去拜訪廠商,即使不小心分心了,十分鐘的分心頂多耗掉一個小時的時間,每件事情都可以立即處理。

另一種則是「創作者的時間表」,也就是我們這些工程師所遵循的時間表。Paul Graham 認為對創作者而言,每個時間單位至少要有半天這麼長。因為工程師不可能在一個小時內寫完一個功能,一個小時可能還不夠他們「準備開始」寫代碼,畢竟「創作」是需要時間醞釀的。

圖片源自網絡

這樣的時間表就像在一個龐大的抽象系統中投入大量的精力工作,有人比喻成用昂貴的水晶玻璃來蓋房子,一旦有人分散你的注意力,整項工程就會瞬間崩塌,碎成千萬片。這就是為什麼工程師非常討厭工作時被別人打斷或分心。

也因為工程師非常需要集中精神來工作,所以除非能連續好幾個小時不被打擾,不然我們根本不想開始工作。好不容易在腦子裡勾勒出設計流程、進入狀況,一旦被打斷,一切都得捲土重來。

事實上,如果你和創業家們討論這個問題,就會發現他們在白天裡根本沒辦法完成任何開發工作。最普遍的障礙就是受到一連串的幹擾,像是臨時出現許多急事需要處理、重要的電子郵件需要回復等等。因此創業家大部分都選在深夜裡、其他人在休息的時候,再進行這些開發工作。

02. 睏倦的大腦

不過工程師們晚上也還是得睡覺,畢竟我們又不是什麼不用休息的新新人類,而且白天的精神一定還是比晚上好上許多。那為什麼我們要把這些複雜的開發工作留在大腦睏倦的時候做,然而頭腦最敏銳清晰時,卻做些相對簡單的事情呢?

因為「累」是讓工程師Code 更好的訣竅。

聽過Ballmer Peak 嗎?一點點的微醺可以讓工程師發揮超人般的Coding 技巧,然而一點點疲倦也可以達到一樣的效果。當你的大腦開始累了、困了的時候,根本沒有多餘的精力可以「分心」,你不得不集中精神完成工作。

以我個人的經驗來說,在喝了太多茶或能量飲料、精神最充沛的時候,我工作反而最沒效率。照理說,有這麼多的精力跟腦力,應該能用來寫代碼、找bug。但事實上因為大腦跟身體「太嗨」,我根本靜不下心來好好做事,一下子上Twitter、一下子看Hacker News,沒辦法專注在同一件事情上兩秒鐘。

圖片源自網絡

相反的,當有點累時,我才會把屁股好好地黏在椅子上開始寫代碼。在大腦稍微有點疲倦的情況下,我可以寫代碼連續寫上好幾個小時,根本不會想到Twitter 或Facebook,完全忘記網路的存在。

而且我發現大多數的工程師、開發者們都有和我一樣的情況。日常生活中百分之八十的事情,都不需要大腦全力運作就能解決,因此在腦力過剩的情況下,你就會去找其他事情做。疲倦會讓你「笨得剛剛好」,沒有多餘的腦容量塞其他東西,腦力只夠把手邊的工作做完,根本沒辦法分心。

03. 明亮的電腦屏幕

這點倒是很好理解,晚上長時間地盯著電腦螢幕工作,會延遲你的睡眠周期,讓你忘記疲倦。直到凌晨三、四點才去睡覺,然後睡到隔天中午才起床。然而當夜晚再次來臨時,你會感覺精神很好,這是當然,畢竟你睡到中午才起床啊。

重複這樣的作息一陣子後,你的身體會適應這樣的規律,活在一個不同的「時區」。更有趣的是,我發現這樣的睡眠周期不會一直向後延,而是在凌晨三、四點左右達到一個平衡,然後停留在這個時區裡。

圖片源自網絡

這可能是因為,如果一直向後延,睡到下午、甚至傍晚才起床的話,其他人會認為你是個無可救藥的大懶蟲。這種「社會壓力」逼得我們不得不停留在四點入睡、中午起床的時區裡,畢竟再更晚睡的話,中午肯定是起不來。

總而言之,工程師之所以偏愛在三更半夜寫代碼,就是因為在深夜裡工作時間沒有限制,可以更靈活地運用時間(最慘就是今晚不睡覺而已),而且大腦疲倦得不容易分心。最後,狂盯著電腦屏幕剛好可以保持清醒。

相關焦點

  • 中國第一代程式設計師裡的「四大天王」,30年前敲代碼,現狀如何?
    網際網路來中國的時間不長,平時接觸的程式設計師敲代碼超過十年以上的也是少數,在為自己擔心的時候,不妨看一下中國的第一代程式設計師們的現狀,他們從1988年開始敲代碼,如今也已經有了三十年的經驗當時的他們名震世界,如今卻差距太大,有的人身價千億、有的人財務自由瀟灑過生活、有的人卻被掃地出門黯然離場。
  • 程式設計師如何寫出高質量的代碼程序
    編碼是程式設計師最重要的工作,每個程式設計師都希望自己可以寫出優雅,高性能,高質量的代碼,對於大師級別的程式設計師,他們的寫的代碼就和藝術品一樣,你會忍不住發出驚嘆,他們怎麼可以創造出如此驚豔的作品出來。下面筆者就以自己的淺薄學識和一些經驗來總結下優秀的程序應該具有的特點。
  • 高效程式設計師的特徵:聰明,懶惰
    然而,程式設計師都喜歡立刻衝上去編程,喜歡在電腦前不停的敲代碼。在真正的軟體開發中,只有5%的開發時間是有效率的(你可以參考《程式設計師開發效率悖論》)。程式設計師的閱歷和經驗都是用來提高開發效率,這最優秀的程式設計師: 他們思考代碼的時間增加而寫代碼時間減少 對問題的透徹理解使調試代碼的速度更快 深思熟慮後的代碼速度更快 代碼長度更短程式設計師從心理上講都是喜愛自己的代碼的。
  • 程式設計師:停電去網吧寫代碼,被當成黑客報警了,網友:想偷我戒指
    甚至在很多人眼裡,這就是年薪百萬,一夜成名的職業了,也讓程式設計師這個行業增添了幾分神秘感,這也讓很多人好奇,究竟是做什麼能夠讓自己收入這麼多呢,他們為何有如此強大的吸金能力呢?有位網友就在論壇上發表自己作為一位程式設計師曾遇到的尷尬事情。
  • 阿里傳奇程式設計師,只會寫代碼,卻從一名員工做到了合伙人
    不知道大家有沒有聽說過多隆?多隆原本是金庸小說《鹿鼎記》裡的人物,是一位對主子非常忠心憨厚,也很善良的武功人士。他為了韋小寶闖刀山下火海,面對眾多的財權誘惑時,仍然忠心於韋小寶,甚至有一次為了保護韋小寶差點喪失了自己的性命。
  • 程式設計師:停電去網吧寫代碼,被當成黑客,網友調侃:想偷我裝備
    程式設計師,一個似乎很省洗髮水的職業,這些年一直活躍在段子手的作品中,為網友所津津樂道。人們一邊羨慕他們的高薪,一邊對他們在計算機世界中好像呼風喚雨無所不能的技術嘆為觀止。同樣是敲鍵盤,鍵盤俠只能洩憤,程式設計師卻能在電腦裡上天入地。
  • 一名程式設計師的夢遊行為,或證明平行宇宙存在!
    在我國也曾發生過一起離奇的事件,有一名程式設計師似乎就受到了平行宇宙的困擾,他究竟看到了些什麼呢? 因此有很多程式設計師年紀輕輕身體便出了很多毛病,也許是最近壓力太大了,陳軒也感到有些力不從心了。當天他與往常一樣在公司加班,他想修復遊戲中的漏洞,但是直到凌晨也沒有做完,於是他準備回家繼續熬夜。
  • 程式設計師編程入門必知!程式設計師需要學什麼
    學習語言的過程中還要有機會進行檢驗,不能只編寫代碼,還要檢驗代碼的結果運行是否正確,也就是某些可以運行結果的軟體我們要有,不過許多的程式語言都要求有被程式設計師設計來講代碼轉換成機器能理解的語言的編譯器。其他一些語言,比如Python,使用可以立即轉換成程序而不需要編譯。一些語言有自己的往往包含著代碼編輯器、調試器和/或者翻譯以及調試的IDEs(集成開發環境)。
  • 程式設計師說情話,撩妹也瘋狂
    那時候覺得敲鍵盤可帥可神秘了,簡直跟會彈鋼琴是一個級別的,後來讀了計算機才發現,程式設計師多數都是終日面對電腦心無旁騖寫程序的技術理科宅,浪漫和他們一點關係都沒有,他們好像永遠想不到在蛋糕裡藏戒指在下雪天說情詩。
  • 程式設計師的這108個笑話 你都看得懂嗎?-程式設計師,笑話,編程, ——快...
    1、程序猿最煩兩件事,第一件事是別人要他給自己的代碼寫文檔,第二件呢?是別人的程序沒有留下文檔。2、程序猿的讀書歷程:x語言入門—>x語言應用實踐—>x語言高階編程—>x語言的科學與藝術—>編程之美—>編程之道—>編程之禪—>頸椎病康復指南。
  • 能寫出這種代碼的程式設計師都是神仙吧!
    源 / 頂級程式設計師    文 / An先生或許在大多數人眼中,敲代碼是件乏味枯燥的事。但,並不是!
  • 程式設計師最愛的8款代碼遊戲 邊玩遊戲邊擼代碼
    如果有這麼一款遊戲,能在放鬆的同時鞏固學到的代碼、學到新代碼,就再好不過了。W3Cschool精選8款熱門遊戲,趕緊來邊玩遊戲邊擼代碼吧!1.Hack Run、Hack Run Zero、Hack Time這是黑客入侵解謎遊戲系列遊戲,相信不少程式設計師並不陌生。在這個遊戲中,你將化身黑客,接受很多不一樣的任務,比如說你要入侵別人帳號,去破解密碼或者竊取信息。
  • 為何敲代碼,學好數學很重要?
    以下為譯文:程式設計師喜歡討論程式語言。除了辯論它們各自的優點外,我們還喜歡將它們整合到我們的身份認知中,甚至通過某人使用的語言來推斷這是一個怎樣的人。有些人甚至用語言決定論的一種形式爭辯,認為思維受限於可被分類的東西的。由於我們花了很多時間來使用語言,因此想要使它們變得更好的想法是合理的。然而,這些辯論的特點表明我們認為它們代表著更多的東西。
  • 超過三十歲就不適合寫代碼了?看看國外程式設計師怎麼說
    他們的薪水仍然很高,如果你喜歡工作……你是否在乎自己的頭銜? 我確實看到有人繼續擔任特定的角色,並且不承擔更多的工作和責任,因為他們在自己的位置幹得開心。30歲以上的程式設計師有哪些方式可以保持活躍在在技術崗位上,而不必轉向人道主義(管理性)的方向?像 @bubba 和 @ash 說的——一定要從你的經驗中學習。
  • 國外程式設計師推薦:每個程式設計師都應讀的書
    《重構:改善既有代碼的設計》適合軟體開發人員、項目管理人員等閱讀, 也可作為高等院校計算機及相關專業師生的參考讀物。我想我不得不推薦《重構》:改進現有代碼的設計。—— Martin我必須承認,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序, 而優秀的程式設計師卻能寫出別人能讀得懂的程序。
  • 說程式設計師是最累的,運維的同學不樂意了!
    程式設計師:程式設計師可是天天做項目,要不停的寫代碼,修bug,寫技術文檔,每天都要加班,為了一個需求點還要與產品經理PK半天,與測試人員因為一個是不是bug的問題把嘴皮子都磨破了,只有到晚上人都走了,清靜了,我們才能安心的寫一會代碼,我們容易麼。
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    要成為一個工程師,首先要有一顆渴望成為工程師的心,因為我們根本不能奢望一個從沒想過成為工程師的人成為一個有實際工程能力的人!程式設計師的基本能力是:Tasking和學習能力。當好程式設計師的能力是:用更好的方法來實現功能。0.文檔能力「文檔是第一生產力」,這一點在程式設計師的世界是毫無異議的。
  • 代碼你打算寫到幾歲?雷軍、張一鳴都曾寫過...
    他自己也曾說過,工作前五、六年,錢不是用來買書就是買電腦,"20 歲的時候我是一個非常內向的程式設計師。我不喜歡管人,不喜歡接受採訪,不喜歡與人打交道,獨自坐在電腦旁是我最舒服的時候。"接外包項目也讓張一鳴每個月有額外的收入,"大四的時候,我每月能有超過兩三千的收入,在當時,絕對是土豪。那時候,和同學一起泡實驗室,熬到半夜一兩點,會請大家集體去烤串。一周能吃2-3次。"當年一起吃燒烤的人,後來相繼進入字節跳動,成為公司的技術骨幹。現在看來,張一鳴和字節跳動取得成功,主要原因一定不是他本人的代碼有多優秀。
  • 偉大的公司都推崇代碼評審,平庸的程式設計師卻認為是浪費時間
    今天來聊一聊程式設計師如何提升自己,曾經我讀過一篇文章,為什麼很多人工作十年,卻無法成為架構師,無法成為技術專家,很多人寫了十萬個小時代碼,卻還是碌碌無為。寫代碼,就好比在大海上泛舟,很多人找不到參照物,隨波逐流。
  • 被嫌棄的35歲程式設計師
    「幹的活兒我挺喜歡的,還能掙錢,工資拿的還不低,為什麼要焦慮呢」,從業 20 多年的程式設計師任從文(化名)是個天生的樂天派。「我從來沒有產生過年齡焦慮。因為我堅信技術是有價值的,隨著時間的積累,技術掌握的越純熟,越有價值。