这一天终于来到了:你从一个一线技术人员被提拔为项目经理。也许你一直在期盼,也许你心里还忐忑不安,也许这是你的职业发展选择,也许你只是不情愿地答应老板“试一下”。领导和管理,这两者是不同的。当你计划如何做好项目管理时,考虑采取以下列出的行动;也许你想做的事情很多,但下面的这些建议会帮助你集中到那些能提高效率(你自己的效率和团队的效率)的事情上。
1、设立优先级
这是你要着手的第一件大事。尽管你可能因为各种原因需要很大程度上参与软件的开发,但除此之外,你还有一些新的职责。很多新任的项目经理都摆脱不了技术的诱惑,以致忽略了项目成员向自己寻求的帮助。
富有效率的项目经理知道,他们最高优先的就是为项目成员提供服务。这些服务包括:指导和教育,处理冲突,提供资源,设立项目目标和优先级等等,适当时也要提供技术指导。不管你正在做或者将要做多重要的事,来你这儿寻求帮助的项目成员应该有“非屏蔽中断”(注:非屏蔽中断是一个硬件术语,此处意即最优先的)优先级。
你第二优先的是让你所在组织的客户满意。作为一个项目经理,如果你不再涉足产品的一线开发,也许你很少有直接的机会可以让客户满意。但你必须为你的项目成员创造一个环境,使得他们在这个环境下工作,可以最有效地满足客户的需求。这是项目经理的一个重要职能。
你第三优先的是你自己的事情。可能是一个与项目有关的技术问题,也可能是你的老板要你做的某件事。但当这些事与上面两个较高优先级冲突时,你要做好延后处理的准备。
你最低优先的是那些纯粹取悦你的老板的事情。在一个正常的组织中,如果你做好了前面所说的更重要的三件事情,你的老板已经是非常惊喜了。
2、分析你的技能差距
初为项目经理,通常你会意识到你在领导和管理技能方面的差距,除非你已经为这个新职位做了充分准备。你有很强的技术背景,可能这也是提拔你领导技术团队的一个原因,但你还需要一些其他的技能。你需要客观的评价自己的长处和短处,并且着手缩小自己的差距。
做软件的人常常被认为缺乏出色的交际能力。你需要加强你的人际处理能力,诸如调解矛盾,说服他人,“推销”自己。你需要应付一些不想应付的场面,比如批评你的下属、为争取下属的绩效“吵架”。
伴我开始经理职业生涯的是倾听(Listening)技能的课程,我觉得很有价值。在一线开发时,往往我们都有过人的精力来表达自己的技术观点。但作为管理人员,更需要一种包容和聆听的工作风格和交流方式。然后,从“听”的位置走到“说”的位置,你需要提高你的演讲(Presentation)技能。如果你对在公众场合演讲感到不适,你需要接受一些专门的演讲培训。
作为一个项目经理,协调他人的工作,计划和跟踪项目,必要时进行项目回溯并采取纠正措施等等都是你的职责。可能的话,接受有关项目管理的培训,学习如何设立优先级,如何主持高效的会议,如何明白无误地沟通等等技能;多看一些项目管理和风险管理的书籍和杂志。
3、定义“质量”
尽管绝大多数人都认真对待质量,也想生产出优质的产品;但是,有关软件质量的定义仍存在很大争议,比如高质量是“足够好”,还是更为经典的质量观点——“无缺陷”。为了领导你的团队走向成功,你需要花些时间和你的下属以及客户一起来明确:对于他们,质量意味着什么。
你的下属和客户是不同的两帮人,他们很可能对质量没有一致的看法,也容易抱有不同的目的。
在我曾经负责的一个项目中,为了更好地了解客户的质量要求,我举办了一次开放式讨论会(Open Forum),除了项目成员和客户参加外,我还请客户的上司们一起来参加讨论。这次讨论很有价值,因为我们发现很多原有的想法是和客户真正的质量需求背道而驰的。了解这些想法的差异,使得我们可以把力量集中在让客户满意的事情上,而不是放在让“开发满意”的事情上。
我们在需求阶段就考虑,对于客户哪些质量特性是重要的,并把它们列举出来(比如交互性、正确性、易学性等)。然后,我们找来一些关键的客户代表,请他们对这些质量特性打分。这样,我们就可以掌握哪些质量特性是最主要的,哪些是次要的,从而就可以有的放矢,为这些质量特性而优化设计。
4、表彰进步
表扬和奖励项目成员的成绩是很重要的激励方式。你要把建立奖励机制(Recognition Program)视为头等大事,除非你已经有了适当的奖励机制。奖励既可以是象征性的奖状、证书,也可以是实实在在的奖品和现金。发奖时记得说,“感谢您的帮助”,或者“祝贺您完成了……”。还要记得奖励的范围不要局限在你的项目组内部,客户代表和一些向你提供特别帮助的项目组外部人员也是要考虑的。
奖励机制不仅需要你投入一小笔钱,也需要你多动动脑,想想以何种方式奖励。和你的下属多交流,了解他们在乎什么样的奖励,要把奖励活动变成团队文化的一部分。另外,尝试“隐形”的奖励,让你的下属明白你是真的知晓他们所做的贡献,并且对此心存感激。
5、前车之鉴,后事之师
你负责的项目很可能是半途接手的,而且你的前任做得并不怎么好;或者,虽然是新项目,但从前有类似的项目完成,当然有成功的,也有失败的。不管是哪种情形,你作为项目的负责人,应该花些时间分析以往的成功经验和失败教训。你要了解这些项目曾经出现过什么问题,以此避免自己重蹈覆辙。失败是成功之母,但你没有太多的机会失败,所以你要多从别人的失败中学习。
你也需要客观的去评价自己完成的一些项目(如果有的话),了解自己的团队究竟强在哪里,弱在何处。事实上,每个完成的项目都要进行项目回顾(Post-projectReview),项目回顾不是为了追究谁的责任,发现问题、剖析问题是为了以后做得更好。你可以采取头脑风暴的做法,鼓励项目组成员各抒己见。另外,这种项目回顾也可以扩展到项目进行中,在每个大的阶段结束时都进行回顾。
除此之外,你需要了解被软件业界普遍认可的最佳实践(Best practice)。当你想把一些好的方法、工具和流程引入到你的项目中时,其他人可能会排斥、反对,甚至抵制,而这恰恰是你的职责所在,你要让项目成员明白为什么要这样做,并且确保他们不折不扣的执行。在你的团队内部,也会产生一些最佳实践,所以你要采取一些措施,促使在项目成员之间交流和采纳这些实践。
6、设立改进目标
当你回顾了以往的项目,并且确定了“质量”的含义,你需要设立一些短期的和长期的改进目标。只要可能,这些目标应该是可以量化的,这样你可以通过一些简单的指标来衡量自己是否在朝着这些目标前进。
举个例子,你发现以往的项目由于需求多变而经常延后,于是,你可以设立一个半年的目标,力求将需求的稳定性提高50%。这样的一个目标要求你每周每月做实际的工作:统计需求的改变数,查明需求的来源和改变的原因,采取措施来控制改变。这很可能将改变你与那些需求更改者的交往方式。
你的这些目标和指标构成了软件流程改进的一部分。尽管流程改进常被人指责为“官僚作风”的体现,但事实上,每个团队都能找到一些可以改进的地方。
改进流程的原因通常有两个:纠正错误和预防错误。你要把精力集中到威胁或者可能威胁项目成功的因素上;带领你的团队一起分析你们目前做法的长处和短处,以及所面临的威胁。
我自己的团队就组织过一次两阶段的头脑风暴练习,以此来确认提高我们的产量和质量的障碍。在第一阶段,参与者将自己想到的障碍写在即时贴上,每张即时贴写一个想法;然后,协调者就把这些即时贴收集起来,并进行分类;于是我们得到了若干大的分类,我们就把这些分类写在一张大的白纸上。在第二阶段,同样还是这些参与者,针对前面写的障碍,把想到的克服方法写到即时贴上,并且粘贴到相应的分类上。经过进一步的讨论和分析,我们得以把这些障碍细化,并且获得了一系列可操作的应对方法。
设立可度量的、可争取的目标将集中你为改进流程而付出的努力。你要和你的队员们一起定期检视改进的结果。记住流程改进的目的是为了项目和公司的成功,而不是为了满足书本上的条条框框。把流程改进当成项目来操作,有自己的进度、投入和产出。
7、不要急于求成
本文所建议的一些做法将帮助你这个项目管理的新手和你的团队取得更大的成功,随着你每天面临的工作压力,你或许会沦为又一个“苟延残喘”者,但是,你要始终明白你肩负的一个任务,那就是形成你的团队文化和一套做事的方法,这是一个长期的任务。你不可能一下子把想做的事都做到,你可以根据自己的处境有所选择,从容上路。