1. 程式人生 > >跳出任務管理的泥沼,擁抱甘特圖的懷抱(完整版)

跳出任務管理的泥沼,擁抱甘特圖的懷抱(完整版)

寫這篇文章,我不是要黑任何一個任務管理類的App或者方法論。相反,我是一個工具控,在試用各種任務管理類App上總是不遺餘力。常見的Things 3,Todoist,Teambition,Trello,Any.do,Doit.im我都試用過。最後,我選擇了Todoist,在Todoist上,我已經完成了1292個任務。如下圖所示。

我的Todoist任務記錄

任務管理類App有什麼問題

Things3,Todoist為首的任務管理App,核心功能就是記錄未完成的任務,勾掉已完成的任務。至於分類,標籤,自然語言識別之類的功能算是錦上添花。

他們有一個缺點,那就是你只知道一個任務沒有做,或者已經做完了。但是你不知道在一群沒有完成的任務中,哪些是正在做的。(當然,你可以建立一個分類,叫做“正在做”,然後把正在做的任務放進這個分類中。)

而Teambition與Trello稍微進步一點,引入了看板的概念,於是能夠顯示任務在各個階段的狀態,如下圖所示。這張圖是少數派的Trello看板,用來讓作者選題。

在看板中,你可以知道哪些任務是計劃中,哪些任務是準備做,哪些是正在做,哪些是已經完成。然而這樣就夠了嗎?

看板比單純的To do list類應用進了一步,能夠關注任務的狀態了。但它們的侷限也在於次,因為他們關注的,只是每一個任務。

做一個比喻,修汽車需要擰螺絲,組裝宜家的傢俱也需要擰螺絲。你如果只關注擰螺絲這個動作,那麼修汽車和組裝傢俱對你來說沒有區別。組裝宜家的傢俱,看一下說明書,一般人半個小時就搞定,但是你半個小時能學會修汽車嗎?

如果只使用任務管理類的工具,你就會陷入一個怪圈:你做了很多工,但是你不知道你做這些任務是為了什麼。任務管理類App適合用來記錄和追蹤各種瑣碎的任務和相關性不強的任務。就像是少數派的每一篇文章,文章與文章之間不是一個系列的關係,他們各自獨立,誰都可以領選題寫文章,哪個選題先寫哪個選題後寫,關係不大。

一旦要規劃一個專案,對於規劃專案的人和做專案的人,用任務管理類App都會讓人覺得使不上勁。對於做任務的人,看到每一個獨立的任務,對專案沒有整體的概念;對於規劃專案的人,不知道任務是不是已經切分得足夠細,是否有遺漏。

假設你把一個專案拆分成了100個子任務,兩週以後,你做完了其中的八十個子任務,請問你真的完成了這個專案80%的工作嗎?專案的完成度能夠單純用子任務的數量來衡量嗎?

如果你回答,專案的完成度,不能單純用子任務的數量來衡量。那麼繼續思考下一個問題,是不是有一些子任務,就是比別的任務重要呢?

如果你回答,確實有一些子任務比別的任務都重要。那麼繼續思考下一個問題,是不是最重要的子任務必需優先完成呢?

如果你回答,確實最重要的子任務必需優先完成。那麼繼續思考下一個問題,最重要的子任務要優先多少呢?能單純把最重要的子任務作為第一個完成的任務嗎?它有前置任務嗎?如果必需先把前置任務做完,才能做這個最重要的子任務,那麼,是不是其實這個前置任務才是最重要的子任務呢?如此說來,能夠單純用時間先後順序來標明任務的重要性嗎?先做的總是比後做的重要嗎?那如果這個先做的任務,它做完以後完全看不到產出,必需等後面的任務做完了才能看到效果,那麼到底是先做的任務重要還是後做的任務重要?

上面還只是一個人做多個任務的情況,現在如果把一個專案拆分成100個任務,分給ABCDE5個人做同時做。每個人都有一些任務可以單獨完成不依賴其他人。但是也有一些任務A依賴B的成果,B依賴C的成果,D可以幫B做一些工作,還有一些工作需要C和D要一起同時完成,還有一些工作,B和C可以先做一部分,剩下的一部分再一起完成……

好了,現在給你一個任務管理類的App,上面列了100個任務,其中有20個任務優先順序最高,50個優先順序一般,30個優先順序低。你們五個人自己看著選任務做吧。兩週以後專案上線。

13天后:

B:C你的後臺介面怎麼還沒有寫好,我等著跟你聯合除錯都等了三天了! D:糟糕,有一個任務忘記做了,現在這個程式碼不能執行,等我把那邊的服務搭建好才能測試。 A:嘿嘿我完成了30個任務,獎金我拿定了。 C:D你早應該搭建服務的,你忘了我也要用嗎! ……

