一、优化项目计划
泛普开发软件的基本特征是迭代开发。而迭代开发的强调的是"小批量、频繁交付"。因此,每次迭代所要实现的需求相对较少。这使得迭代开发中的项目计划制定相对容易,制定项目计划时任务与任务间的逻辑关系也比较容易掌握。但是,由于迭代开发往往采用时间盒(Time-box)的方式进行,即要求每次迭代的时间是固定的(业界推荐的是 2~4 周)。而每次迭代所要实现的需求(Story)的个数及其难度都不尽相同。这就要求我们在某些情况下要尽可能地优化项目计划,以保证工期不会超出时间盒的范围。
优化软件项目计划的常见方法是尽可能地使各个任务并行。比如,有两个功能的开发任务,其中一个功能 A 依赖于另外一个功能 B。但这并不意味着我们必须将这两个功能的开发任务串行安排(即先开发 B 功能,再开发 A 功能)。此时,可以使用测试桩(Testing Stub)来模拟 B 功能的实现,这样使得 A 功能的开发和测试可以先独立于 B 功能的实现。因此这两个功能的开发可以并行。项目管理者联盟文章
软件计划安排时考虑避免重复劳作也是缩短工期的一个常见方法。在 Story 驱动的一个迭代开发过程中,从第二个迭代开始,往往存在多个 Story 的实现涉及同一个模块的代码修改。此时,计划可以安排多个人并行开发这几个 Story、但是转 Story 测试时,这几个 Story 可以合并成一个"大 Story"一起转测试。从而避免了多次测试同一个模块带来的浪费。
出于应对风险的需要在安排计划时留出所谓的缓冲时间有其合理性。但是,这个缓冲时间延长了任务的持续时间。而关键任务持续时间的延长则延长了整个迭代持续的时间。值得注意的帕金森定律所阐述的现象却给了我们在某些情况下要适当压缩任务尤其是关键任务的持续时间。帕金森定律告诉我们:只要还有可用的时间,一件工作消耗的时间就会不断地扩展,直到用完所有的可用的时间。也就是说,一件任务如果需要 3 天时间完成,而计划安排的持续时间是 5 天的话,这个任务会消耗 5 天甚至更多的时间才能完成。这种现象的方面给了我们一个启示:如果一件任务如果需要 3 天时间完成,而计划安排的持续时间是 2 天,那么这件任务真的可能在 2 天内完成,最多也可能是 4 天时间完成。这也比将该任务计划为 5 天完成节省时间。可见,过于宽松的机会反而可能拖慢了进度,而有一定紧迫感的计划所带来的适当压力可以激发人的动力和潜能反而可以加快进度。
对于迭代中的技术风险点要优先安排进行验证。比如,对于从未使用过的技术或者新技术,要优先安排原型的验证,避免中途才发现技术障碍。
二、软件项目进度管理信息的获取
由于团队开发中的每个团队成员的日常工作之间都存在或多或少的依赖关系:某个人的工作要以其他人的一件工作产出为输入,同时其工作的输出又是另一个人的某件工作的输入。
从团队自我管理的角度来说,项目进度信息是将团队成员的工作自主得衔接起来的重要因素。因此,泛普开发团队中,进度不应该是只有项目经理才关心的事情,而是整个团队成员都应该关心的事情。但事实上,团队成员往往倾向于只关心自己手头上的工作。因此,项目经理需要引导和鼓励团队成员主动关注自己手头上的任务所依赖的任务的进度。
另一方面,项目进度是整个团队应该关心的事情,这就要求在团队内有一个统一的进度信息获取与发布的平台和途径。这个平台可以是一个管理软件,比如工作流软件。也可以是一个即时通讯软件。不管采用什么样的平台,项目经理应该引导和鼓励团队成员主动将各自的进度信息推送到这个平台,而不是每个人进度还要等其他人来询问。
站立会议也是进度信息的发布和获取的一个常见途径。站立会议中,每个团队成员都要介绍自己昨天完成了什么,今天计划做什么。这样,每个人的进度信息都可以让其他人了解到。项目管理培训
三、定义软件完成的标准和进度信息的核实
获取进度信息后,要及时对其进行核实。泛普开发中的优秀实践"定义完成的标准"可以帮助我们对进度信息进行核实。
下面我们讨论什么是项目软件完成的标准、定义完成的标准的作用以及如何定义完成的标准。
曾经有个刚刚开始带领团队的人向我咨询这样一个问题:他向他的组员分配一个任务,然后他不定期得检查这个项目软件的任务进度。可是每次他检查进度的时候,他的结论都是这个组员的工作成果没有达到他所期望的,而这个组员却是认为自己已经完成了当天的任务。这种情形导致这种组员不断得为返工而加班,最后导致其身心俱疲,提出离职申请。事实上,这样一个问题产生是因为任务的分配者和执行者事先没有约定好什么叫做"完成"。双方都只是在依照自己心中的"标准"来判断是否完成,从而导致了对于进度认定的冲突。项目管理论坛
可见,在我们断定一个任务是否完成、进行到什么情况前,首先要规定什么叫"完成",否则就会在衡量进度的时候产生上述例子中的冲突。这种对于什么才叫做完成的规定就叫做完成的标准。显然,进度不能在脱离质量的前提下孤立得衡量,因此完成的标准不仅定义了质量要求(通常是最低质量标准),也是进度衡量的重要依据。
比如,如果你让一个没有什么工作经验的人去安装一个数据库管理系统(DBMS),他很可能就是把安装程序执行一遍,若执行过程中没有遇到安装程序提示错误就认为是完成了软件的安装。而最后,其他人都不知道这个已经安装"完成"的软件的访问信息,比如它所在机器的 IP 地址、侦听端口。甚至知道了这些信息后,在实际使用时却发现所安装的软件根本就无法正常运作。项目管理者联盟文章
其实,对于这样一个任务我们可以定义一个完成标准:所安装的 DBMS 要经过验证(比如使用 SQL 能够在数据库中插入一条记录,并能够使用相应 SQL 查询到插入的记录),并输出软件的相关使用信息(如软件所在机器的 IP 地址、软件的侦听端口)。项目经理博客
可见,完成的标准不仅定义了质量要求(通常是一个最低质量要求),也定义了任务所要交付的产出物。完成的标准所定义的产出物和质量要求正是评估任务进度的依据。一个任务在整个团队中有了一个大家一致认同的完成标准时,任务完成的质量和进度的衡量才不会出现冲突。
添加专属销售顾问
扫码获取一对一服务