程序員,別再迷戀多線程工作了
我剛剛嘗試了一下,一邊用 iPad 看“Java 極客技術(shù)”自制的 SpringBoot 視頻(1.2X 倍速),一邊在 iMac 上回復(fù)博客上讀者的留言。過了一會,視頻上講了什么,我完全沒有印象了;而回復(fù)的內(nèi)容也寫得亂七八糟。
很長一段時間內(nèi),我都在欺騙我自己:一邊寫博客,一邊聽音樂,自認(rèn)為可以一心多用,做到了像計算機一樣的“多線程工作”??傻鹊揭魳返哪硞€高潮響起時,我情不自禁地投入到了音樂的世界中,卻完全忘了博客接下來應(yīng)該寫的主題。于是只能狠狠地把音樂關(guān)掉,重新讀一遍計劃好的內(nèi)容大綱,尋找新的寫作靈感(之前的靈感已經(jīng)杳無音訊了)。
像我這樣自作聰明的人應(yīng)該不在少數(shù),但實際上我們只是在幾個不同的任務(wù)之間快速地進行切換。當(dāng)切換的頻率過高的時候,我們的創(chuàng)造力就會下降得越快,我們浪費的時間就越多,我們學(xué)習(xí)的效率就會越低。
假如你要反駁,說自己在打發(fā)時間,那請你自便。
1、為什么我們會迷戀多線程工作
“人生苦短,我愛多線程”——這恐怕是我們迷戀多線程工作的主要原因了。想一想手頭那么多事情要做,而我們又分身乏術(shù),不能像孫悟空那樣拔一根猴毛就能復(fù)制一個戰(zhàn)斗力滿滿的自己,就只能硬著頭皮 new Thread().start() 了。
就我們程序員來說,打開手機,掘金社區(qū)上的小冊在向我招手,極客XX的課程在向我拋媚眼,GitChat 的小課在向我暗送秋波,就連XX星球也在喊我過去。在我們猶豫再三的時候,奇妙清單提示我,項目要 deadline 了,于是我們只能搖搖頭,忍不住嘆了一口氣。
是這樣的,生命是短暫的,可我們要做的事情實在是太多了。況且多線程工作會讓我們上癮,因為“當(dāng)完成一項小任務(wù)時,我們會受到多巴胺的沖擊,也就是我們的獎勵激素。大腦喜歡多巴胺,于是我們被鼓勵不停地在一些能給予自己即時滿足感的微小任務(wù)之間切換。”
可多線程工作在大多數(shù)情況下給我們帶來的是負(fù)面的影響。計算機在處理多線程任務(wù)時可以通過追加 CPU 的核數(shù)來提高程序的運行效率。但我們并不是計算機。
2、多線程工作嚴(yán)重影響工作效率
當(dāng)一個程序員在全力編程的時候,腦袋里同時記著數(shù)不勝數(shù)的東西,包括變量名、方法名、重要的接口、數(shù)據(jù)結(jié)構(gòu),還有他們自己的常用組件庫。如果送這個程序員去侏羅紀(jì)公園度假一個月,保準(zhǔn)他會把這些東西忘得一干二凈。
在高效編程的時候,腦袋里的那些東西就好像存儲在計算機的 RAM 上,等到其他的任務(wù)切換進來的時候,這些東西就不得不轉(zhuǎn)移到別的地方(比如計算機上的磁盤)備份起來,等重新切回到原來的任務(wù)上時,就需要花費巨大的精力重新恢復(fù)了。
不知道你有沒有這種感覺,我是有的。我特別討厭在聚精會神編碼的時候,突然殺來一個電話,讓你措手不及,尤其是廣告營銷的,忍不住要痛罵他們幾句,然后加入黑名單。有時候很不幸,來電顯示打來電話的人是老板,就不得不扼殺住想要爆發(fā)的怒火??膳鹗嵌髿⒘?,敲代碼的那種快感也被扼殺了。
2011 年加利福尼亞大學(xué)發(fā)表的一篇研究報告展示了“快速地從一項任務(wù)切換到另一項任務(wù)”是怎樣影響我們記憶的。研究者們表示,多線程工作對人的“工作記憶”有著消極的影響。工作記憶是指一段時間內(nèi)在大腦中保存和處理信息的能力,它是一切思維活動的基礎(chǔ),也是學(xué)習(xí)的第一步。
當(dāng)我們能夠?qū)W⒆鲆患虑榈臅r候,工作記憶就不太容易受到影響。但受限于工作場合,互聯(lián)網(wǎng)公司尤其鐘愛開放式的辦公室,大家匯聚一堂,感覺彼此之間充滿真愛。但大量吵雜的聲音,嚴(yán)重影響著我們的工作效率,于是夜深人靜加班的時候,工作效率是很高的。
3、多線程工作會扼殺創(chuàng)造力
神經(jīng)科學(xué)家厄爾·米勒(Earl Miller)表示多線程工作會扼殺創(chuàng)造力,“創(chuàng)新的想法,歸根到底來源于深度的注意集中。當(dāng)我們嘗試多線程工作時,基本不會在任何一條能發(fā)現(xiàn)原創(chuàng)東西的道路上走的足夠遠(yuǎn),因為我們在不停地切換和回溯。”
當(dāng)我在上下班的路上騎自行車的時候,我發(fā)現(xiàn)戴著消噪耳機聽音樂是一件非常美妙的事情。不僅可以把馬路上嘈雜的聲音隔離開來,還能夠消磨掉時光。
而當(dāng)我在寫博客的時候,聽音樂就適得其反了。這是因為騎自行車本身并不是一件需要創(chuàng)造力才能完成的事情,而寫博客則需要聚精會神才能把腦袋里的所見所聞流暢地梳理出來。
也就是說,當(dāng)我們需要創(chuàng)造力的時候,最有效的做法就是移除干擾物,把手機調(diào)成飛行模式,把一些軟件的通知禁掉,把門窗關(guān)閉等等。盡量專心地完成當(dāng)前的任務(wù)。
這并不簡單,但是非常值得去做。
4、最后
我需要告誡大家一句:當(dāng)我們正在做的一個任務(wù)還沒有完成的時候,下一個任務(wù)來臨的時候一定要勇敢說“不”,坦率地告知派發(fā)任務(wù)的領(lǐng)導(dǎo),讓他保持清醒。
假如說不出口,那也要一個一個來。切記不要高估我們自身的能力,畢竟我們是人,不是計算機,沒辦法把我們的腦袋改造成多核的??傊痪湓挘撼绦騿T,別再迷戀多線程工作的鬼話了。