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