最近和一些朋友談到幼兒或兒童的專注力問題,顯然身邊的朋友們有許多都留意到幼兒可能會有的專注力問題。例如,有朋友提到,他的小孩即使是拿著平板電腦看著一個幾分鐘的短片,也都很難持續把它看完。他的小孩會在看到一半的時候,就試著想要切到別的影片去,而他認為這是專注力的問題。

我不是兒童教育的專家,但似乎也觀察到,身邊有些小朋友,他們都有一些難以專注在某樣事物的問題,例如,好好把一本書讀完,或是好好聽你講完一段故事。因此,有人將這樣的問題,歸因於兒童收看電視節目的時間過長,以及現在3C產品的高度普及化。

我們很容易在生活中看到小朋友拿著手機或是平板電腦滑來滑去的。有人的論點是因為這類媒體在視覺上的變換效果快速,而像手機或平板的軟體設計,更是易於切換各種主題及內容,這使得兒童會傾向於變換主題,進而造成兒童無法專注的情況。值得慶幸的,我自己的小孩,不僅不給他們看電視、也不使用3C產品,而以紙本的靜態閱讀為主,目前看起來在專注力的表現還不錯。

好了,本專欄畢竟不是幼兒教育專欄,該就此打住了,不過幼兒的專注力的確是本回的開場白,只不過這次想談的當然不是幼兒的專注力,而是程式設計者的專注力。

專心是提升生產力的關鍵
程式設計者的專注力,肯定對程式設計工作非常重要,最近大家愈來愈重視、也愈來愈常談所謂的「神馳(flow)」狀態。

很多人會認識到這個名詞,是因為在著名的《Peopleware》一書中提到,當人們專心埋首於工作時,會進到一個心理學家稱為「神馳(flow)」的狀態,這種狀態和進入冥想的狀態很接近,人們會產生一種沉醉於其中的感覺,而且在這種狀態下,時間好似在不知不覺中就流失。

也就是說,一旦你在神馳狀態時,你的工作產能將能夠有效發揮,相反的,如果你不在神馳狀態,不是無法專注於工作之上,就是得先花上一段時間「暖身」,讓自己進到神馳狀態之後,才能夠進到有效的生產狀態。當「神馳」這個名詞被愈來愈多軟體開發圈子的人重視之後,大家對於如何協助程式設計者進到神馳狀態,以及如何協助程式設計者盡可能維持在這個狀態,可以說是愈來愈關心。

所以,我們基於神馳的想法,思考如何打造一個適合程式設計者的工作環境和條件,像是如何避免他在工作中受到打擾,因而中斷了他好不容易才進入的神馳狀態。

在軟體開發的圈子裡,大家愈來愈明白程式設計者的有效生產能力,常常不是取決於他上班坐在辦公室的時間長短,而是取決於他能夠持續待在神馳狀態的時間長短。想要提升程式設計者的產能,最有效的方式不是盡可能地把他綁在辦公室的座位上,而是讓他盡可能地在這個座位上時,可以是在神馳狀態下。

因此,大家會開始做一些設計,像是避免突然其來的電話迫使程式設計者接聽,這會十分強迫性地中斷了可能正在神馳狀態中的程式設計者,或是像程式設計者正在埋首於設計工作時,規範避免團隊中的其他成員因為討論之類的事宜,而中斷他的工作。有效在團隊中進行這些措施,可以得到更多的有效產能,而不是只試著想要從延長工作時數中來得到。一個持續受到干擾的環境,即使工作時數再怎麼長,能得到的有效工作時間還是很短。這反倒不如在合適的工作時數內,有效維持程式設計者進入神馳狀態的時間。

分心讓神馳狀態受到打斷

什麼情況會讓程式設計者脫離神馳狀態呢?分心。原本程式設計者正保持在專注的狀態,但卻因為一些事情「分心」了,那麼他就會離開神馳狀態了。就像一通電話,一段硬插進來、預期之外的討論,都會讓程式設計者「分心」,而不能繼續專注在原本正在專注的事物上。

