关于软件工程的思考08:项目经理
项目经理
PM的定义和职责
PM有几种解释,包括Product Manager、Project Manager、Program Manager,在不同的行业和公司,他们的作用各不相同。本节主要讨论微软的项目经理Program Manager,它某种意义上是Project Manager和Product Manager的综合。
随着业务的发展和团队的壮大,有两个问题凸显出来:
1、团队成员之间的交流成本急剧增长
2、有很多开发和测试以外的事情,需要专人负责
PM做除了开发和测试之外的所有事情,一个PM在项目中的具体任务可能是:
下表列出了Program Manager和Project Manager的区别:
为什么说PM和其他人不构成领导关系呢?这是因为我们认为号的产品设计是在平等讨论的基础上产生和完善的,好的PM要做规格说明书,凭自己的能力把用户的需求展现成其他成员能理解和执行的语言,从而赢得同伴的尊重。
PM最大的贡献就是带领团队达到最终的目标,并保持团队的平衡。
即使项目中全部都是程序员大牛,PM也不会因此失去作用,因为程序和软件是有区别的,个人的努力如果不能有节奏、有方向,那么最终大家的成果也不会很好。
PM的个人风格对产品有很大影响,有时PM在平等而反复的讨论折中得到关于产品的共识,这样的产品可能是中规中矩了无新意的,如果依靠PM的远见来主导产品,这样的产品可能大起大落,对于更多公司而言,不犯大错的产品是更重要的。
成为一个合格的PM,需要以下这些能力:
1、观察、理解和快速学习能力:要能理解用户,要体察成员的言外之意,要有同理心,要能理解菜鸟用户等
2、分析管理能力:管理很多事物的优先级再判断
3、一定的专业能力:能用工具表达内心的想法,要有销售能力、写代码能力、对心理和社会都要有广泛的了解
4、自省的能力:失败后的自我改进能力
高效的团队讨论
很多工程师对项目的会议效率不满,会议上充满矛盾的建议,甚至出现生气和抱怨。
会议的组织者应该在会议开始前就定义好目标具体是什么,并推进会议进程,总结会议记录要点。
如果一场会议中,会议的参与者想到哪里就说到哪里,各人的情绪也自由地发挥,这样的会议一定效率不高,我们应该把无序的活动逐步约束为有序的活动,然后让大家通过一系列思维活动来分析问题,在一个时间段内只做一类思维活动,思维活动有以下几种:
1、理清事实
在会议中,大家先把所有的事实列出来,把不是事实的部分清除
2、表达直觉和感情
在开会时,可以在事实理清之后,用几分钟的时间让大家充分表达情绪,并且不用说明自己情绪的理由
3、从乐观的角度分析问题
提出解决方案时,大家应该对别人的想法进行鼓励,给予乐观的反馈,鼓励时可以用“对方的建议+对,而且+自己的建议”这种句式
4、从悲观的角度分析问题
这个阶段应该指出具体思想的破绽,常用的句式是“对方的建议+好,但是+自己的建议”
5、从创意的角度分析问题
这样会议就可以变成:
会议结束后会形成一些共识,一些行动计划以及负责人。
对于会议中很多与主题不直接相关的观点,可以由专人把它放入“好主意停车场”,待时机成熟后再启动。
PM和风险管理
在一个项目中,有很多风险,可以将其分成下面的类别:
风险会随着时间变化,有些小风险拖到项目后期可能成为大危机。
注意开发人员签入的代码有一些小问题,不能称之为风险,因为所有的代码都不可能是完美的,这是软件生命周期的正常事件。
应对风险有几个手段:
风险管理的水平也有多个层次:
第一层次:没有风险管理,应对危机没有预案,只能手忙脚乱的应对
第二层次:缓和并防止问题,对风险有一定的准备,能把问题缓和下来,且能动员大家一起想办法防止事故发生
第三层次:预计,从定性的猜测到定量的预计,有效的做准备
第四层次:把问题变为机会,从关注风险的负面影响转化为关注风险能否带来正面的机会,如移动设备时代到来后积极准备移动设备的开发获得成功。