作為一名前端開發經理,公司有多條業務線,協調資源支援各業務線日常需求成了我的日常。這篇文章主要記錄這個過程的思考和如何生成一個直觀的日曆圖。
現狀
- 多個業務線需求,技術方案選型需要統一落地,所以最好能統一收集需求,合理安排;
- 跨部門(跨省)合作,目前專案流程並不規範,開發人員需求評估存在一定問題,存在延期情況;
- 通過開發同學工作日誌瞭解工作情況,無法直觀地持續跟蹤;
- 部分產品線臨時需求較多,開發同學的計劃經常改變,加大跟蹤難度;
- 靠文字輸出進度、計劃、問題給專案經理,不直觀;
目標
所以,我希望通過專案管理工具來進行專案排期
、資源協調
,並輸出直觀的報告
給上級、產品經理、開發經理,將前端工作安排、資源情況透明化
,從而逐漸完善專案流程和合作方式
。
奈何目前好的、完善的專案管理協同工具都需要收費,所以只能重新細化下需求,考慮在現有了解的資源基礎上去儘可能達到目標:
- 方便的專案管理,可持續跟蹤進展
- 支援里程碑,關鍵時間點,在關鍵時間點覆盤,逐漸優化工作方式
- 將資訊直觀地同步給相關方,增加互相間的瞭解
- 需求排期情況、節奏點
- 資源投入情況
- 通過持續跟蹤,覆盤,逐漸減少臨時變更,提前計劃
- 資源飽和下,提供給各產品線需求PK,將重點放在優先順序更高的任務上
- 輸出到工作報告中
所以核心還是專案管理
和報告輸出
,綜合考慮
- 專案管理:最終還是決定使用
OmniPlan
,將專案需求按業務線分組管理起來,但是隨著任務的增加,甘特圖資訊內容太多,不夠直觀,另外也不容易透明共享。 - 報告輸出:更傾向於使用日曆圖,像日曆日程那樣,可以方便檢視最近的任務、詳情。
所以將重點放在,在OminiPlan
專案管理基礎上,如何進行合理的管理,將輸出的甘特圖資訊轉換成日曆圖,並形成了最後的解決方案。
最終效果
- 預設顯示當月的專案安排
- 將任務按顏色區分,關聯里程碑
- 任務展示:業務線、開發人員、需求名稱,底下顯示完成進度條
- 點選任務右側展示詳情,如果名稱填寫需求文件ID,可連結到需求文件
- 可以篩選業務線、開發人員,減少無關項
OmniPlan
為了最終的日曆圖展示,首先要確保甘特圖資料符合一定的要求,所以先看下輸出的CSV:
紅框中是我們需要的資訊,接下來會介紹OmniPlan使用中的一些點,保證最終輸出的資料要求:
- 任務編號:任務編號按層級編號,以達到類似樹形結構的效果
- 任務分組:
- 根任務按業務線或者大專案分組劃分,以此來展示業務線資訊
- 關聯專案可以自由建立分組,最終任務按照樹葉子節點來統計
- 里程碑:任務劃分幾個階段
開發
,聯調
,測試
,釋出
,其中後三項為里程碑,必須按此命名,並跟任務建立關聯關係 - 使用關聯線來連線任務:里程碑是通過任務關聯和任務聯絡上的
- 資源安排:任務安排了資源才算計劃內的任務,可以檢視人員情況,檢查未分配的任務
- 任務拆分:一個長時間的需求,可能會因為緊急或優先順序更高的需求,需要進行拆分,但他們同屬於一個任務,只要展示一個資訊即可;這時候可以通過任務拆分,安排出合適的時間給其他需求
- 設定基線,持續跟蹤:每週計劃排好後,設定基線,用來定期覆盤,對比計劃和實際情況,發現問題
所以最終我們整理的甘特圖如下:
日曆圖
專案管理起來後,只需要持續根據,更新完成情況,並進行資料同步即可。 接下來我們需要需要將CSV轉換成日曆圖,這裡簡單講下思路:
- 明確日曆圖要展示的資訊,形成資料結構
{
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來去維護專案計劃細節來跟進。後續會繼續跟進情況,學習專案管理,尋求更合適的方式。