不過,除了讓程式設計者「被動」的分心之外,因為程式設計者自己主動「分心」的情況而造成程式設計者不能持續維持在神馳狀態的情況也很常見,同樣也會影響到程式設計者的產能。

事實上,程式設計者自己讓自己處於容易分心狀態的情況,似乎十分普遍,就跟現在的小朋友因為科技產品發展趨勢的關係,專注力不足、容易分心的情況有點類似。老實說,我也覺得近年來自己設計程式時,容易分心的程度遠勝過以往,這或許也跟程式設計者所處的作業環境相關。

怎麼說呢?首先我們可以來看作業系統的變化,在我自己最早開始設計程式時,使用的是微軟的DOS系統,它是一個單工的作業系統,也就是說,當我在這個作業系統中工作時,我同時間只能使用一個軟體。使用這種單工的作業系統時,你沒有辦法同時使用多種軟體,也就是說,當你在設計程式時,你也只能設計程式。這使得你不容易分心,除非外在的干擾或中斷,否則你可以比較容易專注在你正在使用的軟體上,也就是程式設計的工作中所需要的軟體。

當程式設計者工作的作業系統進到多工作業系統的世代後,多工系統帶給程式設計者的好處,不僅僅只有提高電腦計算力的使用率,同時間也允許程式設計方便於多個不同的軟體工具間遊走。就像是他可以同時間編輯著程式碼,但是遇到需要查閱資料時,切換到瀏覽器中進行搜尋,待找到答案之後,再切回編輯器繼續完成編輯。

作業系統的多工特性,若是善用的話,對提升生產力是會有很大幫助的,但是,它同時間也開啟了程式設計者容易分心的大門。

我們試著回想自己每天是怎麼開始工作的……我們在打開整合開發環境的軟體之前,可能是先開啟瀏覽器,接著或許看一下電子郵件、打開 Facebook 或是 Plurk、回一下電子郵件、回一下 Line 的訊息,再看一下 Facebook 的動態或是回文。鄉民背景的開發者,搞不好還得連到PTT關心一下。之後可能回到我們的整合開發環境裡,但是沒多久,朋友的 Facebook 訊息視窗又跳了出來,原來是要約晚上一起吃飯的時間和地點,所以你花了一點心思討論一下,並且回了這則訊息。

你會在多種不同的軟體裡切換,當然也包括了工作中應該是最主要的整合開發環境,但是,因為在太多的軟體間切換,而且有太多軟體的使用,都是做著和開發無關的事情,這就等於持續分心。在這種情況下,或許你可以維持些微的神馳狀態,但是並沒有辦法保障你持續在這個狀態中「勇猛精進」,全心全力投入於開發工作之中。

這並不是外界對於你自己的中斷或干擾,而是你將自己放到一個容易被中斷或干擾的環境當中。這麼一來,工作的效率自然也就不佳。

很多人認為極限編程(eXtreme Programming )中的搭檔編程(Pair Programming),之所以可以在另外一條「每週工作四十小時」一起呼應,是因為當你在做搭檔編程時,不太容易因為使用一些和工作無關的軟體而被中斷,畢竟旁邊還有另外一個人看著、等著,所以你會比較專注在工作本身上。

而這種持續的專注,其實每天八小時的份量已經相當的足夠,也使得每週四十小時的工時,成了一個份量足夠的每週工時數。這其實也從另一個層面說明了對工作時數的迷思。任何致使程式設計者不分心的措施,都很有可能比增加工作時數對產能來說來得有效。

身為程式設計者,除了爭取不被外界干擾、中斷我們的神馳狀態之外,我們也必須意識到自身在工作中,常常讓自己陷於這種脫離神馳狀態的分心。若是想專心寫程式,應該先從關掉這些和工作無關的軟體或服務開始,幫助自己更專注在程式設計的工作上,如此一來對產能會有更多的幫助。

 

專欄作者

熱門新聞

Advertisement