人员管理
你只能管三个人。这一年我所开发的项目的团队人数多在10人以上,开发的不是一个系统,而是一个平台,可以说成是系统集成。在我们这种不太正规的软件公司而言,项目经理不仅要从事项目管理工作,而且还要承担大量的开发工作,所以一个项目经理是非常忙碌的。在这种情况下,项目经理不可能管理到每个项目参与人员,不可能给每个开发人员具体安排非常具体的工作,比如告诉某某开发人员你去开发某个按钮的功能。如果一个项目经理要做到这个程度,那么就是去完成安排工作,检查工作这两项内容他的时间就不够。所以项目经理必须将一些管理工作分配到其他人员身上,由这些人来帮助自己作软件项目管理工作。根据我从事项目的经验,一个人去管理3个人是比较容易的。所以项目经理可以将项目管理工作拆分成3个部分,或者说将项目组分成3个小组,挑选一个能力比较强而且具备领导团队的能力的人做小组长,由他们去安排,检查小组各成员的工作,而项目经理就是根据这几个小组长的工作汇报来掌握项目的进展情况。当然,项目经理必须认真阅读小组工作汇报,并且要随机的抽查完成的工作内容与实际的汇报内容是否相符合。
过程控制
要作项目节点。一般的软件项目而言,都有一个最后时间节点,既是项目完成的最终时间。项目经理的任务就是要保质保量的在这个时间节点以前完成项目开发。对于一个项目而言,仅仅有最后时间节点是不够的,中间还需要有很多的时间节点。因此,在软件项目的开始,项目经理就必须总体上规划项目节点。即将项目分阶段,规定每个阶段的总体工作内容、工作目标、完成的时间、参与的人员,这实际上就是制定软件项目开发计划,这部分我在后面详细叙述。当然最初制定的开发计划常常需要根据实际的情况作出调整,但是调整的幅度要太大,特别是阶段性的工作时间变动不要超过15天。去年我组织的一个项目,应该来讲还是比较成功的,在规定的时间内完成了项目,但是今年年初计划开发的一个项目我感觉是失败的,其中最大的原因我觉得就是没有把握好项目节点。造成这种情况的原因一方面是因为今年我大部分时间都不在公司而是参与另外一个项目,所以没有精力去管理这个项目,另外就是项目事先安排的人员,变动比较频繁,造成很多工作无法按照原计划执行。
组织管理
要定时开工作例会。在项目的开发工作中,组织召开工作例会是项目经理一项非常重要的工作,通过例会,项目经理可以了解项目的开发情况以及问题所在,并根据情况对工作计划作出调整。工作例会分为小例会和大例会。小例会根据情况要求不同的人员参加。我一般是碰到两种情况。第一种情况是和小组长开例会,开这个会的主要目的是提出自己的总体时间安排计划,比如到某个时间项目要完成哪些大的工作,告诉小组长后,他们会去具体安排
每个开发人员下一阶段的工作。当然前提是你要了解已经完成了哪些内容,还有哪些内容要完成。本来阶段性的工作计划在最初的项目开发计划中就已经制定完成,但是一方面最初的开发计划制定有不合理性,对于项目运作中的实际情况无法考虑,因此必须作出调整;另外一方面最初的开发计划制定的目标可能不够细致,一般开发计划可能只能制定到月,所以工作例会实际上要指出下周或者最近十天的工作内容。开小例会的另外一种情况是讨论某个具体的技术问题,这时候只要请相关的人员参加即可。小例会倡导各个人员大胆发言,积极讨论。开大例会需要项目的所有开发人员参加,而且还有可能公司的高层领导也要参加,这个例会的内容一般是每个周五进行,基本上是由项目经理主持,总结本周工作,通知个开发人员下周的工作计划,这种会议一般不倡导每个人发言,因为人数太多,每个人发个言需要很长的时间。
关于如何开会,这里我作点说明。首先开会前会议主持者要清楚开会的目标是什么,会议结束时一定要完成这个目标。开会前早点通知参会人员,告诉开会目标,这样参会人员好做准备。对于争执不下的问题,主持者要作决断,即使可能是错的也要作出,也就是说讨论必须要有结果。
开发规范管理
要制定开发规范。项目经理必须制定出一套规范。规范涉及到制度性文件,比如刚刚说的工作周报制度;开发规范,比如编码规范,文档规范如需求说明书规范、概要设计说明书规范等等。
下面是我总结出来的项目经理主要要作的工作;
1、制定工作计划。工作计划有大有小,但是不论怎样工作计划都必须规定工作目标,完成工作的人,完成的时间。
2、检查完成工作。显然,项目经理检查项目已经完成的工作是必须的,因为这是制定下一步工作计划的基础。我一般是每天抽半个小时检查,而到周四下午或者周五上午时则花两三个小时去检查这一周的工作。
3、组织工作例会召开。 4、制定制度规范。
5、书写项目工作周报,向上级汇报工作。
6、负责与其他项目组或者其他部门间的沟通。因为一个公司而言,其实很多项目都是类似的,因此有些东西是可以直接借鉴的,所以项目经理与其他部门的沟通是必要的。
7、少量编码工作,但是多参与需求分析,概要设计工作。
8、了解项目组成员的能力,性格。因为工作安排需要因人而异,安排的工作一定要适合他作。
发挥桥梁作用
项目经理夹在公司领导,公司下属,市场人员,用户,合作伙伴中间。这些角色都靠项目经理联系起来,使各方都能掌握对方的情况和想法,以保证项目的顺利完成。
1、项目经理面对领导。第一需要汇报工作进展,第二需要汇报项目各成员的工作情况,第三需要汇报用户那边项目推进的情况,第四需要汇报需要领导出面才能解决的事情等等。总之来讲,公司领导通过项目经理了解项目所有的重要的事情,同时将指示下达给项目经理,由项目经理负责安排执行。
2、项目经理面对下属。第一需要安排工作分工,第二需要传达领导的意见,第三需要将用户的需求传递,第四需要将与合作伙伴订的技术协议通知,同时听取下属的意见,调整工作方法和思路。总之,下属通过项目经理对项目有个整体把握,以指导实际的系统设计和编码工作。
3、项目经理面对市场人员。做过软件项目的人都知道,从项目签合同到最后验收,没有市场人员的配合是完不成的。面对市场人员,项目经理一是要将项目中不方便自己出面的事情(比如行贿)交给市场人员搞定,同时把具体的情况告知,好让其行事;另一方面是项目中有些市场拓展的事情比如二期三期这样的事情,一定要与市场人员通知。作为技术人员,如果能够将项目做到二期三期也是对自己成绩的一个肯定。
4、项目经理面对用户的事情就多了。确认需求,项目进度。同时了解用户的喜好,请其吃饭喝酒。如果项目经理能够最后和用户成为哥们兄弟那么这个项目经理在用户这边就做成功了。但是我们的项目经理老有一个误区,总是觉得拉关系这些事情都是市场去做。其实如果项目经理和用户关系搞好了,对应项目中需要用户配合的事情也好办了。我做了好几个项目,有一个项目基本上达到了这种要求,现在用户有什么事情都找我,很多事情不是项目的事情,比如搞专家评审会啊,招聘啊都找我,自然有什么内部项目更不用讲了。
5、项目经理面对合作伙伴。现在的软件项目,很少时候是一家在做,多是几家公司一起搞。那么与合作伙伴的关系就很微妙了。一方面要尽量使合作伙伴干干的活能够和自己的活接合起来,实现无缝连接;同时又要实现尽量减少自己的工作量,让合作伙伴把该干的不该干的都做了。对于合作伙伴来讲,我觉得好打交道的我们就以礼相待;对于不好打交道的就以理相待,和他交流时尽量扣大帽子,站在项目的高度和他谈判,要搞得他骑虎难下,不干都不行。