所以,單純用優先順序來排任務,你覺得靠譜嗎?你不加班,誰來加班?

尋找解決辦法

使用腦圖拆分任務

有專案經驗的人,看到我上面舉得例子,肯定會不屑一顧——難道在規劃專案的時候就拿一張白紙,拍著腦袋想,這個專案需要做哪些工作,想到一個寫一個?這樣憑腦袋空想肯定會漏掉任務的。

用腦圖來規劃任務是一個不錯的主意,首先把專案拆分成幾個主要的組成模組。然後首先看第一個模組,又把它拆分成幾個子模組。然後看第一個模組的第一個子模組,又拆分……第一個模組拆分好了,再來看第二個模組,把它又拆分成幾個子模組……通過這樣深度優先的方式把所有任務都拆分到可以完成的程度。如下圖所示。

使用腦圖拆分專案任務

腦圖解決了任務拆分的問題,使用腦圖來拆分任務,理論上確實不容易漏掉任務。那麼問題是,腦圖如何確定任務的依賴關係?如何確定每個任務的完成時間?專案進行了若干天以後,如何知道當前專案進度怎麼樣了?在某一天,如何讓所有人都一眼就知道,哪些任務沒有按時完成,哪些任務已經提前完成了?

使用時間軸確定進度

現在回到任務管理的App中。如果把所有待完成的任務全部都用一個Excel寫在第一列,然後在右側用不同的色塊標記任務從開始到結束的時間。那麼可以得到下面這一張圖。

使用Excel畫一個時間軸

其中,不同的顏色表示不同的人。每一行表示一個任務。從第二列開始,每一列表示一天。如果一個任務一天可以做完,就塗一個格子,如果需要三天才能做完,就塗三個格子。

這樣一來,通過這些色塊,就可以清楚地看到每個人需要做多少事情。例如B列,紫色這個人一天同時要做5個任務。但是這5個任務中有4個任務都是聯絡別的部門讓他們提供介面。那麼這四個任務應該可以很容易做完,於是可以放在一天完成。

又比如,紅色這個人,他做的任務很困難,所以兩個任務各要做三天。

又比如,綠色這個人,他先搭建ES系統。然後再搭建Kafka。任務的先後順序也就有了。

如果在某一天,想知道按計劃今天哪些人需要做哪些事,那麼直接看這一天對應的這一列就可以了。

壓縮,組合

用時間軸來表示任務的進度,可以更加直觀地讓人看到任務的進度。但前提是先把所有子任務確定好。也就是要先做一個腦圖,然後根據腦圖再做這個Excel。看任務的時候,要同時看兩張圖。

那有沒有辦法把這兩張圖合在一起呢?

實際上,腦圖本質上就是一個層次結構,層次結構也可以寫成大綱的形式,如下圖所示。

腦圖的大綱形式

這個結構就可以放到Excel中了。如下圖所示。

簡化版的甘特圖

到目前為止,你已經實現了一個簡化版的甘特圖了。

什麼是甘特圖

甘特圖是一張二維的圖表,它的橫軸是時間,縱軸是任務。從甘特圖上可以一目瞭然看到一個任務從什麼時候開始什麼時候結束,不同任務之間是否有時間重疊,以及哪些任務可以同時做哪些任務必需有先後順序。

我個人認為,在專案管理中,任務週期是非常重要的,任務的開始時間和結束時間一定要把控好。使用甘特圖就可以實現這樣一個目的。

對於規劃任務的人,在用甘特圖規劃任務的時候,如果你發現一個任務時間太長,無論怎麼調整都會和後面的任務有重疊,那麼你就會發現這個任務可能需要拆分為更小的任務。而且由於甘特圖立足於專案的整體,你也可以更容易發現是否有任務漏掉了。

對於做任務的人,甘特圖也可以幫他們瞭解到他們所做的任務在整個專案中處於一個什麼樣的位置,從而讓他們知道自己正在做的任務是不是非常重要必需按時完成。

如果你是要開發一個App,或者是要寫一本書,或者是要做一個其他什麼專案,只要它是由一系列不同的任務構成的,那麼你就可以考慮使用甘特圖來幫你提高效率。

下面這張圖就是甘特圖。

  • 不同的顏色表示不同的人
  • 每一行表示一個任務
  • 紅色豎線表示今天應該完成的任務
  • 任務與任務之間的黑色箭頭表示任務之間的依賴關係,必需完成前面的才能完成後面的
  • 帶中心黑線的任務表示已經完成的任務

通過這一張甘特圖,我能一眼看出以下資訊:

  1. 今天誰應該做什麼任務
  2. 這個任務從什麼時候開始,到什麼時候結束
  3. 一個人在一段時間有哪些任務
  4. 應該先做哪些任務再做哪些任務
  5. 哪些任務可以同時做
  6. 這個任務是否被其他任務依賴,如果是,那麼這個任務就不能推遲,必需按時完成或者提前完成,否則會影響後面的任務
  7. 每個任務已經完成多少還剩多少
  8. 大任務下面有哪些子任務
  9. 任務的里程碑是什麼時候

