1. 程式人生 > 其它 >番茄工作法——原理剖析與實踐

番茄工作法——原理剖析與實踐

是否還在為專注工作時被打斷而苦惱?
是否因為久坐而導致頸肩與腰椎的疼痛?
是否每天喝水都不足1L?

那不妨試一試:番茄工作法。
即每工作25分鐘休息5分鐘。工作的25分鐘稱為一個番茄。

流程

step1 早上或前一天晚上,準備今日清單(今天要做的事情)

step2 準備開始一個番茄。倒計時25分鐘。

  • 關閉通訊軟體。
  • 戴上降噪耳機

step3 25分鐘執行的過程。

  • 如果腦海中有冒出其他的想法,不要切換現在做的事情,把想法先記下來。

step4 25分鐘的番茄結束,休息5分鐘

  • 開啟通訊軟體、回覆留言訊息。
  • 喝水、接水。
  • 到樓梯附近走幾步。

step5 準備下個番茄。再從第2步開始迴圈執行。

雖然步驟很簡單,但涉及很多重要細節,下面從原理方面來逐一介紹。

一 計劃。待辦清單與今日清單

任務:即指工作、生活、學習中需要做的事情。
其實對於任務管理系統,有專業的GTD理論。本文暫不討論這些。對於番茄工作法,所有的任務只分為兩類:

  • 待辦清單
  • 今日清單

待辦清單指的是近期的規劃,可能是明天,或者是下個月的任務。比如一個專案的排期一週,可以將其拆分成很多個以半天、或幾個小時為顆粒度的待辦任務。

今日清單,每天上班之前,從待辦清單中挑選出一些,轉移到今日清單。這是承諾今天要完成的任務。

今日清單與待辦清單的區別

今日清單是自己的承諾,當天完成、能更好得給予自己反饋,讓自己有成就感。
為何有人喜歡遊戲帶來的成就感?因為遊戲20多分鐘就能帶來反饋:獎勵(勝利,翻盤,隊友的點贊等)。而一個幾周、甚至幾個月的計劃,可能沒有非常強的成就感。所以將其拆解成周、日計劃,即衝刺目標。甚至是25分鐘的番茄工作週期,這樣能帶來更快的反饋。

今日清單排序的原則

時間管理的二維因素

當今天計劃已確定時,如果突然插入一小時的任務,就要替換掉原計劃的一小時的任務。即,一小時換一小時,那這種思維方式就是一維的時間管理方式。

但是自從小時我們就會發現,同樣是一堂課,一個班上的同學,學習的效果有非常大的差別。
工作中可能更明顯了,其實每天的工作量 = 時間 * 效率。所以不像一維那樣,只考慮時間,還要加上效率這個維度。

那如何分配任務,才能有更高的效率呢?

先做困難的、需要高度專注的任務。

對於簡單、熟悉的開發需求,其實在什麼時間都能做。而且一下午,持續寫3個小時不成問題。但是如果是看陌生的原始碼,你會發現,根本看不了3個小時就會難受,特別是在晚上,看進來效率是更低。
這是因為人的精力是有限的,通常來說早上精力充沛,而到了晚上,因為一天的忙碌,勢必精力缺失,再看有挑戰、需要專注力的,看陌生的原始碼,必定會比較累。
當然,並不是說晚上精力就是最弱,如果下午進行適當的休息或運動,晚上也能有很好的精力。
如果早上就先看郵件、做一些簡單的工作,把困難的放在晚上,勢必浪費了早上精力充沛這一段時間。

批處理整合任務,避免上下文切換帶來的消耗

在計算機領域,上下文切換指在兩件事情之間切換,會造成額外的切換成本。
批處理指的是對某物件進行批量的處理。在工作的領域,可以認為是一種聚類工作的集合,即將一類的任務整合在一起,尤其是瑣碎的事情。比如將某些2-5分鐘即可完成的事情,整合在一個番茄鍾內處理。

二 為何每次工作25分鐘?

專注力的極限與精力恢復

