專案資源管理-日曆圖

okbeng03發表於2018-07-04

作為一名前端開發經理,公司有多條業務線,協調資源支援各業務線日常需求成了我的日常。這篇文章主要記錄這個過程的思考和如何生成一個直觀的日曆圖。

現狀

  • 多個業務線需求,技術方案選型需要統一落地,所以最好能統一收集需求,合理安排;
  • 跨部門(跨省)合作,目前專案流程並不規範,開發人員需求評估存在一定問題,存在延期情況;
  • 通過開發同學工作日誌瞭解工作情況,無法直觀地持續跟蹤;
  • 部分產品線臨時需求較多,開發同學的計劃經常改變,加大跟蹤難度;
  • 靠文字輸出進度、計劃、問題給專案經理,不直觀;

目標

所以,我希望通過專案管理工具來進行專案排期資源協調,並輸出直觀的報告給上級、產品經理、開發經理,將前端工作安排、資源情況透明化,從而逐漸完善專案流程和合作方式

奈何目前好的、完善的專案管理協同工具都需要收費,所以只能重新細化下需求,考慮在現有了解的資源基礎上去儘可能達到目標:

  • 方便的專案管理,可持續跟蹤進展
  • 支援里程碑,關鍵時間點,在關鍵時間點覆盤,逐漸優化工作方式
  • 將資訊直觀地同步給相關方,增加互相間的瞭解
    • 需求排期情況、節奏點
    • 資源投入情況
  • 通過持續跟蹤,覆盤,逐漸減少臨時變更,提前計劃
  • 資源飽和下,提供給各產品線需求PK,將重點放在優先順序更高的任務上
  • 輸出到工作報告中

所以核心還是專案管理報告輸出,綜合考慮

  • 專案管理:最終還是決定使用OmniPlan,將專案需求按業務線分組管理起來,但是隨著任務的增加,甘特圖資訊內容太多,不夠直觀,另外也不容易透明共享。
  • 報告輸出:更傾向於使用日曆圖,像日曆日程那樣,可以方便檢視最近的任務、詳情。

所以將重點放在,在OminiPlan專案管理基礎上,如何進行合理的管理,將輸出的甘特圖資訊轉換成日曆圖,並形成了最後的解決方案。

最終效果

專案資源管理-日曆圖

  • 預設顯示當月的專案安排
  • 將任務按顏色區分,關聯里程碑
  • 任務展示:業務線、開發人員、需求名稱,底下顯示完成進度條
  • 點選任務右側展示詳情,如果名稱填寫需求文件ID,可連結到需求文件
  • 可以篩選業務線、開發人員,減少無關項

OmniPlan

為了最終的日曆圖展示,首先要確保甘特圖資料符合一定的要求,所以先看下輸出的CSV:

專案資源管理-日曆圖

紅框中是我們需要的資訊,接下來會介紹OmniPlan使用中的一些點,保證最終輸出的資料要求:

  • 任務編號:任務編號按層級編號,以達到類似樹形結構的效果
  • 任務分組
    • 根任務按業務線或者大專案分組劃分,以此來展示業務線資訊
    • 關聯專案可以自由建立分組,最終任務按照樹葉子節點來統計
  • 里程碑:任務劃分幾個階段開發聯調測試釋出,其中後三項為里程碑,必須按此命名,並跟任務建立關聯關係
  • 使用關聯線來連線任務:里程碑是通過任務關聯和任務聯絡上的
  • 資源安排:任務安排了資源才算計劃內的任務,可以檢視人員情況,檢查未分配的任務
  • 任務拆分:一個長時間的需求,可能會因為緊急或優先順序更高的需求,需要進行拆分,但他們同屬於一個任務,只要展示一個資訊即可;這時候可以通過任務拆分,安排出合適的時間給其他需求
  • 設定基線,持續跟蹤:每週計劃排好後,設定基線,用來定期覆盤,對比計劃和實際情況,發現問題

所以最終我們整理的甘特圖如下:

專案資源管理-日曆圖

日曆圖

專案管理起來後,只需要持續根據,更新完成情況,並進行資料同步即可。 接下來我們需要需要將CSV轉換成日曆圖,這裡簡單講下思路:

  1. 明確日曆圖要展示的資訊,形成資料結構
{
  productLine: '',  // 產品線
  title: '',        // 任務名稱
  url: '',          // 需求文件地址,從名稱中獲取
  assigned: '',     // 分配
  // 開發
  develop: {
    startTime: 0,     // 開始時間
    endTime: '',      // 結束時間
    effort: '',       // 工時
    done: '',         // 完成度
  },
  // 聯調
  jointDebug: {
    startTime: 0,     // 開始時間
    endTime: '',      // 結束時間
    effort: '',       // 工時
    done: '',         // 完成度
  },
  // 測試
  test: {
    startTime: 0,     // 開始時間
    endTime: '',      // 結束時間
    effort: '',       // 工時
    done: '',         // 完成度
  },
  // 釋出
  publish: {
    startTime: 0,     // 開始時間
    endTime: '',      // 結束時間
    effort: '',       // 工時
    done: '',         // 完成度
  }
}
複製程式碼

將各階段資料聚合到一條,是為了避免前臺再去查詢關聯關係,展示詳情也更方便。資料通過csv進行解析 2. 日曆圖由兩部分組成:日曆+日程

  • 先根據年份月份生成日曆圖
  • 然後根據日曆圖開始、結束時間,篩選出範圍內的任務
  • 按周將任務拆分成陣列,這樣可以將任務展示成跨天連續的樣子 最終形成:
{
	dates: [
		[1, 2, 3, 4, 5, 6, 7]
		...
	],   // 日曆
	tasks: [
		[
			{
				任務1,
				style: {
					根據開始時間,計算水平偏移
					根據覆蓋情況,計算垂直偏移
					顏色區分
				}
			}
		],
		...
	]
}
複製程式碼

顏色區分思路:

雖然是隨機顏色,但是顏色要能很好區分,另外還要展示進度條,所以需要符合一定的規則。這裡基於HSL,只生成色相(H),然後通過飽和度(S)、明度(L)來設定顏色深淺來區分進度條;

所以按照色相環上6大主色:360°/0°紅、60°黃、120°綠、180°青、240°藍、300°洋紅不斷進行拆分,讓臨近的兩個任務儘可能處於兩個主色上

為什麼不設定OmniPlan報告模板?

  • 首先模板語法能力有限,難於完成複雜的邏輯,資料處理,日曆繪製
  • 可互動性
  • 報告主要是要透明,讓相關方知道,同時可以隨時跟蹤

總結

這樣的專案管理主要是為了瞭解專案安排和資源情況,方便開發經理跟進組員的情況,並統計反饋給相關方。只解決了特定需求,像一些大的專案,應該由PM來去維護專案計劃細節來跟進。後續會繼續跟進情況,學習專案管理,尋求更合適的方式。

相關文章