寫程式碼如坐禪:你是哪一類程式設計師

發表於2012-02-22

來源:周慶成

當編譯佔用你時間時你會怎麼做。不只是編譯,即使是在等待任何短暫的計算機操作結束,這段時間你會幹些什麼?和你的工作日休息比起來這點時間是微不足道的,但是總的來說它還是能對你的生產率和幸福感帶來巨大幫助的。

順便說一下,這篇文章內容不是隻針對開發者和程式的。它對任何使用電腦的聰明人都有效。後面還會附上圖片。現在讓我們開始吧!

我的程式碼還在編譯

(伯樂線上補充一枚相關漫畫)

 

為什麼要寫這篇文章

我最近開始在我的工作習慣裡使用某種時間管理技巧來提升我的生產率,減小壓力,並幫助我的身體和大腦得到休息。我基本上想要在不被打擾的100%注意力集中的一兩個小時裡工作,然後就是20到30分鐘的休息。

然而,我幾乎立刻就進入了一個巨大的問題裡:當我正在編譯或部署什麼東西時,我會自動地開啟郵件客戶端,facebook,新聞閱讀器,新聞站點中的某一個或幾個。這是一個壞習慣。它很難改掉。它擾亂了我本來專注的注意力。

所以我決定搜尋相關資料。在 StackExchange 有一個關於“編譯時應該做什麼”的論壇。投票最多的答案是“減少編譯時間”一類的。然而,這些答案並不能解決更多的普遍問題:在電腦上工作時總是有些事項是需要時間來等待的。

與之不同的,論壇上的人多半建議那些時間可以做些什麼(類似收發郵件或是看新聞),這是一個差勁的想法。一個好的建議是這個——“同一時間幹多件事是不好的”。我贊同這個觀點。但其他人呢?不認為?好的。這個答案令人失望。所以在這篇文章裡,我將深入探索這個問題並且向你展示最理想的方法。

兩種型別的程式設計師

有兩種極端原型的程式設計師——“禪宗的程式設計師”,我們稱為心如止水的程式設計師,還有“不能剋制分心的程式設計師”,我們稱為心緒不定的程式設計師。兩者都是非常極端的,所以他們應該處於貝爾鐘形曲線的兩端,對嗎?

錯。實際上,心緒不定的程式設計師是難以置信地普遍存在著。

圖片的效果要比文字有用,所以我現在用圖片來說明兩種程式設計師的精神世界的狀態。

心如止水的程式設計師

心如止水的程式設計師會怎麼做?

他寫程式碼。這是他做的唯一的事情,這也說明了一切。也許更重要的問題是什麼事情他沒有做:他沒有受分心的影響。專注的注意力,專注的修改,專注的編碼。一到兩個小時的純程式碼時間,然後才是20-30分鐘的休息,通常是離開電腦。之後他會繼續開始寫程式碼。(以上所說的時間只是一個例子。他可以用其它方式安排時間-不過他總是能平衡並搞定長時間的生產率。)

他的思維像平靜的水緩慢地流動。當然它不像那種恆久不變的凝固的冰。

這就是心如止水的程式設計師精神世界看起來的樣子:
寫程式碼如坐禪:你是哪一類程式設計師

心緒不定的程式設計師

即使你的精神世界現在看起來像一個心如止水的程式設計師,只要你在編譯的時候開啟了Facebook或者檢查了你的郵件還是做了其它什麼事情。幾分鐘之後它就會像這樣:
寫程式碼如坐禪:你是哪一類程式設計師
女士們先生們,這就是你檢查你的郵件和開啟Facebook後的狀況。如果你還擁有一堆實時通知,即時通訊,還要去檢查你的RSS源和推特,結果就是大腦像上面圖中變成碎片的災難一樣。

你可能還沒有完全從這張圖恢復過來。不在特定的某天,任何時候都有可能發生。即使你把精神世界所有無用的東西最小化到工作列,它仍會留在那裡,不停地引誘你,消耗你的精神資源。朋友,時間就這樣走了,你會困惑它是怎麼不見的。

順便說一下,如果你是一個心緒不定的人,你還是可以看看我們網站的網頁漫畫!不必立刻回來把這篇文章讀完。別忘了訂閱那個漫畫源!看完所有的漫畫後可以分享給你的朋友並聊聊!做這些事不會過於分心的,真的!

