项目资源管理-日历图

做为一名前端开发经理,公司有多条业务线,协调资源支持各业务线平常需求成了个人平常。这篇文章主要记录这个过程的思考和如何生成一个直观的日历图。javascript

现状

  • 多个业务线需求,技术方案选型须要统一落地,因此最好能统一收集需求,合理安排;
  • 跨部门(跨省)合做,目前项目流程并不规范,开发人员需求评估存在必定问题,存在延期状况;
  • 经过开发同窗工做日志了解工做状况,没法直观地持续跟踪;
  • 部分产品线临时需求较多,开发同窗的计划常常改变,加大跟踪难度;
  • 靠文本输出进度、计划、问题给项目经理,不直观;

目标

因此,我但愿经过项目管理工具来进行项目排期资源协调,并输出直观的报告给上级、产品经理、开发经理,将前端工做安排、资源状况透明化,从而逐渐完善项目流程和合做方式前端

奈何目前好的、完善的项目管理协同工具都须要收费,因此只能从新细化下需求,考虑在现有了解的资源基础上去尽量达到目标:java

  • 方便的项目管理,可持续跟踪进展
  • 支持里程碑,关键时间点,在关键时间点复盘,逐渐优化工做方式
  • 将信息直观地同步给相关方,增长互相间的了解
    • 需求排期状况、节奏点
    • 资源投入状况
  • 经过持续跟踪,复盘,逐渐减小临时变动,提早计划
  • 资源饱和下,提供给各产品线需求PK,将重点放在优先级更高的任务上
  • 输出到工做报告中

因此核心仍是项目管理报告输出,综合考虑npm

  • 项目管理:最终仍是决定使用OmniPlan,将项目需求按业务线分组管理起来,可是随着任务的增长,甘特图信息内容太多,不够直观,另外也不容易透明共享。
  • 报告输出:更倾向于使用日历图,像日历日程那样,能够方便查看最近的任务、详情。

因此将重点放在,在OminiPlan项目管理基础上,如何进行合理的管理,将输出的甘特图信息转换成日历图,并造成了最后的解决方案。数组

最终效果

  • 默认显示当月的项目安排
  • 将任务按颜色区分,关联里程碑
  • 任务展现:业务线、开发人员、需求名称,底下显示完成进度条
  • 点击任务右侧展现详情,若是名称填写需求文档ID,可连接到需求文档
  • 能够筛选业务线、开发人员,减小无关项

OmniPlan

为了最终的日历图展现,首先要确保甘特图数据符合必定的要求,因此先看下输出的CSV:bash

红框中是咱们须要的信息,接下来会介绍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来去维护项目计划细节来跟进。后续会继续跟进状况,学习项目管理,寻求更合适的方式。

相关文章
相关标签/搜索