普通人專注力只有15分鐘,練習過一段時間可以達到25分鐘,但是很難超越45分鐘。世界頂級的運動員經過特殊的訓練也最多隻能達到90分鐘。有時候會發現世界級比賽,某些頂級的選手失誤了,出現了一個業餘觀眾都感覺可笑的失誤,其實這就是因為沒有得到很好的休息,專注力已經超出極限了。
所以為了能夠及時的恢復精力,對大部分人來說25分鐘比較合適,當然也可以根據自己的情況做上下調整。

三 執行番茄鐘的過程,被打斷了怎麼辦?

打斷有3種:心中雜念造成的內部打斷,通訊軟體的聲音與振動,他人來找我。

1 內部中斷,雜念

工作時腦海可能會突然冒出一個想法:xx事還沒有做,現在要做嗎?張三會不會給我發了一條訊息、趕緊看看吧。書包裡有塊巧克力,要不現在吃掉它?
這些都是來自人體內部的本能,放棄現在的任務轉而做其他事,很有可能是準備拖延。
如果你強制繼續工作,腦海中的想法可能會一直浮現。其實解決方法很簡單,寫下來,加入到待辦清單中,如果確實是今天必須得做的東西,那就加入到今日清單中,稍後休息的時候再來決定是否下一個番茄鍾就要執行。

2 通訊軟體

想要達到極致的專注狀態,很多書的作者都建議工作時切斷網路、不使用電子裝置。但是咱不能用紙寫程式碼啊,所以,我的做法是把IM類軟體關閉。有人可能會擔心如果PM問我問題,我25分鐘之後再回復他,PM會不會很傷心。
這個完全不用擔心,如果是普通的問題,25分鐘後再回復,並不晚,你想想如果你發出的訊息25分鐘之內一定收到回覆,你應該很高興才對吧;如果是緊急的問題,PM直接就打電話了,甚至直接當面來找你了,不可能很著急、還一直等你回覆訊息。

3 外部中斷,有人來找我

如果直接有人來找你,要緊急的開會,那隻能先去開會了。
那開會結束之後,是否要繼續剛才暫停的番茄鍾呢?

原子性

番茄鍾具有原子性,不可分割,25分鐘是這套流程中最小的貨幣單位。如果任務被暫停了,無論是短期、還是長期的暫停,當前的番茄鍾都必須作廢。

因為如果暫停,休息一會再繼續,就失去了達到一個穩定節奏的目的,不能太容易屈服於中斷的誘惑。因為轉做其他更緊急的事情而作廢番茄鍾並不意味著工作的失敗,只能說明自己的流程不夠完善。每天“完成的番茄鍾數”不是拿來衡量工作能力的標準,年底的時候你不會拿著這個去找老闆談加薪吧?記錄完整的番茄鍾個數,只是為了總結時對比,改進自己的流程。記錄跟蹤資料,是為了進行自我改進和流程改進。

數量與質量

番茄鐘的數量,其實是質量與數量哪個更重要的問題。
再看一個類似的跑步的例子。跑步時有一種MAF跑法,即跑步時最大心率要低於180-年齡。假如25歲則配速不能超過155。在剛開始訓練的時候,會發現按自己正常5分的配速,心率可能達到170;如果嚴格按照MAF規則155的心率,配速可能只有7分。所以有人感覺速度太慢了,不好看,就超過了最大心率跑,確實截圖給別人看的時候,看著配速挺快,但是這樣練一年,速度依然不會有提升。反之如果按照規則練習,雖然配速會暫時降到7分,但是幾個月之後,就會發現有氧能力有了很大的提升。

再看一個寫程式碼的例子。如果每天都是寫printf,一個月寫了一萬行,確實可以很自豪得說:我一個月工作量是1萬行程式碼,但是就算是寫了10萬行,幾年之後,水平還是那樣。但如果是做一些更有意義的演算法優化,可能只寫了100行,對自己的成長就會有質的提升。

所以,質量與數量,要選擇能對自己長期成長更有利的,而不是拿出來看的。

四 休息5分鐘的意義