為什麼要用甘特圖

因為為了繪製出甘特圖,你必需強迫自己完成以下幾件事情:

  1. 確定每一個任務的開始時間和結束時間
  2. 確定任務的依賴關係
  3. 分離可以同時執行的任務
  4. 確定不同人的任務間的時間關係

當你根據以上的規則繪製好第一版甘特圖以後,你會發現有些地方是可以繼續調整的,但是這種調整,在你沒有畫圖之前是不能發現的。於是你會在調整甘特圖的過程中,讓專案的規劃越來越清晰。

怎麼做甘特圖

甘特圖是一種專案管理工具,你可以在紙上畫甘特圖,也可以在Excel中畫甘特圖,也可以使用專門的甘特圖軟體來做甘特圖。下面這張基於Excel的甘特圖來自網路。

這是使用Excel做出來的效果,但是做起來稍顯麻煩。

Omniplan和MS Project都是非常專業的甘特圖製作軟體,但是價格非常高。畢竟這是生產力軟體,使用這個軟體你是可以賺大錢的,自然軟體本身就會比較貴。

開源的甘特圖軟體也有不少,不過不是功能不全就是介面醜陋。這裡介紹一個相對比較完整的開源甘特圖製作軟體:GanttProject

GanttProject的官方網站為www.ganttproject.biz/,在這裡你可以下載到macOS,Windows或者Linux版本的軟體。

GanttProject執行以後的介面如下圖所示。

在左側任務面板右鍵或者按下鍵盤Command + T就可以新增任務,Windows和Linux對應的快捷鍵為Ctrl + T。如下圖所示。

建立好了一個任務,它預設的開始時間和結束時間都是今天。在任務上面右鍵,選擇任務屬性,可以開啟任務屬性設定介面,在這裡可以設定任務的開始時間和任務時長。但是你不能設定任務結束時間。因為任務結束時間會根據開始時間和任務時長自動計算。如下圖所示。

在這個介面,還可以設定任務的顏色,實現不同人不同顏色,或者不同專案不同顏色。也可以在這裡更新任務進度。

建立多個任務,如果後面的任務依賴前面的任務,那麼在右側被依賴的任務色條上單擊滑鼠左鍵,按住並拖動到依賴它的任務上。依賴它的任務的起始時間自動就會變為被依賴任務的結束時間,如下圖所示。此時,後一個任務只能設定任務的時長,不能修改任務的起始時間。

如果依賴關係設定錯誤,開啟依賴任務的任務屬性,定位到前置任務選項卡,在這裡可以刪除被依賴的任務或者修改被依賴任務。如下圖所示。

如果你需要移動任務的順序,滑鼠單擊選中它,按下鍵盤上的Alt + 方向鍵上或下即可移動任務。

我認為甘特圖有一個非常重要的元素,就是豎直紅線,它指向了今天的任務。要開啟這跟紅線,需要單擊選單欄的編輯-設定,定位到甘特圖設定,在將今天顯示為紅色點選為,如下圖所示。

單擊確定回到甘特圖的介面,可以看到圖中出現了一條紅色豎線。這條豎線指向了今天應該做的事情。如下圖所示。

每天開啟甘特圖,這根紅線都會指向當天。

GanttProject可以把做好的甘特圖匯出為圖片,CSV,HTML或者PDF檔案。單擊專案-匯出,點選Raster影象檔案,並單擊下一步,如下圖所示。

設定儲存路徑和甘特圖的日期範圍即可匯出為PNG檔案,以方便分享。

後記

我非常喜歡使用甘特圖來規劃我的工作。我的第一本書 《Python爬蟲開發 從入門到實戰》已經在京東噹噹亞馬遜在亞馬遜上線。這本書的寫作過程就是我用甘特圖的最好實踐。因為有了甘特圖,我才能控制好寫作過程中的每一個重要的時間節點,確保每一章都能夠按時交付,讓我能夠兼顧工作,寫書和自我成長。

甘特圖並不是為了取代任務管理工具而存在的。甘特圖的目的是為了規劃專案,並且讓你在專案的進行過程中知道自己處於什麼位置。

你需要時刻記得,低頭看任務管理工具,讓你知道自己正在做什麼。擡頭看甘特圖,讓你知道你將能夠做成什麼。

我建立了一個微信群,用來交流各種效率工具和提高生產力的方法。有興趣的同學可以進來和大家一起探討。掃碼關注公眾號 未聞Code(或搜尋ID:itskingname)回覆:生產力即可獲得入群方式。