心如止水的程式設計師與心緒不定的程式設計師之間的區別

心如止水的程式設計師更傾向於長期的幸福感和生產率。他有能力高度集中注意力,關注目標。

心緒不定的程式設計師更傾向於短暫的滿足感,長期這樣不能到達全部的潛力並且會對他自己的身體和精神帶來雙方面的傷害。他不能定下心來集中注意力。

為了徹底領悟這點,我們首先需要理解我們的大腦是怎樣工作的。

我們的大腦是怎麼工作的

事實上我們不能完全知道,不過,基於我們現在已有的理解,心理學家已經提出了一些有用的類比方法,可以幫助我們領悟複雜的東西。

電腦的類比

你的大腦像一臺電腦。當然,它要比一臺個人電腦複雜多了,不過電腦的比喻說法可以讓我們形容許多在大腦裡執行的程式。有些東西像硬碟,有些東西像記憶體和中央處理器,還有程式和執行緒,它們的確需要一些時間來訪問資訊並計算資料。

很明顯我們的大腦擁有一定的容量在任一時刻集中注意力。你可以很好地集中在某一東西上,或是不太好地集中到幾樣東西上,但你不能兩者都做到。把注意力從一個任務轉到另一個任務甚至會影響認知能力,特別是兩種毫不相干的任務。

只要你把意識關注在某樣東西上,就會花些時間處理它和它所分配的資源並會從記憶體和後臺程式裡初始化它。它可以存在幾個小時甚至幾天。最近的關注到的東西在任何時刻都會不斷出現的。即時你沒有注意到它們在你的大腦裡流動,它們一直都在那兒——而且它們佔用資源,使你不能集中注意力。

抽屜的類比

另一種有用的比喻說法是櫃子裡的抽屜。你的大腦像存放東西的抽屜。每個抽屜都是擁有資料且互相連線的,基於某種上下文關係和概念。在特定的時間裡,一些抽屜是開啟的,一些是關閉的。開啟的抽屜代表著你當前的精神空間,它們很容易訪問到。

主要的問題是關閉抽屜是需要很長時間的,而開啟它們是非常快的。

所以,當你在工作時,注意力轉到新的地方,它會立即開啟一堆抽屜。當你回到工作狀態時,那些抽屜仍然是開著的。這樣唯一的好處是可以提高你的創造力和頭腦風暴——但是不需要的抽屜開著會有影響的。它們抑制左腦的思維並降低注意力。

編譯時應該做什麼

在等待電腦執行操作的時間裡,你的行為可以判斷出你是一個心如止水的程式設計師還是心緒不定的程式設計師。

主要的意見是:

1.不要分心
2.短暫的休息

保持注意力並不是那麼難——你必須要切斷你大腦的電源,或者保持注意力集中在你的程式碼上。不過,關閉大腦效果更好。這樣會進入一個微冥想狀態,在短暫休息之後它仍會有效。

為什麼要進入冥想?好的,你的大腦每天都在咀嚼程式碼,為什麼不給它一個休息呢?此外冥想科學上被證實能不斷增加幸福等級。想象一下每天進行兩次30-60秒錶面上看起來不重要的冥想所帶來的長期優勢吧。

現在,短暫的休息時應該做些什麼?從以下內容中選擇任何事,按你的想法組合在一起。你可以把它們按照這個順序全部做一遍,這取決於(也可以不在意)這些行為所需要的時間。

1.站起來
2.眺望遠處
3.把雙手放在腦後,斜靠在椅子上
4.伸長雙腿,把雙手儘量舉高
5.閉上雙眼
6.輕揉眼睛
7.慢慢地把頭向各個方向轉,舒展頸椎
8.閉上雙眼然後深呼吸
9.倒一杯水(要小心路上別被同事分心了)

你也可以做任何主要身體參與而不影響思維的事——靜力鍛鍊,變戲法,決鬥,哈哈

順便說一下,如果你的老闆不給你足夠的時間做以上的任何事,那麼推薦他來看這篇文章。讓自己更快地恢復精神並保持注意力,比看起來在工作其實已經分散注意力並很快就感到累的情況要好很多。

