我是一名项目经理,在过去的四个月里,我把一个项目带崩了(上线后频出问题,用户无法使用)。在最近的几天,我每天都在反思自己,我都在问自己以下几个问题:
1.我做错了什么?
2.我在其中占有多重的因素?
以下内容,我将回答以上问题,并在最后说一下我的补救措施。
首先给大家说明一下项目背景,以便各位对此项目有更清晰的了解:
1.该项目是一个二次开发项目,第一个基础版本(打印申报系统)也由我带领开发。
2.系统是需要和国家系统对接,有三条主流程。
3.需求频繁变化,由于系统需要对接国家系统,需求方对需求也不甚了解。曾在5月份一个月内需求变更超过8次,都是主流程变更。
4.项目大小按照最初需求估算,约在100人天左右。
5.项目两条主流程无法测试,依赖于外部U盾,但开发过程中并没有U盾。
6.客户现场使用U盾调试和开发时间约为20天左右。
7.我当时同时负责大大小小4个项目,没有进入开发,仅管控进度。
8.团队成员共3名,其中两名是当时开发基础版本的项目成员,他们对此项目较为熟悉。
9.项目推进过程中,需要多次去现场调试测试,由团队中的两名工程师共同前去。
在项目的开发初期,我制定了一份详细的开发计划,用于指导整个开发过程。开发计划交付与了客户,而答应了的事情就要做到,所以在整个项目过程中,我对进度管控很严。我定期检查功能是否完成,定期和客户汇报情况,保证了开发进度顺利推进。但也由此埋下了祸根,仅仅看需求是否完成,而未关注完成的质量如何。
项目质量出现了许多细节性问题。比如:
1.上线后,客户那边发现其中一条主流程都走不下去
2.其中申报功能,系统提示成功。但实际上并没有真的申报成功,申报后在国家系统无法查询到
3.打印功能小问题较多,打印获取的数据错误
4.同步数据的功能无法同步或者同步的数据错误
5.执行时间过长的功能,数据库会强制断开连接
等等问题,就不一一列举
反思:
1.进度和开发速度固然重要,但以质量换速度不可取
2.如果开发时间和质量冲突,优先保质量,毕竟你埋下的坑,总是要坑你自己的
3.再困难的情况下,也要保证基本测试
4.时间极其不允许的情况下,也要保证主线功能顺利执行
项目中的三名成员,都是合格的开发,对使用的框架非常熟悉。其中两名还是基础版本开发成员,对需求也很熟悉。所以项目中,我放心的把整个项目交给了他们。基于对他们的放心,加上其他项目事情繁杂,对此项目关注度,对他们的关注度就不够了。
我在项目中给予了他们非常充分的信任,信任他们可以把一切事情都做好。但我没有在正确的时候给予他们正确的指引,项目中出现的困难点,我也没有帮助他们解决,甚至于没有给出思路。所有的一切,都靠他们自己完成。我在这个项目里做的,就是对接客户,催进度。再无第三件事。
反思:
1.不论什么原因,都要关注到项目成员的状态
2.给予信任没错,但也要适当保持警惕,他们多少会因为经验问题疏忽遗漏一些问题
3.给予信任,也要给予帮助,不以时间为理由推脱你应该对他们进行的指点和帮助。毕竟现在剩下来一分钟,以后要花一个小时去弥补
这是我在项目中做的最错误的地方。
由于种种原因,我无法掌握到项目的每个要点和细节。而项目中有三个开发。我并没指明其中某一个来负责整个项目,所有事情都让他们自己商量。从客户对接来的问题,我也是仅告知对应的开发。整个项目中,没有一个人对项目中的每个要点了如指掌。
反思:
1.手里捏着管理的权利,却没有做到管理的事情。是我在这个项目里最大的问题
2.授权!授权!授权!如果自己无法亲力亲为投入项目管理工作,就授权给团队某个成员管理权限,让他代替你去做管理工作
3.管理一人,总比管理多个人轻松,也更有效
项目是二次开发、成员对项目很熟悉、项目工作量不大、时间紧。
基于以上原因,我掉以轻心,没有在项目初期进行项目的设计和规划,未指定任何开发规范。仅仅告诉开发的同事要多复用,也未检查他们是否真的复用了。
项目开发中的需求变更,客户反馈意见,我我都仅仅是告知他们一声,未做详细的修改规划,所有事情都靠嘴说,所有变动都放在了我和他们的脑子里。
对项目上心程度不够,未对客户的需求变更做控制和管理。所有变更都压给了开发的同事。
整个项目以及其不规范的方式在运行,我也未在其中起到控制作用,项目开发一团乱麻。
反思: