程式設計師如何管理好自己的思維?

turingbooks發表於2011-09-13

  好問題是沒有答案的。它不是一個需要擰緊的螺栓,而是一顆種下的種子,由它可以收穫一片思想的綠洲。

  ——約翰•安東尼•查爾迪(John Anthony Ciardi19161986),美國詩人和評論家

  毫無疑問,我們生活在資訊豐富的時代。但往往過猶不及,過多的資訊卻導致了知識和注意力的匱乏。置身於應接不暇的資訊中,很容易失去思考的重心。與其遊蕩在資訊的高速公路中 ,不如主動地管理你的思維。

  與第6章中的方法相同,你需要更加主動地管理思維,必須能夠將重點放在你所需要的資訊上,過濾掉身邊大量的無用資訊,在恰當的時候獲取到恰當的資訊。既不會被無關緊要的細節所迷惑,也不會錯失任何微妙的線索。

  在本書的這部分,我們將沿著以下三點研究如何更好地管理你的思維。

       增強注意力

       管理你的知識

       優化當前情境

  注意力表現為關注感興趣的領域。你可以僅關注相當少的事情,讓在此之外的,事件和見解逃脫你的注意。當前情境下許多事情都會爭奪你的注意力,有些是值得關注的,而大部分是無關的。我們將會研究增強注意力的方法。

  有時候,我們將“資訊”和“知識”這兩個詞互換使用,但實際上它們是不同的事物。資訊是在特定情境下的原始資料。例如,微軟公司花費了10億美元收購了一些公司只是一條資訊,當今不缺少資訊。而知識才揭示了資訊的意義。你針對資訊花費時間、注意力和技巧,並從中獲得了知識。再看微軟的收購行動,我們分析得出這將改變市場的格局,將提供更多的機會,並影響其他廠商的知識。我們將會研究一個更好的方式來組織你的深謀遠慮。

  情境,超出了本書之前的使用範圍,它是指你此刻正在關注的事物的集合。比如,你正在除錯一個程式,所有的變數、物件關聯關係等構成了當前的情境。把它看作某一特定時刻你正處理的資訊的“工作組”。

  理解這三個互相關聯的主題將會幫助你更高效地管理思維。

  第一件要做的事就是專心。

  提高注意力

  早在2000年我還在做有關實用程式設計演講的時候,我聽說了一個很奇怪的新聞故事。在賓夕法尼亞州的達比市,一名老婦人走在前往雜貨店的路上,一個年輕人跑過來並猛地撞上了這位婦人,然後跑開了。老婦人擔心被搶劫,於是很快檢查了隨身的錢包和貴重物品。雖然受到了驚嚇,但她的狀態還好,於是繼續走向雜貨店。

  她在店中和幾個人交談,並買了奧利奧餅乾和一份報紙,然後離開了。但當她回到家中,她的女兒馬上尖叫起來,她看到媽媽的脖子上插著一把牛排餐刀。

  太令人驚奇了,人竟然可以在分心的情況下忽視這麼嚴重的事情。在擔心被搶劫的情形下,這位老婦人都沒有注意到她脖子被刺傷的疼痛。

  如果你都可以忽視掉如此明顯的事情——比如插在你脖子上的刀——那麼想想你身邊還會有其他什麼事情從你的注意力中逃脫。

  注意力短缺

  你的注意力是供不應求的。每天有那麼多的事情都爭相獲取你的注意,而你僅僅能關注其中的一部分。

  在多處理器系統中有一個眾所周知的設計問題:如果不小心,就會導致某個CPU花費所有的執行週期與其他的CPU協調任務,但實際沒有做任何工作。同樣,人們會很容易毫無意義地分散注意力,結果沒有什麼事情獲得了我們充分的注意,我們也沒有做任何有效的事情。

  也不總是外部的事物在爭奪你的注意力。例如,在4.2節中我們看到的,L型模式的CPU有一種“空閒迴圈”程式。如果沒有更緊迫的事情值得你去注意,閒置迴圈將會停留在一些低等級的困擾或不緊急的問題上,如“午飯吃什麼 ”,或重放某個交通意外或爭吵。這當然干擾了 R型處理,你就又回到了使用半個大腦工作的狀態。

  你可能常常對自己說:“我很想去做,但我沒有時間。”或工作中出現了新任務,而你認為自己只是苦於沒有足夠的時間來處理它。時間不是真正的問題。正如在前面所指出的(見6.3節),時間是你自己分配的。並不是我們沒有時間了,而是我們注意力不夠。與其說你沒有時間,不如更準確地說你沒有頻寬。當你的頻寬——你的注意力資源——過載時你將會錯過某些事情。你無法學習, 無法適當地開展工作,你的家人也許會開始認為你得了腦瘤或其他疾病。

  如果你注意——真正集中注意力——你就可以完成很了不起的事情。保羅•格拉漢姆(Paul Graham)在他的Hackers and Painters: Big Ideas from the Computer Age [Gra04]一書中提到:“一個海軍飛行員在夜間以每小時224公里的速度在甲板上著陸一架18噸重的飛機,可能比一個普通少年切下一片硬麵包圈更加安全。”

  我可以很容易地回憶起當我十幾歲的時候,我耐心地站在烤麵包機前腦中閃過的念頭。這念頭與英國鬆餅、百吉餅、麵包、果醬和我面前忙碌的機器都無關。少年的心很容易走神,而且隨著年齡增長也不見得有所改善。

  另一方面,飛行員是真正特別專注的。在那種情形下,片刻的猶豫不決或錯誤,將導致壯烈地死去。我們需要培養在沒有任何危險的情況下,也能如此集中注意力的能力。

  放鬆的、集中的注意力

  下面嘗試一件簡單的事情。坐下來待一會兒,不要想你昨天犯的錯誤或擔心明天可能出現的問題。著眼於現在,此時此刻的這一瞬間。

  沒有任何分心。

  沒有任何自言自語。

  我就在這等著。

  這並不容易,不是嗎?大部分冥想、瑜珈以及類似的練習都是為了這個相同的目標:緩和大腦裡L型嘈雜的聲音所帶來的痛苦,生活在此刻,不要將你的精力不必要地分散,因為內心中喋喋不休的雜事會擊倒我們。

  《公共科學圖書館—生物學》(Public Library of Science-Biology 中發表的一份研究報告顯示,冥想的訓練可以提高人的注意力。

  他們的測試衡量了在同時面對多種虛擬場合、多種刺激下,個體分配認知資源的狀態。聽起來好像日常在辦公室中一樣……

  得到大量冥想培訓的人,勝過只接受了極少培訓的人。但最有趣的是,沒有人在測試時冥想。正如文章的結論:

  “因此結果表明,密集的心理訓練可以持久並顯著地改善人們在相互競爭的刺激下,對注意力資源的有效分配,甚至人們並沒有主動利用他們學到的技術。”

  換言之,在一天中你可以隨時集中注意力,而不只是當你冥思或明確“注意”的時刻。這是一個巨大的收益:就好像通過體育鍛煉,能獲得更強、更長久的健康。

  

  如果你想在一天中更有效地支配你的“注意力資源”,那麼就需要學習一些基本的冥想技巧。

  如何冥想

  從世俗到宗教,有很多形式的冥想技術。在這裡研究一個行之有效的特定形式,它源於佛教傳統,但你並不需要是一個佛教徒或做其他任何特別的事就可以有效利用它

  你想要的不是走神或入睡或放鬆或考慮巨大的奧祕(Great Mystery)或任何類似的事情(對於這些特別活動還有其他形式的冥想)。相反,你想要的是沉浸到一種寬鬆的思維狀態中,在這裡你可以意識到自己和你的情境,不用做出任何判斷和回應。這就是所謂的內觀冥想。那一刻你意識到某些事情,但是沒有額外的思考。順其自然。

  在這種風格的冥想裡,你需要做的“所有”事情就是注意自己的呼吸。這不像聽起來那麼容易,但它的確有不需要任何道具或其他特殊裝置的優點。以下是具體步驟。

       尋找一個安靜的地方,擺脫干擾或中斷。這個可能是最難的一步。

       舒適、清醒地坐著,挺直背。讓你的身體放鬆下來,就像一個玩具娃娃。花點時間感受體內的任何緊張情緒,將其釋放。

       閉上眼睛,將注意力集中在呼吸——空氣進入和離開你身體的這一點上。

       注意呼吸節奏,吸氣的長短和質量,吸氣後屏氣的短暫間歇,呼氣的質量,呼氣後屏氣的短暫間歇。不要試圖去改變它,只是感受。

       將思維集中於呼吸。不要說話。不要描述你的呼吸或其他任何想法。不要與自己交談。這是另一個困難的部分。

       你可能會發現自己在思考一些問題或在與自己交談。每當你注意力遊蕩開去,就要拋棄這些想法,輕輕將注意力回到呼吸上。

       即使你的思維經常遊蕩,這個練習能使你發現自己的注意力在遊蕩,並且每次都能使自己回來,這對你是很有幫助的。

  正如4.2節中的繪圖練習,你需要停止自言自語。在本例中,請你把注意力明確地放在呼吸上。在繪圖練習中,你努力阻止頭腦中出現任何詞語。在本項練習中,詞語可以出現——但你只需將其釋放。只要意識到即可,不去思考或作決定。語言、感覺、想法以及其他任何東西來到時,你都不需要理睬它們,讓注意力回到呼吸上。

  進行這項練習時有一點非常重要:不要睡覺。你需要放鬆自己的身體和平靜你的思維,但是要保持清醒,事實上,你要非常清醒地專注在呼吸上。

  經過一段時間的練習後,你可以主動嘗試控制自己的呼吸。分段呼吸的方法是,將呼吸看作空氣經過三個獨立的倉庫:

       腹部

       胸部和胸腔

       胸部的最上部和鎖骨(但不包括喉嚨)

  充分將體內氣體撥出。在吸氣時,首先充滿腹部,稍稍地停留,然後充滿胸部,最後向上充滿至鎖骨。保持你的喉嚨開啟,下顎放鬆。不要緊張。

  短暫停頓,然後正常撥出。 

  短暫停頓,然後重複上面的動作。 

  你也可以轉換方法,自然吸氣,然後以分段方式呼氣,或兩者都做。在任何情況下,都要保持呼吸的意識,感受空氣在你的肺中,並讓其他的想法自然溜走。

  當然,如果上述任何操縱呼吸的活動讓你焦慮、氣短或有任何的不舒服,請立即恢復自然呼吸。沒有人在對你的表現打分,做適合你的事,不要做得過火。開始先嚐試幾分鐘(比如三分鐘)。

  許多人在研究冥想的益處。最近 ,研究人員發現,即使是孩子——中學生——也可以受益。學生們參加了為期一年的學習,結果發現他們提高了保持平靜警覺狀態的能力,改善了有關情商的技能(自我控制、自我反省/意識、靈活的情緒反應),並提高了學習成績。對於坐著呼吸來說這是個不錯的投資回報。

  冥想聽起來好像沒什麼意義。但實際上意義重大。我強烈建議你嘗試片刻,因為專注是一種重要的技能。

  實踐單元

       定期做冥想。開始時,每天選取幾個容易想起的時刻進行三次深度放鬆的“冥想”呼吸練習,例如,在起床時,在午餐、晚餐時,或參加會議之前。

       最好在每天的同一時刻,嘗試持續20分鐘的冥想練習。你能夠開始平靜內心的想法了嗎?

  在閱讀下面的章節前嘗試做這件事……

  你必須立即停止閱讀並嘗試這件事,否則在閱讀時你將會呼吸不適,將不能專注於下一節內容——非常奇怪的內容——有關如何主動地分散注意力。

  通過分散注意力來集中注意力

  有些問題的解決需要較少意識的參與。這導致了一個有趣的問題。怎樣才算是“起作用”了?

  當你將某些東西醃製12小時的時候,你是在“烹飪”嗎?當你閒坐著思考問題的時候,你是在“工作”嗎?

  是的,這就是答案。創造力不是按照考勤鍾來運轉的,並且在壓力下也一般不產生結果。事實上,情況剛好相反:你必須有意識地忘掉問題,讓問題在思維中浸泡一會。

  Doing Nothing: A History of Loafers, Loungers, Slackers, and Bums in America [Lut06]一書的作者湯姆•盧茨(Tom Lutz)說過:“顯然,對於許多人來說,創造過程中有大量時間你只是坐著而什麼都沒做。”但是要澄清一下,這不是指沒有做任何事情,指的是沒做某些事。

  在後工業化社會,這導致了一個問題。這種關鍵的“思維時間”在大多數企業中一般是得不到批准和報酬的。現在對程式設計師(或其他知識工作者)有一種普遍的誤解,如果你沒有在鍵盤上打字,你就沒有在工作

  只有在你有一些待處理的資料時,才會把工作轉移到無意識狀態。你首先需要在頭腦中“填滿”你知道的事實。

  盧茨接著說,每個人都有自己的“浸泡”方式 ,也就是讓他們思想發酵的方法(例如,我喜歡通過修剪草坪的方式)。我們曾談論R型如何獲得執行的機會,但是有一個相關的想法來自意識的“多草稿”模型。

  在《意識的解釋》(Consciousness Explained[Den93]一書中,丹尼爾•丹尼特(Daniel Dennett)博士提出了一種有趣的意識模型。在任何特定時刻,你的頭腦中包含了事件、想法、計劃等多個粗略的草稿。丹尼特將“意識”定義為某一時刻下,頭腦中佔有最多腦細胞或處理活動的某個草稿。

  將多個草稿看作縈繞在頭腦中的不同螢火蟲雲 。大部分螢火蟲都自由地閃爍,熒光形成了雲。當幾個雲同步閃耀時,它們其實相當於接管了大腦片刻,這就是意識。

  假設你的感官注意到了一些新的事件。丹尼特博士說:“一旦大腦的某些區域性特定部分觀察到了一些事件,該資訊內容就不需要再傳送給大腦其他主要部分做篩選……這些區域性空間短暫的分散式內容選取是有特定時間和特定部位的,但是在它們工作時大腦並沒有意識到資訊的內容。”

  拖延與浸泡

  怎麼區分你是在浸泡思想還是在拖延、浪費時間呢?

  我總是把拖延稱為“做紙娃娃”。一個密友(姓名保密)第二天有一門重要的考試,但是前一天晚上,她並不學習,而是坐在沙發上剪紙娃娃。當時這在我看來就是典型的耗費時間: 一個無關的非生產性的活動阻礙了你需要做的真正工作。

  但也許我錯了。也許這不是拖延。這是一個高階觸覺練習,也許是她浸泡思想的方法。她通過了測驗並以優異成績畢業。

  如果某個任務你真的不想做,那麼任何分散注意力的努力都很可能只是耗費時間。如果你仍然有興趣,但感覺“困難”,那麼思想其實是在繼續發酵,這當然沒問題。

  換句話說,認知尚未達到意識的水平。他繼續說:“這種內容流,由於它的多樣性而像是一篇記敘文;任何時候在大腦中的各個地方都有多個敘事片段的‘草稿’處在不同階段的編輯狀態中。”這種由草稿到草稿的流形成了我們所認為的敘述。

  丹尼特的理論是對所謂的笛卡兒劇場(Cartesian Theater)模式的一個非常有趣的替代。在笛卡兒劇場的模式下,假設大腦存在一個意識中心,它指導大腦的活動以及你的行動。這有點像播放意識流的電影螢幕。

  但是,事實可能並非如此。多草案的理論支援更分散的處理模型,這更符合目前的研究。沒有單一源頭或執行監控器來控制這些大腦部位。相反,此刻被共同啟用的任意區域形成了你的意識。這使得意識具有一種顛倒、自組織甚至可能突然出現的屬性。

  讓我們再回到浸泡的想法,儘可能去接受它,你需要時間讓這多個草案發酵、滲透和發展。其中某一個想法將是“當前式”,併成為意識的內容,但是這並不意味著所有其他草案將被丟棄或被認為是無關的。 

  你聽說過顧問的“三法則”嗎 ?一般情況下,如果你不能想出計劃可能出錯的三種方式,或想出一個問題的三種不同解決方法,那麼你的思考還不充分。你可以把“三法則”應用到多草稿模型上,讓至少三個可選擇的想法來發酵並形成意識。它們已經存在,只需讓它們生長和成熟。 

  是的,這可能僅僅意味著坐著並無所作為。把腳翹在桌子上,一邊吃著香脆的點心一邊哼唱著小曲。

  

  那麼,現在你該怎麼做?正如你需要從R型轉換為L型模式來更好地學習,你也需要更加積極地處理知識。

  實踐單元

       你最喜歡的浸泡思想方式是什麼?你嘗試過別的嗎? 

       你曾批評過別人在思考浸泡上花時間嗎?你現在會有所改變嗎? 

       你有沒有因為浸泡思想而被批評?下一次再發生這種情況時,你將如何應對?

  管理知識

  現在是時候來處理你的想法、見解、原始資訊和知識,並把這些混亂的東西變成一些卓越的東西了。

  但是這一次,你所需要的不是你的大腦。你需要增強你的處理能力。

  這些主題都是什麼?它們為什麼寫出來這麼有趣?讓我來解釋一下……

  

  開發外部資訊處理系統

  正如我在3.2節所說的,你需要隨時隨地做好準備捕捉資訊。但是,一旦你捕捉到它,不能只讓它呆在那裡,這對你沒有任何用處。你需要處理這些材料:組織它,發展它,合併不同的材料,並將整體的想法提煉和劃分為更具體的想法。

  你需要一個地方來存放想法,在這裡你可以更有效地利用它們。基於現代科技,我建議你使用某種超連結性質的資訊空間,可以很容易進行自我組織和重構。但在深入細節之前,讓我解釋一下為什麼這是如此重要。

  這不是一種單純的文書活動。據有關分散式認知的研究表明,大腦之外的思維支援工具會成為你思維頭腦的一部分。不但大腦本身很神奇,我們還可以通過提供一些關鍵的外部支援為它增壓。

  美國前總統托馬斯•傑斐遜一生擁有過大約1萬本書 ,是一個書迷,這些書的主題豐富多彩,從政治哲學到音樂、農業及葡萄酒釀造。每本書都成為他意識的一小部分,但可能並不是整本書,因為我們絕大多數人都沒有百科全書般的記憶力。一旦你讀過一次,記得去什麼地方找到對應的細節就足夠了。

  愛因斯坦也深諳此道。據稱他曾被問到一英里有多少英尺,他回答說,他不會在頭腦中填滿能輕易找到的東西。這就是參考書籍的用處,這是一種有效使用資源的方式。

  你自己的藏書,你的筆記,甚至是你喜愛的IDE 和程式語言都構成了外部資訊處理系統的一部分,它是在你實際大腦之外的思維記憶體或處理元件。作為程式設計師和知識工作者,我們可能比大多數人更依賴於計算機去建立更多的外部資訊系統。當然,並非所有基於計算機的工具都合適。

  對於浸泡、分類和發展想法,我發現一種最有效的工具就是個人的wiki 。事實上,正如我們將看到的,通過wiki組織你的偉大想法,你會得到更多的偉大想法。

  使用wiki

  傳統的wiki Wiki-Wiki-Web的簡寫)是一種網站,它允許任何人使用普通的網路瀏覽器編輯每個網頁。在每一頁面的底部都有一個連結標示“編輯此頁”(Edit This Page),如圖8-1所示。

  

    點選那個連結,網頁內容就會出現在一個HTML文字編輯介面中。然後,你可以編輯網頁,並點選“儲存”按鈕,你更改的部分就出現在該網頁上。Wiki標記通常比原始HTML簡單。例如,你可以使用*字元建立一個列表項、帶下劃線的斜體,及諸如此類的屬性,如圖8-2所示。最重要的是,能夠連結到其他網頁去。

  

    首先通過使用WikiWord建立一個新網頁的連結。一個WiKiWord是由兩個或兩個以上單片語成(單詞首字母大寫,中間無空格)的。一旦你將一個WikiWord放置在網頁上,就會自動關聯到對應名字的wiki頁面上。如果該網頁尚不存在,那麼在第一次點選時,你會看到一個空白頁,並有機會來填寫它,這使得建立新頁面非常容易和順手。

  但傳統的wiki是基於Web的,而且把編輯模式和顯示模式分開了。無論出於何種原因,如果你需要wiki 是一個基於Web的應用程式,那麼這是一個不錯的主意。但是對於本節的內容來說,你可能需要在技術上稍加改變。

  你可以使用採用自己喜歡的編輯器來實現的wiki——一種wiki編輯模式。這使你的編輯器環境中有WikiWord超文字連結和語法著色或高亮顯示。我曾經在viXEmacsTextMate中使用過這種功能,效果良好。wiki感覺就像一個文字的思維導圖(講到這裡,你很可能會使用思維導圖幫助明確和增強wiki的章節)。

  我最成功的wiki實驗是搭建一個PDA作為與電腦同步的wiki。我使用的是夏普Zaurus系列,一種袖珍PDA(拇指鍵盤,執行Linux作業系統)。我安裝了vi編輯器,寫了一些巨集,使它可以實現超連結遍歷和語法高亮等。然後,我可以使用原始碼版本控制工具CVS同步wiki的檔案。

  其結果是,這種行動式的口袋wiki可以進行版本控制並與我的桌上型電腦和膝上型電腦同步。無論在哪,我都隨身攜帶wiki。我可以建立和增添記錄,寫文章或寫書(包括本書),等等。

  而寫這本書時,我逐漸從Zaurus轉移到iPod Touch,它使我擁有了一個定製的基於RubyWeb伺服器,提供了一種更傳統的、使用同步wiki資料庫的、基於Webwiki

  你可能想要在你的膝上型電腦或PDA上做同樣的事情,使你在辦公室以外也可以處理wiki。目前有許多可供選擇的wiki應用。可登入http://en.wikipedia. org/wiki/Personal_Wiki 檢視最新的列表。

  

  這一做法的真正妙處在於,一旦有地方儲存一些具體的資訊,你就會注意到新的相關資料會突然從某處冒出來。這個現象類似於感官調整。例如,如果我告訴你在派對上尋找紅色的東西,你會突然發現紅色無處不在。同樣的事情也會在新機型的車上發生。你調整了注意力,因而在你之前沒有關注的地方,突然間,要尋找的事物就會出現在你面前。

  有了wiki,當你有一個隨意的想法後,可以把它寫下來放在你的主頁上,因為這時你不知道還能對它做些什麼。一段時間以後,你有了第二個相關的想法,而現在你可以將這兩個想法放在一起,儲存在新的一頁中。現在突然更多的相關想法出現了,因為你有一個地方來存放它,而你的思維也會非常樂意幫忙。

  一旦你有了地方來存放某類想法,你就會得到更多這類想法。無論是wiki還是在紙上寫的日誌,也無論是便籤還是鞋盒,對於特定主題領域或專案的相關想法,有一個地方來存放它們就是外部資訊系統的主要優點。

  例如,看看圖8-3所示的螢幕截圖。這個顯示了我個人的wiki格式,網頁的標題出現在每個頁面的上方,然後是一些指向到其他wiki頁面(如待辦事項)的連結。 WikiWord連結到相同名稱的網頁,以藍色高亮顯示,和通常的網頁網址一樣。

  

  當我第一次找到一個關於食用萵苣的巧妙方法後,就建立了名為LettucePrinciple的網頁。我聽到一則有關妙語“解凍雞”的笑話,我認為可能有用,所以將它記錄在ThawTheChicken中。然後,美國宇航局由於數量單位不匹配的程式設計錯誤損失了價值125百萬美元的衛星,所以我在MarsLander中將這件事記錄下來。

  既然我有了這麼多漂浮不定的想法,我就建了一個名為SpeechNotes的列表,作為演講素材的積累。我放上了ConwaysLawLawofDemeterOilSpill和其他已經使用過的材料,還有一些新的想法,例如ProjectTerroir。現在LettucePrinciple有了歸宿,有了放置類似主題的地方,所以我把它加到了列表裡。我曾經在RubyConf做的一個有關技術改造的演講中和部落格中引用過它

  列表增長到幾百項,這並不好。我開始整理wiki並清理東西了。我制定了不同的清單,如部落格帖子、即將舉行的演講、基本的故事和研究,等等。一篇文章可能參考六七篇網頁,一本書的大綱可能引用20多個。但是wiki的好處不僅僅在於這樣的組織性。

  將一些筆記從原來的形式抄寫到wiki (或整理到同一個wiki上),這有助於大腦吸收這些資料。就如同抄寫會議或課堂上的筆記,這樣做提供了第二次深入接觸材料的機會,並能使大腦神經更強烈地感受這些資訊。

  你越是接觸它,越可能會發現原來你沒有注意到的材料間的關係和模型。再次,你可以對一些較有意思的資訊重構思維導圖,以獲得更深入的理解,並將其寫回wiki 

  你會更積極地尋找模式。 

  但你需要保持對當前工作的注意力,不分心。在下一節中,我們將看到原因。

  優化當前情境

  情境,我們在這裡指的意思是,載入到你的短期記憶裡的有關你手頭工作的資訊集合。用計算機術語說,就是換到記憶體裡的正在使用的頁面集合。 

  計算機都有一種超越我們思維結構的獨特優勢,它們能輕鬆自然地交換情境。 

  我們的大腦不具有這樣的能力。如果有事物中斷我們,打破我們的工作流,或導致我們分散了注意力,那將一切思路恢復到原狀是相當昂貴的。我們把“將一切思路恢復到原狀”稱為情境切換。我們要看看為什麼你需要不惜一切代價避免這種切換,以及如何避免分心並較好地管理中斷。

  情境切換

  你有多少可支配的注意力 ?也就是說,當前有多少事情需要你的注意,在任何特定的時間點上你總共可以關注多少東西?該比率是相當令人傷心的。

  你並不能像你想象的那樣支配太多的注意力。

  我們不能同時關注太多不同的東西,因為當你的注意力從一個事物轉移到另一事物上時,你需要切換情境。不幸的是,我們的大腦硬體無法很好地支援情境切換。

  多工處理對生產力會造成重大損失。一項研究 發現,一般情況下,多工處理將耗費你百分之二十至四十的生產力。這樣,會將你的8小時工作日削減到5個小時。其他的研究表明,這一數字能高達百分之五十,並伴隨錯誤的大量增加。

  澄清一下,多工處理在這裡是指在不同的抽象層次上執行多個併發任務。而在同一程式碼區域修正幾個錯誤不能算作多工處理,回幾個類似的電話或做多道菜也不算。當你中斷程式碼修正而去回應無關的即時訊息、電子郵件或電話時,或者快速瀏覽新聞網站時,你才會遇到麻煩。

  與電腦不同,我們的大腦沒有“儲存棧”或“重新載入棧”的操作。相反,你不得不逐一地把一切記憶拖回來。這意味著,如果你深入進行了一項任務(如除錯),然後被中斷,那麼可能需要平均20分鐘返回到原來的工作狀態。二十分鐘,考慮一下你在一天中可能會遇到多少次打斷,如果每次打斷都需要二十分鐘時間恢復,你一天中的相當一部分時間就都白白浪費了。這就是為什麼程式設計師一般討厭被中斷,特別是被非程式設計師打斷。

  電子郵件的組織問題

  你可能已經遇到有關電子郵件的這種問題:如果你在不同的資料夾中儲存各類主題的郵件,那麼當有一封郵件跨越多個主題時,你將如何處理?使用分散的主題來儲存,這在一段時間後就開始失效,將不再有用。在wiki中,你可以通過交叉連結的主題解決這個問題——它沒有嚴格的層次結構。但是對於電子郵件,通常你只能把郵件放在一個單獨的資料夾中。 

  相反,不將郵件儲存在資料夾中似乎更好。只保留一些大的存檔(按年份或者按月),並依靠一些搜尋技術來找到你所需要的郵件。

  如果你的電子郵件客戶端支援的話,你可以使用虛擬郵箱。基於你設定的搜尋標準來建立虛擬的郵箱。一封郵件可能會出現在多個虛擬郵箱中,這可以幫助你在需要時找到它。

  或者,你也可以使用本地的搜尋引擎。例如Mac上的Spotlight或谷歌桌面。

  在當今的數字文化中,這屬於被稱為認知超載的一種更大的、非常危險的現象。多種壓力的混合,太多的多工處理,太多分心的事,而且經常有大量新的資料待處理。科學家認為,試圖把注意力同時放在幾件事情上,意味著你在每件事情上都會處理得很差

  如果這還不夠糟糕,看看英國的一項有爭議的研究:如果你持續中斷正在進行的任務,去檢查電子郵件或者回復即時訊息,你的有效智商會下降10分。

  相比之下,吸大麻煙卷導致下降的智商僅4分(見圖8-4)。

  無論你做什麼,請不要同時都做。

  

8-4 相應的智商損失

  這使我懷疑,各家公司是否應該少關注強制性毒品檢測而重視強制性的電子郵件習慣測試 。當然不只是電子郵件和毒品,司機打手機時,也不能對路面的危險作出迅速反應。電視新聞頻道中充斥著不同的新聞報導,包括主螢幕、角落的小視訊視窗、多個滾動顯示頭條新聞以及起到分割作用的商業廣告。從認知科學的角度來看,這對觀眾絕對是一種酷刑。 

  鑑於我們同時處理多個事情時表現如此糟糕,並且很容易被大量其他的事情打擾,讓我們來看看如何避免一些常見的干擾並堅持完成同一個任務。

  避免分心

  在NPR(美國國家廣播電臺)的All Things Considered節目的一個片段中,Paul Ford稱讚了簡潔的使用者介面帶來的益處 。回想一下早期基於文字的作業系統(CP/MMS-DOS等)上執行的早期文件處理工具WordStar 或者WordPerfect。那時沒有視窗,沒有滑鼠,沒有電子郵件,沒有遊戲。工作環境是如此地乏味,但結果是鼓舞人心的。或更確切地說,這種工作環境可以幫助你保持對當前工作的注意力。

  我最喜歡的行動式寫作工具之一,就是我的夏普Zaurus。在它的生命即將走到盡頭時,我去掉了它裡面所有的東西,只剩vi編輯器。我卸掉了無線網路卡,僅使用CF儲存卡同步。此時的裝置使我很少分心。事實上除了寫作沒有別的功能。沒有遊戲,沒有電子郵件,沒有網路——只有你寫作的章節和文字。這是很艱苦的,但很有效。

  主動切換

  一個有助於應對這種情況的做法是更主動地進行情境切換(請注意是“主動地”)。不是簡單地忽略即時訊息或電子郵件,而是使它成為一個主動行為。關閉你正在做的工作。做幾個深呼吸(我們一會將談論更多呼吸的重要性和收發電子郵件的技巧)。對這項新活動提起好奇心和興趣,全神貫注地處理它。

  在功能更全的系統中,你可以執行一個專門的應用程式來隱藏目前使用的程式之外的所有程式。例如,在Mac上可以使用Think! 遮蔽焦點以外的所有程式,或者是DeskTopple ,它可以隱藏你的桌面圖示,替換你的牆紙,並定時自動隱藏應用程式的視窗。

  單任務介面

  在Mac OS X中,你可以使用QuickSilver工具來設定一些基於按鍵的快捷命令。它使我想起在那些早期系統中存在的終止—駐留式程式SideKick

  例如,我做了一些定製,只需幾個按鍵我就可以給地址簿中的人傳送一個一句話郵件。表面上看來,這似乎沒什麼大不了的。但是,能夠不訪問郵箱就傳送電子郵件是一個巨大的優勢。

  比如你正在處理某項工作,突然想到必須要傳送一封電子郵件給某人。也許你正在除錯程式,並且意識到將會在午餐約會中遲到。你按下幾個鍵,傳送郵件,然後再回到除錯。

  現在將這件事與通常的經歷作一下比較。

  你正在除錯,並且意識到必須傳送一封電子郵件。你的情境切換到郵件處理程式上,把它開啟,開始傳送郵件,同時發現了收件箱中多了幾封新郵件,這時干擾就出現了。你將會很快被新的郵件吸引,並失去了除錯的思路。情境破壞了。

  同樣,我配置了QuickSilver,只需幾個按鍵就可以在我的待辦事項清單中新增一行。否則,你會面對與傳送電子郵件同樣的風險。你必須把情境切換到待辦事項清單,一旦輸入新條目,就會看到所有其他需要做的事情,並再次分心。

  你可以在Linux下做同樣的事情,通過開啟一個小終端視窗,利用shell指令碼新增到待辦事項清單中。

  當你有一個想法時,最好把它放在適合的地方,無論是待辦事項清單還是電子郵件,然後回到你正在做的事情上。

  有效地組織和處理任務

  既然是在談論如何規範注意力介面和工作習慣,我們不得不討論一下GTD

  大衛•艾倫(David Allen)的《儘管去做:無壓力工作的藝術》(Getting Things Done: The Art of Stress-Free Productivity[All02],簡稱GTD,是一個非常受歡迎的圖書/方法/信仰,旨在幫助你組織、排序並有效地完成工作。

  他提供了一種方法論和大量的技巧和竅門(以前誰知道標籤會如此地有趣呢),來幫助你更有效地處理工作。

  從我們談論的角度看,艾倫提出了三個要點。前兩點都與處理電子郵件或其他類似收件箱有關,最後是一個更通用的要點。

  1. 僅掃描輸入佇列一次 不管你正處理的輸入佇列是什麼,無論是在電子郵件收件箱中,還是在語音郵件或檔案的收件箱中,都不要使用送達箱作為儲存裝置。檢查郵件並對新郵件作必要的分類,但不要總是重新檢視已存在佇列中的郵件。 如果某些郵件可以在兩分鐘內搞定,那就處理它,或者可能的話完全把它轉交給別人做(又名委託)。不斷地回顧相同的1000封郵件,並處理其中最不重要的20封,只會浪費你的時間和精力。

  2. 順序地處理每組工作 一旦你選擇一組工作,就要持續進行,避免情境切換。正如我們前面看到的,切換到另一個工作將破壞你的精神堆疊,當你返回到之前的工作時會損失更多的時間。我們程式設計師極易被小事情干擾。堅持做你正處理的工作。

  3. 不要在頭腦中保留清單 艾倫提出另一個重要方面——維護外部資訊處理系統。動態重新整理頭腦中的清單是相當昂貴的。相反,應該在外部資訊系統中保持待辦事項清單,例如,在記事貼上、在wiki中、在日曆上或專門的工作清單工具中,或在其他類似的東西中。

  GTD方法有很多的擁護者,如果有效地優化排序和組織任務正是你的煩惱所在,那麼GTD可能很有幫助。

  積極地管理干擾

  然而,即使是最有條理的待辦事項清單和每日計劃,也都無法避免被干擾。每個人都會受到干擾,但如今我們受到的干擾比以往任何時候都多。

  網路提供了各種各樣的干擾。 一切,從日常的垃圾郵件到YouTube上如何製作造雪機的視訊、網站上有關選舉舞弊和政治欺騙的討論(如圖8-5所示)、最親密朋友發來的即時訊息、Wikipedia上的新文章——所有的一切都在那裡吸引和分散你的注意力。 

8-5 若干類似訊息的迷宮(略)

  下面是一些建議,幫助你減少來自你的團隊、你的通訊渠道以及你自己的干擾。

  制定專案交流規則

  什麼時候比較合適回絕你的同事問你問題、請求你幫助追蹤程式錯誤或要求一次臨時的程式碼審查?他們什麼時候可以打斷你?你的經理有緊急事件找你該怎麼辦?

  這些都是正當的問題,最好的管理方式是在專案開始之前準備好答案。規定一天裡不能被打擾的工作時間段。設定其他時間段,用於交流、每日的站立會議 ,以及各種各樣意想不到的事情。

  沒有常勝將軍

  不是每天都是富有成效的一天。如果事件變得混亂,接受事實並意識到你不會進入最佳狀態,這樣可能會更有效。首先處理緊急狀況,然後在辦公室享受比薩餅,並期望有一個更美好的明天。

  也許你在每天早晨或傍晚是最清醒的。不管怎樣,至少你在一天中的某段時間裡是最有效率的。我在團隊裡聽說有人曾搞了“無郵件下午”或“無郵件日”,沒有電子郵件,沒有電話,沒有打擾。開發人員稱其為一週裡最有效率的、最快樂的時間。

  

  因此,在專案的早期為你的團隊建立互動規則(實際上是打斷的規則)。

  放緩電子郵件

  但並非每個人都遵守規則。你附近的同事將遵守你設定的規則,可是外地辦公室裡的同事呢?還有其他所有你要打交道的人呢——來自其他公司的人、客戶,以及茫茫人海中那些在電子郵件、即時訊息或電話另一端的人?

  你不能讓整個世界都依照你自己的時間表來運轉。

  或者你真能做到?

  小心郵件造成呼吸暫停

  在20082月,Linda Stone創造了“電子郵件暫停呼吸”(email apnea)這個詞語。一天早晨,她發現,“我開啟我的電子郵件,並沒有什麼不尋常的,就是每日常見的大量時間表、專案、出差、資訊和垃圾郵件。然後我發現……我沒有了呼吸。”

  電子郵件暫停呼吸:在處理電子郵件時,呼吸短暫中止或變得很微弱*

  淺呼吸,或完全摒住呼吸,不僅僅是不舒服,如果不能正常有力地呼吸,那麼可能嚴重損害你的健康。糟糕的呼吸會引起與壓力有關的疾病,引起部分緊張反應,阻礙葡萄糖進入你的血液,並有許多其他不幸的後果。

  這些來自郵件的預期壓力是否會影響你的呼吸?當一個程式崩潰或跟蹤除錯時呢?或任何其他電腦的常見狀況發生時呢?

  如果你發現這些會影響呼吸,每次發生時休息一下,做個深呼吸。

   參見http://www.huffingtonpost.com/linda-stone/just-breathe-building-th_b_85651.html

  你在處理電子郵件方面比自己想象的更有控制力,這取決於你檢視和回覆電子郵件的頻率。下面是一些嘗試:在一天中限定具體的、預定的時間來處理電子郵件——但可能不是每天的第一件事。設定一個時間,檢視並對電子郵件排序,並且設定它的時間。在設定時間後進入真正的工作。這可能是一個很難遵守的紀律,但我有一些訣竅可以幫助你。

  第一步,設定你的電子郵件通知。提示郵件的圖示是不可抵抗的,它吸引你去點選。反反覆覆的“你有封信”的提示音也是如此。如果可以的話,把它們全部關閉。最低限度,只對重要的資訊播放聲音,比如來自你的家人或老闆的郵件。

  第二步,加大檢查郵件的間隔。不要每分鐘都檢查郵件,或者就像實驗室老鼠一樣坐在那裡不斷點選收取郵件的按鈕,以獲取食物獎勵

  下一步,請注意設定期望的答覆速度和電子郵件的數量。請記住這個電子郵件的黃金規則:

  

  除此之外,請記住你掌控著節奏,你可以控制整個進度。

  

  你對電子郵件回覆的速度設定了交流的進度。這就是說,你答覆得越快,未來別人對你的答覆期望也越高。傳送的郵件越少,頻率越低,你就把瘋狂的速度下降至一個較為合理的水平。

  最後,最好的建議是對電子郵件眼不見心不煩。在不使用時退出電子郵件客戶端。

  情境友好的休息

  你一直在持續努力地工作,你覺得越來越困難,或煩惱,或只是需要休息一下。你有幾個選擇。

  你可以遠離電腦,在一張空白紙上隨手塗鴉。不過這是一種低層次的分心。你可以去散步,只要你沒有遇到任何人,不會再開始交流,然後就隨意地走走,保持對情境友好的狀態。

  或者你可以看看CNNDiggSlashdot等網站的首頁上有什麼新聞。這是一個明顯的分心。或者更糟的是,你可以檢查電子郵件。現在我可以保證你已經失去了工作的思路,如果今天你還有機會回到工作中的話,至少要花費二十到三十分鐘的恢復時間,期間也沒有生產效力。

  保持情境的一個辦法是提高進出情境的物理成本,有助於提醒你隱藏的精神成本。例如,如果你可以很輕易地開啟和關閉膝上型電腦,那麼你將不斷地進出情境。但是,如果離開你的環境然後再回來時感到痛苦,也許你會少受誘惑。

  我的辦公室就設定成這樣,有很多燈的開關,我到處走,並開啟這些開關。我在工作時會花幾分鐘挑選一些有趣的音樂聽。投入了體力,設定好一切,並讓自己適應後,我不太可能為一些突發奇想跳起來,把一切關閉,離開,再回來,重複做這一切。一旦我設定好,我會持續工作一段時間。

  膝上型電腦以同樣的方式工作,如果我只是使用電池開啟它幾分鐘,我可能不會長期呆在那裡。如果我用上電源線、膝上型電腦冷卻墊,等等,我已經作出了更多的投入。當然這不是很多,但它確實有助於提醒我進入和退出情境的成本。

  啟用可遮蔽中斷

  在CPU的概念中,中斷有兩種:可遮蔽的和不可遮蔽的。可遮蔽的中斷可以被忽略。這種分類正是我們要模仿的。

  

  手機配有語音信箱和免打擾(DND)的按鈕也是這個原因。自從1935年起,人們就可以讓電話轉給語音信箱(或答錄機),這當然是出於善意。

  即時訊息遵循同樣的道理——如果繁忙就不做回答。當你準備好時再給他們回電話,這樣你就不會失去你辛辛苦苦搭建好的所有情境。

  除錯程式碼的時候,在你的辦公隔間上貼上標籤,或者關上門(如果有的話)。

  儲存情境堆疊

  如果你認為將要被打擾時,可以做的最好事情就是為被打斷做準備。科學領域對任務中斷和恢復的研究中有許多有趣的地方。這裡存在兩個有趣的時間段:中斷間隔和恢復間隔。

  一旦你開始做一項任務,你就會持續下去直到被打斷。這是提醒你需要馬上開始另一個任務。在提醒和下個任務開始之間的時間就是打斷間隔。現在你開始做新任務,一段時間之後切換到最初的任務上。你恢復之前速度所花費的時間就是恢復間隔。

  當提醒首次出現時,你知道自己被打斷了。在打斷起效之前,在你接電話或者回應門外的人之前,你有寶貴的幾秒鐘時間。在這段時間裡,你需要為自己留下一些“麵包屑”。也就是說,你要留下線索,以便在你返回這項任務時能夠繼續前進。

  例如,假設我在寫一封電子郵件或者文章,正表達某些想法時,被打斷了。我很快寫下幾個單詞——不是完整的句子——只是提醒我自己當前的想法。這似乎很有用,關於這種線索準備的主題已經有很多研究成果了

  此外,如果你認為可能在任何時刻被打斷,那麼你可以開始養成一種經常為自己留下小線索的習慣。

  保持足夠大的情境

  在情境中保持的資訊越多越好。就我個人而言,我會在辦公桌上下堆滿了東西。我稱之為情境,清潔人員稱之為“垃圾”。

  但是“眼不見”通常意味著“發狂”。我希望我工作相關的東西觸手可得——在我的思維工作集裡,在桌子上,我的東西一目瞭然。

  事實上,保持情境中任務相關的東西很有益處。不論你如何衡量生產力,僅僅多使用一臺顯示器就可以讓你的生產力提升20%~30%

  這是為什麼?

  適合你的不是桌面隱喻,而是Frederick Brooks在幾年前描述的擁擠的飛機座位隱喻。在一個大桌面上,你可以展開你的工作,看到你在做什麼——同時看到所有的。在擁擠的飛機座位上,你沒有足夠的空間同時看兩份以上的文件(或者文件的一部分)。你必須來回地切換文件。

  我敢打賭,讓你去Staples或者Office Depot等辦公用品店尋找一張17英寸的辦公桌,你找不到,因為這個尺寸實在是太小了。然而,大多數顯示器都是1721英寸。這點空間就是我們辦公的地方。你不得不在活動視窗和應用程式之間切換,因為你無法在如此小的空間裡保持足夠的情境。

  你知道Alt-Tab組合鍵(Mac上的Command-Tab)稱為什麼嗎?情境切換。正如我們看到的,情景切換扼殺生產力。即使是類似使用Alt-Tab切換不同視窗的小動作也會花費時間、短期記憶力和精力。

  任務與主題

  想一想你寫的應用程式。你是按照任務還是按照主題來組織使用者介面和組織結構的?如果你按照任務重新組織使用者介面會怎麼樣?你的使用者會非常高興嗎?

  有很多工我可以在筆記本上完成,但是還有一些任務需要使用兩臺23英寸的顯示器。兩臺顯示器必須是同樣型號和品牌的,你不希望因為重新定位到較小的顯示器或者適應不同的色差而分心。

  

  保持任務注意力

  人們在有了更多顯示器之後,很容易就會開啟無數的應用程式,最終又一次迷失在混亂中。

  在最先進的作業系統上你可以使用虛擬桌面切換器,允許你擁有很多不同的螢幕,你可以使用特殊鍵隨意切換。每一個螢幕都是獨立的,稱為工作空間。祕訣在於你如何在工作空間中分配應用。

  起初,我通過應用程式組織工作空間:所有的瀏覽器視窗在一個空間中,所有終端視窗在另一空間中,等等。當我意識到這種分配方式造成了比以往更多的切換時,我於是根據任務重新組織。

  下面這個例子介紹的是我通常如何安排工作空間的(見圖8-6)。

8-6 MAC OS X工作空間(略)

  通訊 我將這個工作空間用於所有的通訊、日程規劃或者計劃相關的任務,包括下面這些視窗。因為已經包含了最具破壞性的程式,我努力不把這些放到其他空間裡。

       電子郵件

       待辦事項清單

       聊天

       日曆

       專案狀態表——當前的人員狀態、訂單生產日程,等等。

  寫作 當我寫作時,我不想被電子郵件等打擾,所以我在這個空間只放置寫作工具。

       編輯器

       詞典

       圖編輯器

       Acrobat Reader(用於校對)

  程式設計 想法和寫作一樣,只是工具不同。該空間通常有很多終端視窗,只是長寬比不同:

       正常比例的

       高度正常,寬度大的

       寬度正常,高度大的

  保持這些視窗開著會節省時間,當你需要時,隨手可得。本工作空間的內容因你使用的程式語言和環境而不同,但是你起碼得有程式碼編輯器或者整合開發環境,也許還有單元測試影像化介面、針對不同應用或者相關文件的不同瀏覽器視窗、終端視窗顯示日誌、make或者ant過程,等等。

  上網 我有一個工作空間用於上網(或稱之為“研究”),包括所有輔助程式。

       瀏覽器視窗

       AcrobatQuickTimeRealPlayer等。

  音樂 當然,我們的生活不全是工作。在你寫程式碼、回信的時候需要一些音樂。

  音樂控制應該是透明的,當電話鈴響起或者有人進來時,你需要立即調節音量,按下播放/暫停,等等。一些鍵盤現在具有內建的音樂控制,或者你可以設定熱鍵。

  有時我使用外部控制裝置(專門的按鈕替代了Ctrl-Alt-Shift-Meta-F13,簡直是太方便了)來暫停。你也可以使用MacBook遙控器。

  這裡也是存放我所有音樂愛好程式的地方。這樣的話,它們不會直接出現在我的面前引誘我不工作,但是我一旦有空閒時間就會享受音樂。如果你喜歡遊戲,那麼這裡就是你存放遊戲的地方。

  

  如何保持注意力

  在本章中,我們圍繞如何集中注意力研究了很多問題。我鼓勵你把冥想作為保持思維敏銳和清晰的工具,我們討論了外部資訊處理系統的優點,警示了分心的危害。

  那麼,如何才能保持注意力集中?最重要的是自我意識——記住你需要集中注意力做什麼。我們大腦的預設設定不利於程式設計和知識型工作。

  如果沒有別的了,記住下面三件事情。

  1. 學會安撫喋喋不休的L型思維。

  2. 主動在前進中思考和增強思想,即使是不成熟的。

  3. 明確情境切換的昂貴代價,儘可能地避免。

  如果你開始嘗試解決這些領域的問題,就會逐漸善於管理自己的活動中心,並控制自己的注意力。

  實踐單元

       想一想日常讓你分心的事情。有沒有辦法組織一下,從而無需額外的分心就可以搞定它們?

       想清楚你何時編碼最有效率,在那段時間要減少分心的事情。

       跟蹤“拖延”與“思考”時間,不要混淆。

       你有多容易被拉走或者主動拉走自己——從工作中?為了更易於集中注意力,你能使自己難以被拉走嗎?

       觀察團隊裡的專家,看看他們是如何避免分心的。

摘自圖靈教育出版的《程式設計師的思維修煉》

  

相關文章