技术开发 频道

软件项目管理实践之日计划

    3.在实施日计划时,与传统项目管理的工作分配有什么不同?如何进行工作分配?

    传统项目管理的工作分配中,工作项的粒度比较粗。每一个工作项通常指一个功能。通常是把一个功能分给某程序员,甚至把一个模块分派给某个程序员。工作项的工时以周为单位,通常是一周或者两周。

传统项目管理任务分配表
模块功能 当前状态计划开始计划结束实际开始实际结束责任人
订单管理 订单信息查询已开始2009-3-1 2009-3-72009-3-1  L
新增订单已开始2009-3-1 2009-3-72009-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人天的任务总和。

日计划样例:2009-3-22程序员L工作计划
开发人员 今日计划工作及完成情况
序号工作任务优先级完成标准是否完成完成百分比完成情况未完成原因检查人
L1订单管理模块DAO实现50单元测试通过     
2与用户确认页面原型10用户确认邮件     

    程序员L任务1的优先级为50,任务2的优先级为10。这并不表示两个任务的重要程度相差40,而是表示L当天应该先做任务1,再做任务2。

    笔者认为这种日计划更加灵活。因为项目经理可以灵活的设置任务。Scrum的任务都是依据故事。日计划甚至可以把与开发根本不相干的事情包括进来。

    当天要完成哪些任务是由项目经理先计划的,但是程序员可以提出不同的意见。双方达成一致。并且任务是可以量化和检查的。因此,事先还要设置完成标准。一旦程序员与项目经理达成一致,就相当于程序员向项目经理承诺,今天可以完成这些任务。

    对于成熟度比较高的程序员,完全可以由程序员先提出计划。然后,由项目经理进行评估和检查。双方达成一致后,就把任务放入日计划的工作任务表中。

0
相关文章