项目管理中的里程碑式管理前不久我半路接手这样的一个软件开发项目项目像遇到了一个黑洞不断地吞噬着项目组的时间原来的项目经理因为时间很紧张在匆忙中了解到客户需求后就开始着手做也没有分具体什么阶段到产品最后阶段要集成和测试的时候大量原来没有预计到的问题都冒了出来才发现项目进度完全失控业内流传着这样一句令人心酸的话规划规划全是鬼话计划计划全是空话实际上开发管理模式选择不当将极容易造成进度失控也将会导致两个问题一是质量无法控制二是时间无法控制因为项目进度的延迟总是在快到计划结束的时刻暴露出来结果是谁也不知道到底什么时候才能够结束项目到最后项目经理只好请辞那么到底问题出在哪呢艰难的项目进度管理软件开发管理一直有一个令人困惑的难题就是如何确保项目进度管理项目进度控制是项目管理工作中的重要一环也可以说是最艰难的工作之一在软件开发中项目进度失控受到很多因素的影响主要有以下几种情况缺少进度指路明灯当我们在路上行走的时候会在沿途观看路标当到达某一个路标时我们便知道还有多少路或多少时间才能够到达终点这些路标是我们在旅程中的里程碑让我们可以清楚地知道目前所在地离开目的地有多远也让我们能估算何时才能够到达目的地对于在路上行走的我们可以通过路边的里程碑这一个简单工具来获知自己的进度信息当进行软件开发的时候我们也需要建立开发项目的里程碑使我们知道项目的进度里程碑是项目管理不可忽视的一部分通常意味一个时间点上可交付成果的完成好的里程碑管理就像一张地图指示我们走向项目目标的进度项目进度估算准确性差软件项目开发进度控制面临的最大挑战就是项目进度估算的准确性差据统计在对软件项目进度与成本估算时大多数项目实际完成时间超过估算进度的到根据我的经验要想对项目进度进行有效的估算必须抓好以下两个方面一是项目计划的可行性和可操作性这是进度估算的基础二是要对项目进度进行合理的度量这样才能够获得项目的真实进展情况并对项目估算做出相应调整前松后紧项目进度缺乏有效监管和控制一般人在工作时都有前松后紧的习惯而里程碑强制规定在某段时间做什么从而合理分配工作细化管理粒度对复杂的软件开发项目而言每一阶段的进度都需要逐步逼近目标里程碑产出的中间交付物就是每一步逼近的结果也是控制的对象如果没有里程碑中间想知道现在进度做的怎么样了是很困难的没有尽早发现和降低项目风险在软件开发中错误发现得越晚对于开发造成的损失越大里程碑式开发模式可根据每个阶段产出结果分期确认成果避免血本无归通过早期里程碑评审一般可以提前发现需求和设计中的问题降低后期修改和返工的可能性例如在需求分析阶段发生的错误那么最多就是把需求分析写一遍损失的是一个人的劳动而到了测试阶段发现了需求错误再回去重新做需求分析那么损失可能是致命的目标导向衍生里程碑式管理一般来说在项目开始时项目经理都会对开发项目进度制定一个详细的计划通常情况下这需要采用一些具体的开发模式技术最常用的技术是网络计划和里程碑计划网络计划是任务导向以工作分解结构为基础里程碑计划是目标导向以目标分解结构为基础有时两种方法可以混合使用如在网络计划中设置里程碑什么是里程碑式管理里程碑是一个目标导向模式它表明为了达到特定的里程碑需要完成的一系列活动里程碑式开发是通过建立里程碑和检验各个里程碑的到达情况来控制项目工作的进展和保证实现总目标软件开发项目生命周期中有三个与时间相关的重要概念这三个概念分别是检查点里程碑和基线检查点是指在规定的时间间隔内对项目进行检查比较实际进度与估算计划之间的差异并根据差异进行调整我们可以将检查点看作是一个固定采样时点而时间间隔根据项目周期长短不同而不同里程碑是指一个具有特定重要性的事件通常代表项目工作中一个重要阶段的完成在里程碑处通常要进行检查基线则是指一个配置在项目不同时间点上通过正式评审而进入正式受控的一种里程碑状态三者的关系是重要的检查点是里程碑重要的需要客户确认的里程碑就是基线有一句通俗的话是这样描述没有检查点工作难进展不设里程碑项目往后推基线不评审客户吃不准怎样才算是一个里程碑呢简单的说里程碑是完成一个阶段工作后可以看到部分结果的检查点一般来说在软件开发过程中我们都会经过一定的流程或阶段例如信息搜集阶段需求分析阶段系统设计阶段系统开发和系统测试阶段每个阶段都会产生交付物每一份交付物的完结说明我们已经完成了一个阶段的工作一般情况下我们是在确认这一份工作成果后才会进入下一个阶段的工作因此每一份交付物将就是开发过程中的里程碑里程碑基线基点是一个软件配置在开发周期内的某一特定时刻正式的事件它也就是阶段性目标里程碑是团队阶段性工作完成的标志对于任何一个里程碑都应该给于认真的检查审定和批准在里程碑中间应要设置大量的检查点这些检查点应要细分到一旦检查点出现问题不至于在进度上失控里程碑可为进度预留缓冲时间使用里程碑式模式还有一个好处就是将大项目分成若干里程碑式的重要阶段时可在各重要阶段之间预留有缓冲时间使用缓冲时间可以很好的在项目未来实际执行进度和预计进度之间取得平衡一般来说在项目中我们需要为意外事故保留总开发的时间即缓冲时间缓冲时间有助于一个项目适应意料之外的事件例如缓冲时间可以用于弥补进度延误或者是技术困难或是由于疏忽而忘记把任务写入进度或者是未料到的难题而形成的时间损失这种应付突发事件的缓冲时间在开发和稳定化过程中是每一个主要里程碑的一部分警惕只问结果的里程碑陷阱众所周知里程碑是项目进度控制中的一个极为重要的概念也正因为如此人们也易于过于依赖里程碑反而使项目进度落空里程碑陷阱表现为人们在软件项目的里程碑被设定以后认为目标管理是只问结果不计过程从而忽视对过程的监控而导致项目里程碑不能按期达到如何实施里程碑式的管理里程碑一般是项目中完成阶段性工作的标志不同类型的项目里程碑也不同其精髓首先是将大项目划分成若干个子项目或若干个子阶段其次是通过每一阶段对各人员角色职责的考核和监管以保证开发过程的进度和质量划分若干个子项目设立里程碑检查点项目进度是以里程碑为界限将整个开发周期划分为若干阶段根据里程碑的完成情况适当的调整每一个较小的阶段的任务量和完成的任务时间这种方式非常有利于整个项目进度的动态调整也利于项目质量的监督在里程碑式的开发模式下因为按子项目或子阶段来划分里程碑每一个子项目都会经过一定的稳定化阶段当再进入到第二个子项目的时候就是基于前一个相对稳定的子项目基础之上这样就将风险或错误的累加分散到最低以局部的进度控制和质量控制来保证整体开发过程的稳定使得质量和进度得以很好的控制这就是里程碑式的开发模式优秀之处每个具体的里程碑应与具体角色相关联里程碑模式也可以称作项目实施进度管理模式一但开发项目立项确定需要做的第一件事情就是确定项目进度的里程碑在里程碑中应清楚地定义每一个阶段的开始时间结束时间负责人和阶段的提交成果因此里程碑是项目经理进行开发进度控制的主要依据里程碑一旦确定各相应负责人应确保按时交付成果这样既便于明确各个角色责权范围也有利于按时完成任例如每个具体的里程碑与开发组某一具体的人员角色相关联达到某个里程碑表明对此负有主要责任的人员角色完成了任务因此基于里程碑的软件质量控制必然会演变成对角色的质量控制这样才能真正达到对软件质量的控制确保里程碑有可验证的标准我们经常看到许多项目进度中都像模像样地设立了里程碑但实际上最大的问题就在于许多里程碑没有设定相应的验证标准在软件开发项目中设立的里程碑其作用是在项目进行时确认进度用的没有设定验证标准就等于没有里程碑管理因此需要给出一个清晰的验证标准用来验证是否达到里程碑里程碑应标明交付成果的进度在标识里程碑时要根据里程碑完成情况标明交付成果的进度更通俗地说就是让每个里程碑带上一个百分比清楚的告诉团队通过这个里程碑说明项目完成了多少当然随着项目进度的动态变化未到达的里程碑的也应该做出相应的调整