伸展放鬆是很有益處的。我上一次見我的物理治療師時她發現我的肩膀很多地方很緊繃。她告訴我這可能是因為我坐在電腦前雙手總是彎曲造成的,所以肌肉縮短而且不能用力。那我應該怎麼做最好呢?舉高我的雙手,試著舉到最高。這是我在編譯或是等待電腦執行操作時常做的一件事。

你可能已經聽說過當你在用電腦時進行有規律伸展放鬆和短暫休息是一個不錯的想法。問題是怎麼做到——即使你設定了一個計時器,但假如到時你正處在一個複雜的事情,正做到一半的時候怎麼辦?這樣看來就無法實現了。然而,如果你在編譯時短暫休息一下,就能很好地做到了,你甚至可以把它養成一種習慣,讓它變得更“自然”!現在編譯就開始能提醒你做伸展放鬆了。這太令人不可思議了。

編譯時你不應該做的事情

我其實想用力點選我的主頁,這樣做能讓事情變得簡單,這裡有一張你在編譯時不應該做的事情的列表。以這種方式思考:這些事情不僅會使你不能集中注意力,還會讓你的思維和身體不能很好地短暫休息。

1.閱讀你的RSS源

2.閱讀新聞(任何新聞)

3.收發郵件

4.瀏覽各類社交媒體(Facebook,twitter,google+,linkedin,reddit)

5.觀看視訊

做以下兩件事要比上面的好一點,但依然不推薦:

1.和同事聊天

2.讀一本物理書

專注的注意力和專注地修改

我馬上就要結束這篇我所想的每日工作流程的理想方法——禪宗程式設計師的文章了。

保證生產率和效率的關鍵是注意力100%集中在你現在正在做的事情上,做完後再把注意力完全轉移到其他地方。注意力從一件事情到下一件事情的過渡不能有任何的拖泥帶水。

把你的工作時間分成1-2個小時一段。注意力100%集中在這些時間段裡。然後是20-30分鐘的休息,完全可以做任何事情。在休息時間你可以瀏覽你的郵件和社交媒體,當然,散個步打個盹吃些健康的點心會更好。休息結束後,檢查任務管理軟體(比如,我用的是我的Swift To-Do List)裡下一個工作是什麼,再開始另一段需要百分百注意力集中的工作。在較大程度上,這與番茄工作法有點相似。

休息不是可以選擇要不要的。別想去跳過它。你的身體需要休息。即使你在做你喜歡的工作,你也需要休息一下——在這種情況,你會在接下來的時間段裡有動力做更多事。

你的工作流程看起來應該像這樣:

(任務1 – 任務2)- 休息 – (任務2 – 任務3 – 任務4) – 休息 -(另一個1-2小時的時間段) – 休息 ……

不要讓它完成起來是像這樣混亂隨機,讓人看不下去的的:

任務1 – 郵件 – 任務1 – Facebook – 任務1 – 任務2 – 短暫休息 – Facebook – 任務2 – 郵件 – reddit – 任務3 – 郵件 – 休息 – 任務2 – 郵件 – 任務3 – 推特 – 黑客新聞 – 推特 – 任務1 – 任務3 – 休息 – 任務4

如果你的工作流程是像上面這樣,那你既不能完全放鬆也不能做完你能完成的事情。這是最低階的方法。這不僅浪費了你的潛力和時間,也讓你長期身體會不適。

我不想撒謊。集中注意力真的不容易。它很困難,因為當你沒有集中注意力時,你基本上會朝著相反的方向過去。習慣和根深蒂固的慣例像潛意識一樣難改變。

好訊息就是,你還可以練習。你可以學習怎樣去集中精神。這是每個人都可以學的技能,而且它非常有用,值得為之努力。

——轉載於Jiri Novotny+,作者由於Windows平臺任務管理軟體的困擾。他把這篇使用者文章投遞在 ComponentOwl.com,因為他的Swift To-Do List要使用 Component Owl上基於.Net框架的Better ListView作為它的核心元件。

另附:你有沒有身邊的人會每天要檢查50次郵箱?把這篇文章發給他。他之後會感謝你的。

原文來自:Are You a Zen Coder or Distraction-Junkie?

相關文章