寫代碼如坐禪:你是哪一類程序員?
當(dāng)編譯占用你時(shí)間時(shí)你會怎么做。不只是編譯,即使是在等待任何短暫的計(jì)算機(jī)操作結(jié)束,這段時(shí)間你會干些什么?
和你的工作日休息比起來這點(diǎn)時(shí)間是微不足道的,但是總的來說它還是能對你的生產(chǎn)率和幸福感感帶來巨大幫助的。
順便說一下,這篇文章內(nèi)容不是只針對開發(fā)者和程序的。它對任何使用電腦的聰明人都有效。后面還會附上圖片?,F(xiàn)在讓我們開始吧!
為什么要寫這篇文章
我最近開始在我的工作習(xí)慣里使用某種時(shí)間管理技巧來提升我的生產(chǎn)率,減小壓力,并幫助我的身體和大腦得到休息。我基本上想要在不被打擾的100%注意力集中的一兩個(gè)小時(shí)里工作,然后就是20到30分鐘的休息。
然而,我?guī)缀趿⒖叹瓦M(jìn)入了一個(gè)巨大的問題里:當(dāng)我正在編譯或部署什么東西時(shí),我會自動地打開郵件客戶端,facebook,新聞閱讀器,新聞?wù)军c(diǎn)中的某一個(gè)或幾個(gè)。這是一個(gè)壞習(xí)慣。它很難改掉。它擾亂了我本來專注的注意力。
所以我決定搜索相關(guān)資料。在 StackExchange 有一個(gè)關(guān)于“編譯時(shí)應(yīng)該做什么”的論壇。投票最多的答案是“減少編譯時(shí)間”一類的。然而,這些答案并不能解決更多的普遍問題:在電腦上工作時(shí)總是有些事項(xiàng)是需要時(shí)間來等待的。
與之不同的,論壇上的人多半建議那些時(shí)間可以做些什么(類似收發(fā)郵件或是看新聞),這是一個(gè)差勁的想法。一個(gè)好的建議是這個(gè)——“同一時(shí)間干多件事是不好的”。我贊同這個(gè)觀點(diǎn)。但其他人呢?不認(rèn)為?好的。這個(gè)答案令人失望。所以在這篇文章里,我將深入探索這個(gè)問題并且向你展示最理想的方法。
兩種類型的程序員
有兩種極端原型的程序員——“禪宗的程序員”,我們稱為心如止水的程序員,還有“不能克制分心的程序員”,我們稱為心緒不定的程序員。兩者都是非常極端的,所以他們應(yīng)該處于貝爾鐘形曲線的兩端,對嗎?
錯(cuò)。實(shí)際上,心緒不定的程序員是難以置信地普遍存在著。
圖片的效果要比文字有用,所以我現(xiàn)在用圖片來說明兩種程序員的精神世界的狀態(tài)。
心如止水的程序員
心如止水的程序員會怎么做?
他寫代碼。這是他做的唯一的事情,這也說明了一切。也許更重要的問題是什么事情他沒有做:他沒有受分心的影響。專注的注意力,專注的修改,專注的編碼。一到兩個(gè)小時(shí)的純代碼時(shí)間,然后才是20-30分鐘的休息,通常是離開電腦。之后他會繼續(xù)開始寫代碼。(以上所說的時(shí)間只是一個(gè)例子。他可以用其它方式安排時(shí)間-不過他總是能平衡并搞定長時(shí)間的生產(chǎn)率。)
他的思維像平靜的水緩慢地流動。當(dāng)然它不像那種恒久不變的凝固的冰。
這就是心如止水的程序員精神世界看起來的樣子:
心緒不定的程序員
即使你的精神世界現(xiàn)在看起來像一個(gè)心如止水的程序員,只要你在編譯的時(shí)候打開了Facebook或者檢查了你的郵件還是做了其它什么事情。幾分鐘之后它就會像這樣:
女士們先生們,這就是你檢查你的郵件和打開Facebook后的狀況。如果你還擁有一堆實(shí)時(shí)通知,即時(shí)通訊,還要去檢查你的RSS源和推特,結(jié)果就是大腦像上面圖中變成碎片的災(zāi)難一樣。
你可能還沒有完全從這張圖恢復(fù)過來。不在特定的某天,任何時(shí)候都有可能發(fā)生。即使你把精神世界所有無用的東西最小化到任務(wù)欄,它仍會留在那里,不停地引誘你,消耗你的精神資源。朋友,時(shí)間就這樣走了,你會困惑它是怎么不見的。
順便說一下,如果你是一個(gè)心緒不定的人,你還是可以看看我們網(wǎng)站的網(wǎng)頁漫畫!不必立刻回來把這篇文章讀完。別忘了訂閱那個(gè)漫畫源!看完所有的漫畫后可以分享給你的朋友并聊聊!做這些事不會過于分心的,真的!
心如止水的程序員與心緒不定的程序員之間的區(qū)別
心如止水的程序員更傾向于長期的幸福感和生產(chǎn)率。他有能力高度集中注意力,關(guān)注目標(biāo)。
心緒不定的程序員更傾向于短暫的滿足感,長期這樣不能到達(dá)全部的潛力并且會對他自己的身體和精神帶來雙方面的傷害。他不能定下心來集中注意力。
為了徹底領(lǐng)悟這點(diǎn),我們首先需要理解我們的大腦是怎樣工作的。
我們的大腦是怎么工作的
事實(shí)上我們不能完全知道,不過,基于我們現(xiàn)在已有的理解,心理學(xué)家已經(jīng)提出了一些有用的類比方法,可以幫助我們領(lǐng)悟復(fù)雜的東西。
電腦的類比
你的大腦像一臺電腦。當(dāng)然,它要比一臺個(gè)人電腦復(fù)雜多了,不過電腦的比喻說法可以讓我們形容許多在大腦里運(yùn)行的進(jìn)程。有些東西像硬盤,有些東西像內(nèi)存和中央處理器,還有進(jìn)程和線程,它們的確需要一些時(shí)間來訪問信息并計(jì)算數(shù)據(jù)。
很明顯我們的大腦擁有一定的容量在任一時(shí)刻集中注意力。你可以很好地集中在某一東西上,或是不太好地集中到幾樣?xùn)|西上,但你不能兩者都做到。把注意力從一個(gè)任務(wù)轉(zhuǎn)到另一個(gè)任務(wù)甚至?xí)绊懻J(rèn)知能力,特別是兩種毫不相干的任務(wù)。
只要你把意識關(guān)注在某樣?xùn)|西上,就會花些時(shí)間處理它和它所分配的資源并會從內(nèi)存和后臺進(jìn)程里初始化它。它可以存在幾個(gè)小時(shí)甚至幾天。最近的關(guān)注到的東西在任何時(shí)刻都會不斷出現(xiàn)的。即時(shí)你沒有注意到它們在你的大腦里流動,它們一直都在那兒——而且它們占用資源,使你不能集中注意力。
抽屜的類比
另一種有用的比喻說法是柜子里的抽屜。你的大腦像存放東西的抽屜。每個(gè)抽屜都是擁有數(shù)據(jù)且互相連接的,基于某種上下文關(guān)系和概念。在特定的時(shí)間里,一些抽屜是打開的,一些是關(guān)閉的。打開的抽屜代表著你當(dāng)前的精神空間,它們很容易訪問到。
主要的問題是關(guān)閉抽屜是需要很長時(shí)間的,而打開它們是非??斓?。
所以,當(dāng)你在工作時(shí),注意力轉(zhuǎn)到新的地方,它會立即打開一堆抽屜。當(dāng)你回到工作狀態(tài)時(shí),那些抽屜仍然是開著的。這樣唯一的好處是可以提高你的創(chuàng)造力和頭腦風(fēng)暴——但是不需要的抽屜開著會有影響的。它們抑制左腦的思維并降低注意力。
編譯時(shí)應(yīng)該做什么
在等待電腦執(zhí)行操作的時(shí)間里,你的行為可以判斷出你是一個(gè)心如止水的程序員還是心緒不定的程序員。
主要的意見是:
1.不要分心
2.短暫的休息
保持注意力并不是那么難——你必須要切斷你大腦的電源,或者保持注意力集中在你的代碼上。不過,關(guān)閉大腦效果更好。這樣會進(jìn)入一個(gè)微冥想狀態(tài),在短暫休息之后它仍會有效。
為什么要進(jìn)入冥想?好的,你的大腦每天都在咀嚼代碼,為什么不給它一個(gè)休息呢?此外冥想科學(xué)上被證實(shí)能不斷增加幸福等級。想象一下每天進(jìn)行兩次30-60秒表面上看起來不重要的冥想所帶來的長期優(yōu)勢吧。
現(xiàn)在,短暫的休息時(shí)應(yīng)該做些什么?從以下內(nèi)容中選擇任何事,按你的想法組合在一起。你可以把它們按照這個(gè)順序全部做一遍,這取決于(也可以不在意)這些行為所需要的時(shí)間。
1.站起來
2.眺望遠(yuǎn)處
3.把雙手放在腦后,斜靠在椅子上
4.伸長雙腿,把雙手盡量舉高
5.閉上雙眼
6.輕揉眼睛
7.慢慢地把頭向各個(gè)方向轉(zhuǎn),舒展頸椎
8.閉上雙眼然后深呼吸
9.倒一杯水(要小心路上別被同事分心了)
你也可以做任何主要身體參與而不影響思維的事——靜力鍛煉,變戲法,決斗,哈哈
順便說一下,如果你的老板不給你足夠的時(shí)間做以上的任何事,那么推薦他來看這篇文章。讓自己更快地恢復(fù)精神并保持注意力,比看起來在工作其實(shí)已經(jīng)分散注意力并很快就感到累的情況要好很多。
伸展放松是很有益處的。我上一次見我的理療師時(shí)她發(fā)現(xiàn)我的肩膀很多地方很緊繃。她告訴我這可能是因?yàn)槲易陔娔X前雙手總是彎曲造成的,所以肌肉縮短而且不能用力。那我應(yīng)該怎么做最好呢?舉高我的雙手,試著舉到最高。這是我在編譯或是等待電腦執(zhí)行操作時(shí)常做的一件事。
你可能已經(jīng)聽說過當(dāng)你在用電腦時(shí)進(jìn)行有規(guī)律伸展放松和短暫休息是一個(gè)不錯(cuò)的想法。問題是怎么做到——即使你設(shè)置了一個(gè)計(jì)時(shí)器,但假如到時(shí)你正處在一個(gè)復(fù)雜的事情,正做到一半的時(shí)候怎么辦?這樣看來就無法實(shí)現(xiàn)了。然而,如果你在編譯時(shí)短暫休息一下,就能很好地做到了,你甚至可以把它養(yǎng)成一種習(xí)慣,讓它變得更“自然”!現(xiàn)在編譯就開始能提醒你做伸展放松了。這太令人不可思議了。
編譯時(shí)你不應(yīng)該做的事情
我其實(shí)想用力點(diǎn)擊我的主頁,這樣做能讓事情變得簡單,這里有一張你在編譯時(shí)不應(yīng)該做的事情的列表。以這種方式思考:這些事情不僅會使你不能集中注意力,還會讓你的思維和身體不能很好地短暫休息。
1.閱讀你的RSS源
2.閱讀新聞(任何新聞)
3.收發(fā)郵件
4.瀏覽各類社交媒體(Facebook,twitter,google+,linkedin,reddit)
5.觀看視頻
做以下兩件事要比上面的好一點(diǎn),但依然不推薦:
1.和同事聊天
2.讀一本物理書
專注的注意力和專注地修改
我馬上就要結(jié)束這篇我所想的每日工作流程的理想方法——禪宗程序員的文章了。
保證生產(chǎn)率和效率的關(guān)鍵是注意力100%集中在你現(xiàn)在正在做的事情上,做完后再把注意力完全轉(zhuǎn)移到其他地方。注意力從一件事情到下一件事情的過渡不能有任何的拖泥帶水。
把你的工作時(shí)間分成1-2個(gè)小時(shí)一段。注意力100%集中在這些時(shí)間段里。然后是20-30分鐘的休息,完全可以做任何事情。在休息時(shí)間你可以瀏覽你的郵件和社交媒體,當(dāng)然,散個(gè)步打個(gè)盹吃些健康的點(diǎn)心會更好。休息結(jié)束后,檢查任務(wù)管理軟件(比如,我用的是我的Swift To-Do List)里下一個(gè)工作是什么,再開始另一段需要百分百注意力集中的工作。在較大程度上,這與番茄工作法有點(diǎn)相似。
休息不是可以選擇要不要的。別想去跳過它。你的身體需要休息。即使你在做你喜歡的工作,你也需要休息一下——在這種情況,你會在接下來的時(shí)間段里有動力做更多事。
你的工作流程看起來應(yīng)該像這樣:
(任務(wù)1 - 任務(wù)2)- 休息 - (任務(wù)2 - 任務(wù)3 - 任務(wù)4) - 休息 -(另一個(gè)1-2小時(shí)的時(shí)間段) - 休息 ……
不要讓它完成起來是像這樣混亂隨機(jī),讓人看不下去的的:
任務(wù)1 - 郵件 - 任務(wù)1 - Facebook - 任務(wù)1 - 任務(wù)2 - 短暫休息 - Facebook - 任務(wù)2 - 郵件 - reddit - 任務(wù)3 - 郵件 - 休息 - 任務(wù)2 - 郵件 - 任務(wù)3 - 推特 - 黑客新聞 - 推特 - 任務(wù)1 - 任務(wù)3 - 休息 - 任務(wù)4
如果你的工作流程是像上面這樣,那你既不能完全放松也不能做完你能完成的事情。這是最低級的方法。這不僅浪費(fèi)了你的潛力和時(shí)間,也讓你長期身體會不適。
我不想撒謊。集中注意力真的不容易。它很困難,因?yàn)楫?dāng)你沒有集中注意力時(shí),你基本上會朝著相反的方向過去。習(xí)慣和根深蒂固的慣例像潛意識一樣難改變。
好消息就是,你還可以練習(xí)。你可以學(xué)習(xí)怎樣去集中精神。這是每個(gè)人都可以學(xué)的技能,而且它非常有用,值得為之努力。
——轉(zhuǎn)載于Jiri Novotny+,作者由于Windows平臺任務(wù)管理軟件的困擾。他把這篇用戶文章投遞在 ComponentOwl.com,因?yàn)樗腟wift To-Do List要使用 Component Owl上基于.Net框架的Better ListView作為它的核心組件。
另附:你有沒有身邊的人會每天要檢查50次郵箱?把這篇文章發(fā)給他。他之后會感謝你的。
原文來自:http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/
譯文來自:http://www.ituring.com.cn/article/1087
【編輯推薦】