當你專心一志的的,
做著手上的事,
卻突然被人直接打斷,
你會怎么做?
最討厭自己在做事的時候,被人打斷的那種感覺,南寧網站建設你知道那意味著什么嗎?
繼續(xù)工作,會待著被打斷的不滿情緒,然后工作效率降低,原本很好解決的一項工作,被做成了垃圾。然后被上司責怪,自己一個人承擔了所有責任。你能去怪誰?怪那個打斷你工作的人?
也許有人會說,這是你個人心態(tài)的不成熟,與別人無關,不要把被打斷當做你是失敗的原因。好吧,也許會有人說,這是你弱你有理,反正被打斷做不好事,不怪別人。OK,那不怪,以后你做事我也來打斷你,然后后面也來嘲諷你,OK?
就像小編我,現在在寫這篇文的時候,身邊一直有人在BB,而且還在感冒生病中,但卻還是有人一直打斷我的思路。也許有人試過什么番茄工作法,去安靜的咖啡店工作,在深夜里忙碌(小編就是,很多時候熬夜工作)。但是打岔的事,總是用不了多久就會攻破防護罩。南寧網站建設公司
和很多人一樣,我也是一個工作容易被打斷的人。實際上,我們對于打斷這件事以及恢復注意力方法的理解,和順勢療法以及放血水蛭相差不遠。但我們能怎樣?
打斷的代價
研究過辦公環(huán)境下打斷成本的調查員推測,被打斷的工作相比沒有干擾的工作要花費兩倍的時間完成,并且出錯量也是兩倍。他們還發(fā)現,人們不得不在碎片化的狀態(tài)下工作,因為57% 的工作都會受到干擾。
對于程序員來說,干擾的影響和現狀更不明顯;通常被打斷后重回工作狀態(tài)至少要15分鐘。采訪程序員得出的數字大致相同。然而很多軟件開發(fā)業(yè)界的知名人士已經在權衡:Y Combinator 創(chuàng)始人 Paul Graham 強調了員工日程和管理者日程的不同,37signals 創(chuàng)始人 Jason Fried 說,辦公室就是要被打擾的地方。
研究程序員的干擾
基于86位程序員使用 Eclipse 和 Visual Studio 記錄的 10,000 個程序會話,并且調查了 414 名程序員后我們發(fā)現:
工作被打斷的程序員恢復工作后要 10-15 分鐘才會開始敲代碼。 程序員在編寫一個方法時被打斷,不到一分鐘就會恢復工作狀態(tài),所用時間僅為上述時間的十分之一。 程序員一天大概只有兩個小時的連續(xù)時間不受干擾。
我們也了解了一些程序員應對干擾的方法:
多數情況下,程序員會在重新編碼前導航到幾個不同位置以重新建立上下文。 有意插入編譯錯誤作為“路障”提示。 source diff 被視為是恢復工作狀態(tài)的最后一個方法,因為 review 起來很麻煩。
打斷程序員最糟糕的時間
調查顯示打擾一個人最糟糕的時間是他們記憶負載最重的時候。對記憶負載使用神經關聯(lián)(比如測量瞳孔直徑),研究表明在負載高峰期被打斷,分散最嚴重。
在我們的實驗中,為了給編程任務期間的記憶負載定級,我們研究了默讀方式。人們執(zhí)行復雜任務時,可以監(jiān)測到默讀方式(舌頭、嘴唇或聲帶的電信號)。這個現象引起了研究者的興趣,有些甚至將默讀信號比作思想管道。近日,研究者已經可以將這些信號解碼為文字了。
如果一個被打斷的人可以暫停工作狀態(tài)或是恰好處于“good breakpoint”,那么被打斷的影響就會減小。但是程序員從高記憶狀態(tài)轉換到低記憶狀態(tài)至少需要 7 分鐘。一個實驗評價出了程序員最不想被打擾的狀態(tài),并發(fā)現以下狀態(tài)最成問題:
編碼中,特別是多處的并行編碼; 導航和搜索時; 理解代碼的數據流和控制流時; IDE窗口離焦時。
創(chuàng)造記憶友好的環(huán)境
我們基本上是無法消除干擾的。(某些情況下,干擾也是有益的;被打斷的任務中有 40% 沒有繼續(xù)下去,這可能是因為我們意識到這些任務并沒有那么重要,或是干擾讓我們有機會重新審視問題。)但是我們可以降低因打斷而造成的記憶中斷的影響。下一節(jié)會介紹幾種編程時被中斷或高負荷的記憶類型,并討論支持它們的輔助工具概念。
前瞻記憶
前瞻記憶會在某些特定環(huán)境下提示下一步的動作——例如,提醒你在下班路上買牛奶。
各種各樣的研究已經闡述了程序員是如何嘗試應對前瞻記憶中斷的。例如,他們經常在代碼中保留 TODO 注釋。這種方法的缺點是沒什么動力去看這些提示。為了強制性促進前瞻性,程序員可能會故意留下編譯錯誤來確保記得繼續(xù)某項工作。但是,引入編譯錯誤又會產生新的問題,因為無法在同一代碼庫上切換到另一個任務。最終,程序員和其他上班族一樣,選擇用便利貼或是郵件提醒自己。
“智能提示”可以在特定情況下觸發(fā),比如當同事 check in 代碼時,或是接近提示時,它基本可以看做是代碼界的便利貼。
專注記憶
專注記憶可以有意識的保持注意力。程序員跨代碼庫做相似修改時可能會產生專注記憶——比如,如果需要為了移動組件位置重構代碼,或是為了使用新版本的 API 更新代碼,這時程序員需要小心系統(tǒng)地編輯所有需要更改的地方。即使是一個小的改動也可能會造成許多問題,所以這需要程序員監(jiān)測代碼中許多位置的狀態(tài)。更糟糕的是被打斷后,專注記憶中的監(jiān)測狀態(tài)很快消失不見,之前查看和修改過的許多地方都需要重來。
接觸點可以讓程序員監(jiān)測多個位置的代碼狀態(tài)。研究發(fā)現使用工具重構有缺陷,其中之一就是缺少跟蹤多處代碼的能力。因此,程序員拋棄了重構工具而依靠重構時引入的編譯錯誤??墒鞘褂镁幾g錯誤來跟蹤變化不是常規(guī)方法,并且依然會產生錯誤。接觸點從程序員使用編譯錯誤的方式獲得啟發(fā)。通過提取所有最近訪問、編輯、查找過的代碼,接觸點可以自動恢復。
聯(lián)想記憶
聯(lián)想記憶維持了一系列同時產生刺激的表象間的潛意識關聯(lián)。
程序員導航到不熟悉的代碼時常會感到迷惑。當必須回想所看代碼的位置信息或是接下來要看什么時,聯(lián)想記憶會中斷,這就是造成迷惑的原因。研究者相信界面元素中缺少豐富、穩(wěn)定的環(huán)境提示,比如文檔標簽,會阻礙開發(fā)者回憶聯(lián)想記憶。
刺激中多種形式的存在可以增強塑造聯(lián)想記憶的能力。從這個意義上講,形式指一種由大腦的特定區(qū)域處理的特定知覺,比如聽覺或視覺通路。不同形式和相應的刺激包括:視覺(錯誤條、高亮代碼)、詞匯(文件名)、空間(滾動條或標簽的位置)、操作(文件的編輯/搜索/調試步驟)和結構(層級文件的邏輯位置)。
當同一刺激中存在多種形式時,更多的通路被激活,因此增加了形成聯(lián)想記憶的機會。相反,僅有一種形式的單一刺激不易形成聯(lián)想記憶。
聯(lián)想關聯(lián)通過程序元素中多種形式信息幫助程序員;觀察程序員可以發(fā)現,他們導航時經常依賴環(huán)境提示間的聯(lián)系,比如 tab 和 scrollbar,來保持上下文。但是,這些提示還不夠:導航行為經常會擾亂提示的狀態(tài),界面元素不足,比如tab通常只包含文件名,急需關聯(lián)性。導航文檔標簽的默認配置尤其簡樸,通常只顯示文檔的名稱,經過優(yōu)化,可以增強關聯(lián)記憶的回想。
兩個應用了不同形式提示的標簽:如error lines(視覺)和edit icons(操作)
情景記憶
情景記憶是對過去事件的回憶。軟件開發(fā)者不斷地學習新的技巧。保持和使用這類學到的知識需要程序員能夠從情景記憶中回想起那些學習經歷。
程序員回憶情景記憶時,回想其必要細節(jié)或關鍵事件的能力受到限制,所以一般不會成功。例如,可能會忘記編程任務做出的修改,或記不住為實現部分任務而借鑒的博客等之類的細節(jié)。
敘事編碼是一款情景記憶的輔助工具,可以幫助程序員回憶上下文細節(jié)和編碼歷史。它支持不同類型的敘事;比如,高度還原事件的 review 模式和給別人發(fā)布編碼任務的 share 模式。
編碼時間軸可以幫助你和你的同事記得各自是如何工作以及使用的資源。
概念記憶
概念記憶是感知和抽象的一種連續(xù)。大腦是如何記得錘子之類的物體和“工具”等概念的?它首先會學習所遇刺激的基本特點,比如錘子的木質紋理和金屬弧,之后將這些特點組織成為更高級的抽象。
程序員在職業(yè)生涯中應該保持專業(yè)技能。但是成為專家的路并不好走:對初學者來說,這可能需要 10 年。此外,對于那些嘗試成為新領域專家的專家來說,就像桌面開發(fā)者轉為web開發(fā)者,很多概念需要先放在一邊,而去學習新的知識。
研究專家和菜鳥間的不同發(fā)現,表現不同是因為大腦活動的不同。與菜鳥相比,專家不僅需要更少的大腦活動,而且使用的大腦部位也不同:專家使用概念記憶而菜鳥使用專注記憶。也就是說專家能夠利用概念記憶中的抽象,而菜鳥只知道專注記憶中的原始表現。