如果工作了25分鐘,我還是不累,那有必要休息嗎?
及時的休息,有利於恢復更高的效率。如果感覺靈感迸發,實在不想休息,那也最好站起來站1分鐘。
如果口渴,再喝水,說明體內已嚴重缺水,因此喝水不能等到渴了再喝。
如果感覺累了,說明精力已經嚴重不足,不如早點休息儘快恢復精力。

但是注意這5分鐘的休息,並不是傳統意義上的娛樂休息。

休息5分鐘,可以幹什麼

  • 冥想。
  • 若有插入任務,重整之後的計劃。
  • 喝水、接水,站起來走一走,緩解久坐的問題。

冥想是一種公認的高效休息的方式,其目的就是要專注當下的呼吸。

站起來,主要目的是緩解久坐的問題。可能有人感覺自己沒有很明顯的腰椎問題。但是一旦出現症狀再治就比較困難了,預防還是要平時多注意。

休息5分鐘,不能幹什麼

不要做視覺類的娛樂的事情,比如刷抖音,看朋友圈。這會極大得消耗精力,影響自己的節奏。

儘量不要打重要的電話、回覆重要的文字。因為其會影響下一個週期,如有必要,可以設定一個緊急插入的番茄週期來完成。

5分鐘休息,是從專注狀態切換到全域性狀態的時間,是一種狀態模式的切換。及時的切換,可以保持一個好的節奏。

五 節奏的重要性

狀態模式的切換

有一種狀態叫心流,這是一種非常神奇的感受,會讓你感受到工作的自豪感與幸福感。
工作的25分鐘,可能會進入心流狀態,專注力與創造力強。但是缺乏全域性觀,缺少統籌力。
5分鐘的休息時間,可以換上戰略眼光,觀察全域性。然後再回到心流中。這就是節奏。

為啥要戴上降噪耳機,一方面,確實可以讓環境更安靜,另外它是模式切換的開頭。戴上耳機,告訴自己,現在是專注工作的模式。

生物節律

人體器官的運轉,激素的分泌都是有節律的,正如每週、每月,每年一直在迴圈。工作的專注也是有周期的。保持好的週期節奏,可以及時得恢復最高的專注效果。

一個比較明顯的例子就是睡眠,如果某天熬夜打破了正常的睡眠週期,就很容易在白天時感覺精力不足。
有人對此不以為然,認為今天熬夜了,過幾天不是可以補回來嗎?
假如今年春節要求你加班,不讓你回家,因為明年還有春節呢,可以明年回家嘛,你的心情如何呢?
其實你不是一個人在戰鬥,大腦中有兩個“我”,一個是理性的,另外一個可以理解成潛意識。比如有些比賽之前,有些世界頂級運動員對自己說“放鬆,我一定可以穩定發揮的”,這就是在對潛意識的我對話。
所以打破節奏,也是在損害“潛意識的我”的利益。

六 軟體的選擇

工具使用的三重境界:器、術、道

比如學習程式設計,如果只會用一個函數語言程式設計的框架,那是“器”。如果瞭解框架的原始碼,可以做少量的定製化修改,這是“術”。如果明白函數語言程式設計的重表示式輕運算、無副作用、引用透明的特點,那麼我們就可以在自己的需求中,做更適合自己的框架,這就是“道”,這是一種思維方式,最高的境界。淺顯的學習只會使用,而深入的學習、明白底層的原理,擁有自己的思維方式,才能拓展性發散使用。

在軟體使用層面,基本都屬於“器”的層面,我們要做的就是明白“道”,或最起碼達到“術”的境界,知道我們的真正的需求是什麼,才可以選擇自己的軟體,不能過多糾結與軟體的選擇上。所以沒有好與壞的軟體,只有是否適合自己的軟體。

推薦軟體

在我使用眾多種番茄鍾軟體當中,如果只推薦一款,我認為session是最優秀的,高度還原了番茄鐘的各種原理與細節。session,免費版可以滿足基本的功能。收費的訂閱制高階版本,有更多的自動化能力。