为什么程序员喜欢在半夜写代码?
微信又改版了,為了方便第一時(shí)間看到我們的推送,請(qǐng)按照下列操作,設(shè)置“置頂”:點(diǎn)擊上方藍(lán)色字體“程序員之家”-點(diǎn)擊右上角“…”-點(diǎn)擊“設(shè)為星標(biāo)”。
可以啦,讓我們繼續(xù)相互陪伴。
原文:https://swizec.com/blog/why-programmers-work-at-night/swizec/3198
翻譯:https://www.inside.com.tw/2014/12/24/why-programmers-work-at-night
本文的作者是 Swizec Teller,他是一名自由職業(yè)者兼連續(xù)創(chuàng)業(yè)家,有超過(guò)17 年以上的軟件開發(fā)經(jīng)驗(yàn),自稱 A Geek with a Hat。幾年前因?yàn)樵趇nside.com上發(fā)了一篇文章《Why programmers work at night》,解釋為什么大部分工程師,包括他本人,總是遵循著「吸血鬼的生活作息」來(lái)寫代碼。
《Why programmers work at night》最后還寫成了一本書,可以在Swizec Teller的網(wǎng)站上購(gòu)買電子書或?qū)嶓w書籍。書的內(nèi)容主要是其文章的延伸,加上他擔(dān)任工程師以來(lái)的個(gè)人經(jīng)驗(yàn)、采訪其他工程師的心得、以及針對(duì)工程師的心理學(xué)研究。
很多人笑說(shuō):「工程師是可以將咖啡因轉(zhuǎn)換成代碼的機(jī)器。」
他們會(huì)告訴你工作最有效率的時(shí)段是在夜深人靜的時(shí)候。有些人比較早,有些人比較晚,最常見到的作息時(shí)間大概是這兩種:凌晨四點(diǎn)起床做事的,跟凌晨四點(diǎn)做完事去睡覺(jué)的。
這種作息時(shí)間的用意就是為了減少分心的機(jī)會(huì)。不過(guò)你可能會(huì)問(wèn),鎖上房門不是可以達(dá)到一樣的效果?何必熬夜傷身寫代碼?
深夜工作的關(guān)鍵就在于三件事:創(chuàng)作者的時(shí)間表、困倦的大腦、明亮的電腦屏幕。
創(chuàng)作者的時(shí)間表
Paul Graham在2009年寫了一篇文章《Maker’s Schedule, Manager’s Schedule》,他認(rèn)為基本上世界上主要分成兩種時(shí)間表,一種是「管理者的時(shí)間表」(Manager’s Schedule),適用于總經(jīng)理、總監(jiān)、產(chǎn)品經(jīng)理等「管理者」;另一種則是「創(chuàng)作者的時(shí)間表」(Maker’s Schedule),適用于軟件工程師、設(shè)計(jì)師、開發(fā)者、作家等「創(chuàng)意工作者」。
首先先簡(jiǎn)單介紹「管理者的時(shí)間表」,這種時(shí)間表是以「一小時(shí)」為基本劃分單位,每小時(shí)都有不同的事情需要處理,大部份的人都是在這樣的時(shí)間表下工作。Paul Graham 認(rèn)為這是一個(gè)適合「下命令」的時(shí)間表(Schedule of command),因?yàn)闀r(shí)間可以彈性安排、拆開再重組,所以這個(gè)小時(shí)去開會(huì)、下個(gè)小時(shí)要整理會(huì)議記錄、再下個(gè)小時(shí)去拜訪廠商,即使不小心分心了,十分鐘的分心頂多耗掉一個(gè)小時(shí)的時(shí)間,每件事情都可以立即處理。
另一種則是「創(chuàng)作者的時(shí)間表」,也就是我們這些工程師所遵循的時(shí)間表。Paul Graham 認(rèn)為對(duì)創(chuàng)作者而言,每個(gè)時(shí)間單位至少要有半天這么長(zhǎng),因?yàn)楣こ處煵豢赡茉谝粋€(gè)小時(shí)內(nèi)寫完一個(gè)功能,一個(gè)小時(shí)可能還不夠他們「準(zhǔn)備開始」寫代碼,畢竟「創(chuàng)作」是需要時(shí)間醞釀的。
這樣的時(shí)間表就像在一個(gè)龐大的抽象系統(tǒng)中投入大量的精力工作,有人比喻成用昂貴的水晶玻璃來(lái)蓋房子,一旦有人分散你的注意力,整項(xiàng)工程就會(huì)瞬間崩塌,碎成千萬(wàn)片。這就是為什么工程師非常討厭工作時(shí)被別人打斷或分心。
也因?yàn)楣こ處煼浅P枰芯駚?lái)工作,所以除非能連續(xù)好幾個(gè)小時(shí)不被打擾,不然我們根本不想開始工作。好不容易在腦子里勾勒出設(shè)計(jì)流程、進(jìn)入狀況,一旦被打斷,一切都得卷土重來(lái)。
事實(shí)上,如果你和創(chuàng)業(yè)家們討論這個(gè)問(wèn)題,就會(huì)發(fā)現(xiàn)他們?cè)诎滋炖锔緵](méi)辦法完成任何開發(fā)工作。最普遍的障礙就是受到一連串的干擾,像是臨時(shí)出現(xiàn)許多急事需要處理、重要的電子郵件需要回覆等等。因此創(chuàng)業(yè)家大部份都選在深夜里、其他人在休息的時(shí)候,再進(jìn)行這些開發(fā)工作。
困倦的大腦
不過(guò)工程師們晚上也還是得睡覺(jué),畢竟我們又不是什么不用休息的新新人類,而且白天的精神一定還是比晚上好上許多。那為什么我們要把這些復(fù)雜的開發(fā)工作留在大腦困倦的時(shí)候做,然而頭腦最敏銳清晰時(shí),卻做些相對(duì)簡(jiǎn)單的事情呢?
因?yàn)椤咐邸故亲尮こ處烠ode 更好的訣竅。
聽過(guò)Ballmer Peak 嗎?一點(diǎn)點(diǎn)的微醺可以讓工程師發(fā)揮超人般的Coding 技巧,然而一點(diǎn)點(diǎn)疲倦也可以達(dá)到一樣的效果。當(dāng)你的大腦開始累了、困了的時(shí)候,根本沒(méi)有多余的精力可以「分心」,你不得不集中精神完成工作。
以我個(gè)人的經(jīng)驗(yàn)來(lái)說(shuō),在喝了太多茶或能量飲料、精神最充沛的時(shí)候,我工作反而最沒(méi)效率。照理說(shuō),有這么多的精力跟腦力,應(yīng)該能用來(lái)寫代碼、找bug,但事實(shí)上因?yàn)榇竽X跟身體「太嗨」,我根本靜不下心來(lái)好好做事,一下子上Twitter、一下子看Hacker News,沒(méi)辦法專注在同一件事情上兩秒鐘。
相反的,當(dāng)有點(diǎn)累時(shí),我才會(huì)把屁股好好的黏在椅子上開始寫代碼。在大腦稍微有點(diǎn)疲倦的情況下,我可以寫代碼連續(xù)寫上好幾個(gè)小時(shí),根本不會(huì)想到Twitter 或Facebook,完全忘記網(wǎng)路的存在。
而且我發(fā)現(xiàn)大多數(shù)的工程師、開發(fā)者們都有和我一樣的情況。日常生活中百分之八十的事情,都不需要大腦全力運(yùn)作就能解決,因此在腦力過(guò)剩的情況下,你就會(huì)去找其他事情做。疲倦會(huì)讓你「笨得剛剛好」,沒(méi)有多余的腦容量塞其他東西,腦力只夠把手邊的工作做完,根本沒(méi)辦法分心。
明亮的電腦屏幕
這點(diǎn)倒是很好理解,晚上長(zhǎng)時(shí)間地盯著電腦螢?zāi)还ぷ?#xff0c;會(huì)延遲你的睡眠周期,讓你忘記疲倦,直到凌晨三、四點(diǎn)才去睡覺(jué),然后睡到隔天中午才起床。然而當(dāng)夜晚再次來(lái)臨時(shí),你會(huì)感覺(jué)精神很好,這是當(dāng)然的!畢竟你睡到中午才起床啊。
重復(fù)這樣的作息一陣子后,你的身體會(huì)適應(yīng)這樣的規(guī)律,活在一個(gè)不同的「時(shí)區(qū)」。更有趣的是,我發(fā)現(xiàn)這樣的睡眠周期不會(huì)一直向后延,而是在凌晨三、四點(diǎn)左右達(dá)到一個(gè)平衡,然后停留在這個(gè)時(shí)區(qū)里。
這可能是因?yàn)?#xff0c;如果一直向后延,睡到下午、甚至傍晚才起床的話,其他人會(huì)認(rèn)為你是個(gè)無(wú)可救藥的大懶蟲,這種「社會(huì)壓力」逼得我們不得不停留在四點(diǎn)入睡、中午起床的時(shí)區(qū)里,畢竟再更晚睡的話,中午肯定是起不來(lái)啦!
總而言之,工程師之所以偏愛(ài)在三更半夜寫代碼,就是因?yàn)樵谏钜估锕ぷ鲿r(shí)間沒(méi)有限制,可以更靈活地運(yùn)用時(shí)間(最慘就是今晚不睡覺(jué)而已),而且大腦疲倦得不容易分心,最后,狂盯著電腦屏幕剛好可以保持清醒。
公眾號(hào)內(nèi)回復(fù)“1”帶你進(jìn)粉絲群
總結(jié)
以上是生活随笔為你收集整理的为什么程序员喜欢在半夜写代码?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 蓝桥杯——最终章
- 下一篇: uni-app 快速发送短信