项目管理中,首先最重要的是项目计划的制定。
通过项目计划,项目成员可以知道自己做什么,与自己相关的人做什么。而项目计划,可以精简成为向领导汇报的素材。领导是不会关注具体技术开发环节的,他只要求汇报这个项目开展是否顺利,是否按照计划执行等。因此,项目计划中的关键节点就是领导要求汇报的节点。
这儿就出现一个问题:一名不懂相应技术的人员能否担当项目管理任务呢?例如我们在开发数据库项目,而找一位出身PCB的哥们做项目管理。从我角度看,这儿没有绝对的答案,但我不同意一个完全的外行领导内行。例如三峡项目建设,这个项目很大,投入几千个亿,持续十几年,而项目管理者对三峡建设都能完全掌握么?不可能完全都清晰,但这样的项目管理者一定对大方向能掌握清晰。有例如中国的足球开发项目,这么受人批评,就因为是完全的外行领导内行,之前用水上中心的领导做管理,现在又换,搞不清。
在我经历的项目中,做项目管理的人都是对当前项目比较熟悉或很熟悉的人,还没出现一名完全的外行作为项目管理者领导项目开发的。
项目计划怎么制定呢?我的方法就是分解,包括横向和纵向的分解。
- 横向分解是区分这个项目需要的技能,包括软件?硬件?数据库?FPGA?如果可以,对把不同的技能可以继续划分,例如软件包括驱动?操作系统?等等,通过横向分解,可以了解到我们开发这个项目需要的技能储备是否足够,是否需要外部支持。
- 纵向分解则是根据项目的时间进度分解。因为一个项目,总有一个完成时间节点,这个时间节点可能来自领导指示,例如领导脑袋一热,要求某某项目作为国庆某某周年献礼,要及时完成;也有可能来自项目本身,根据项目开发的经验、项目规模制定的。总之,一个项目总有一个完成时间节点的!在这个基础上,我们评估出若干个大的关键节点,作为项目的里程碑节点。这就了解了项目的基本开发节奏,例如知道某个里程碑节点比较紧张,要加班,这个时候多鼓舞下。
通过横向和纵向的分解,我们对可以制定出项目计划。
项目计划中的人。
在我看来,在制定项目计划时,不外乎两类人:项目计划制定者和执行者。项目计划制定者希望执行者能根据计划完成工作,而执行者可能会有很多问题,最常出现的就是太紧张了,完不成,希望多给点时间。出现这种情况,我一般就这么来处理了:
- 根据历史经验,这么多活在计划时间内肯定完成,你完不成说明你有问题;
- 如果你认为太紧张,是技术储备问题,还是工作量问题;
- 如果认为太紧张,就请工作紧张点,该加班就加班。
我也不知道这类情况的处理方法是否合适,不过只要是制订计划,就一定会出现上述情况。
项目计划制定的工具
目前一般采用的就是project了。暂时还没有使用过其他的工具。通过该工具,基本能够清晰项目各个大的阶段、里程碑节点、参与人员等。但是对于项目的风险、大的技术储备等好像无法很充分体现。