3.在实施日计划时,与传统项目管理的工作分配有什么不同?如何进行工作分配?
传统项目管理的工作分配中,工作项的粒度比较粗。每一个工作项通常指一个功能。通常是把一个功能分给某程序员,甚至把一个模块分派给某个程序员。工作项的工时以周为单位,通常是一周或者两周。
模块 | 功能 | 当前状态 | 计划开始 | 计划结束 | 实际开始 | 实际结束 | 责任人 |
订单管理 | 订单信息查询 | 已开始 | 2009-3-1 | 2009-3-7 | 2009-3-1 | L | |
新增订单 | 已开始 | 2009-3-1 | 2009-3-7 | 2009-3-1 | L | ||
订单管理 | 修改订单 | 未开始 | 2009-3-1 | 2009-3-7 | L | ||
删除订单 | 未开始 | 2009-3-1 | 2009-3-7 | L |
实施日计划的工作分配中,“工作项”的粒度更小。如果按照XP和Scrum的说法,功能就是指一个“故事”,完成“功能”的步骤或事件叫“任务”。
传统项目管理的任务分配是以“故事”为最小粒度。日计划的任务分配是以“任务”为最小粒度。“任务”是指完成某一个“功能”的步骤或事件。每个人当天的任务工时总合为1人天。
故事和任务的区别:
故事 | 任务 |
订单信息查询 | DAO编码 |
DAO单元测试 | |
业务层编码 | |
JSP表示层编码 | |
集成测试 |
要实现订单信息查询就由右边的那些任务组成。
开始,我不知道怎样来描述一个“功能”和实现一个功能细化的“任务”。后来,当我看到Scrum的书籍后,看到Sprint和任务板时,才知道自己的实践与Scrum的某些实践竟有如此相似之处。我困惑很久,想不到用什么词来表示一个“功能”和实现一个功能所需要的“步骤”。Scrum使用“故事”和“任务”来定义它们,我认为非常的准确到位。
但是日计划的工作分配与Scrum的工作分配是不同的。实施日计划是由项目经理主导的;而Scrum强调由程序员主导。至于这两种方式,哪一种更好。我觉得可以结合具体的情况进行不同的实践。
如果是程序员成熟度比较高的项目,可以由程序员来主导。程序员成熟度较低和工期很紧的项目,可以由项目经理来主导。总之,这都需要程序员和项目经理达成一致。程序员需要向项目经理承诺。
Scrum会对每个任务进行事先估算,而日计划分配工作任务前才会进行估算,并且只为每个人分配工作量为1人天的任务总和。
开发人员 | 今日计划工作及完成情况 | ||||||||
序号 | 工作任务 | 优先级 | 完成标准 | 是否完成 | 完成百分比 | 完成情况 | 未完成原因 | 检查人 | |
L | 1 | 订单管理模块DAO实现 | 50 | 单元测试通过 | |||||
2 | 与用户确认页面原型 | 10 | 用户确认邮件 |
程序员L任务1的优先级为50,任务2的优先级为10。这并不表示两个任务的重要程度相差40,而是表示L当天应该先做任务1,再做任务2。
笔者认为这种日计划更加灵活。因为项目经理可以灵活的设置任务。Scrum的任务都是依据故事。日计划甚至可以把与开发根本不相干的事情包括进来。
当天要完成哪些任务是由项目经理先计划的,但是程序员可以提出不同的意见。双方达成一致。并且任务是可以量化和检查的。因此,事先还要设置完成标准。一旦程序员与项目经理达成一致,就相当于程序员向项目经理承诺,今天可以完成这些任务。
对于成熟度比较高的程序员,完全可以由程序员先提出计划。然后,由项目经理进行评估和检查。双方达成一致后,就把任务放入日计划的工作任务表中。