本文原发于知乎问答。此处略作修改。
有人问,项目经理如何处理项目计划时间与实际开发时间不符的问题?答曰,实际工作中,项目计划时间几乎必然少于实际需要时间,不然大家为什么会加班呢?项目经理最主要的工作之一不就是处理时间、资源的冲突么?
相信这个世界上会存在可以被说服接受“三个月时间不够”的老板。然而现实是,大多数情况下,老板会说,小刘,这个项目我三个月之后就要,你看着办。
** 不要试图硬碰硬地去推翻最后期限 **
要么做,要么滚。老板不是在考察你的能力,而是,老板将他面临的最后期限,分解后将其中一部分任务交给你。你说你做还是不做?
Ready?GO!
首先,按照通常的项目管理方法,分解工作包,列出关键路径,进行详细估算、风险预测。给出最可能的完成时间预测。呈交客户(老板)。
这一步完成后,很有可能会发现,实际预估时间与客户预期交付时间的差距,也许并没有最初想象的那么大,在这种情况下,做好风险控制,早期压缩进度(各种赶工,各种追加资源),后期确保质量,尽量保证如期交付。
与此同时,开始动员团队。关于这里很重要的一点是,你必须了解你的团队,你的团队在关键时刻,能够准确配合你的意图行动。这是团队建设的问题,就不在这个问题下展开了。有兴趣可参阅:《如何打造理想团队》。
如果详细估算与期望交付时间仍有较大差异,与客户共同商讨,重新定义时间边界。用数据尝试与客户沟通,说明强行压缩进度可能会引入的风险及性价比。尝试推迟交付时间。如果在经过充分沟通后客户仍坚持原计划交付时间,进入讨论交付范围。尝试缩短关键路径,为功能点划分优先级,收缩范围,尝试阶段性交付。
一般来说,到这一步,如果已经拿出了非常令人信服的数据来说明,在预期交付时间之前,完全交付全部功能点是不可行的,客户通常会理解,并将更关注主要功能点。我们只要保证主要功能完成,并如期交付使用即可。
然后,在真正开始工作前,明确责任。取得足够授权以便调动资源。
重要的是,在整个工程生命期中与boss保持良好的沟通,不断修正进度计划,不断从客户处取得反馈。有时候老板在最后期限到来之前,对交付功能的希望,早已经变了很多了。而对于互联网产品来说,需求和对交付的预期,实际上是在不断快速变化的。
** 与其重度计划,不如立即行动 **
软件项目延迟的比例其实不低,但因项目延迟而自杀或是辞职的项目经理却是少之又少。真正需要项目经理承担责任的,是最后交付的东西已经挑战了客户的容忍程度。根据自己的专业眼光和经验,判断出是否真的一定会延迟或部分交付,那么努力去理解客户的底线,去理解客户的真实需求,并据此调整工作的优先级队列。
总之,先行动(计划也是行动的一部分),尽自己最大努力去做。再拿有分量的东西给老板看。一旦接受了任务,你就开始了作战,你的目标只有取得胜利,用一切能想到的方法,动用一切可动用的资源来达到目标。
开个脑洞……
团长:刘参谋,带一个班,凌晨两点前炸掉大桥,阻止敌方机械化部队进入战场。
刘参谋:不行啊团长,召集爆破专家需要一小时,准备炸药一小时,找到桥梁关键点安装炸药需要一小时,我们总共需要4小时才能完成爆破任务,现在离2点还有不到3小时,能不能把时间推迟一小时?此外,这几天阴雨连绵,炸药受潮,很可能blabla……
团长:卧槽,和尚,把刘参拖出去给我毙了~
再来一遍:不要试图硬碰硬地去推翻老板给你的最后期限。
简单总结一下,其实就几个关键:
- 有效沟通
- 合理估算,与客户一起商讨,定义产品范围和时间边界
- 尝试推迟交付时间,同时采取措施压缩进度
- 取得有效授权,迅速动员团队
- 快速迭代,全程保持各方有效沟通
后面就是项目的执行阶段。作为项目经理,拿出看家本事来吧。