项目经理是开发团队中最有权力的角色,没有之一。“权力源于选择性”——项目经理工作本身就是由各种选择组成。项目经理这个职位,在很多小公司里,或者某些大公司里,直接就是“老板”,也有叫“制作人”、“总经理助理”、“产品总监”;在更多的一些中型公司里面,他们就叫“项目经理”;在某些大公司里面,也有叫“项目助理”的。
主程(美、策)决定如何做,客户和老板决定做什么,项目经理决定什么时候做、用什么资源做、做到什么程度、由谁去做……有一个项目经理这样说:业务方面,我对产品懂得太少,是不是存在的价值不大?如果说有价值,价值在哪里?
如何完成作出最合理的选择,以推动项目成功,是项目经理的最大共享,也是最大的挑战。项目经理的主要工作内容——沟通、资源、进度:通过沟通,掌握最切实细致的内部和外部的信息;通过资源工作,让选择的余地更大;通过进度工作,让选择得以实现,并且提供真实的反馈,改进掌握的信息。
一、进度
对于进度的讨价还价毫无意义。任何一个开发人员都倾向预留更多的时间,而任何一个客户都倾向缩短时间,项目经理通常无法改变他们的看法。
我自己从未试过在进度上和某老板在超过5年的过程中的任何一个项目,从第一个到最后一个,达成共识,部分原因是我自己也不清楚要怎么预估,另外一部分原因是老板把进度时间作为油门踏板,用来施加(或者是转嫁)压力而已。
我从未从进度报表中得到过加快开发速度的能力,有的只能是让团队加班。如果只是为了加班,实际上提供一个清晰的版本目标和足够的激励措施,就已经能做的很好了。虽然进度往往是压力最大的部分,但是进度是个结果,改善过程才能改善结果。
进度就好像你的时速表和里程表,告诉你情况,如果不修好那该死的化油器,猛踩油门仅仅会导致冒更多的黑烟。
项目开始前的预估会议,除了用来逼迫加班外,还有增加成员跳槽几率之妙用。频繁的衡量进度情况,逐步逼近真实的进度情况,才能提供真实的项目预报,通过真实的进度情况,来进行下一步的决策,如安排工作人选、推广使用某种工具,才是进度跟踪的正确意义。
二、资源
“固定的报价代表背叛承诺”,对于软件开发项目来说,视之为产品不如视之为服务。服务是按过程来计算资源消耗的。但是服务的内容在同一个项目中却也变化多端。让项目能得到足够的支持,项目经理必须努力获取各种资源支持,否则服务质量就会下降。
合理配置资源,从另外一个角度讲就是做取舍的选择。“关键路径”的概念耳熟能详,但是敢于明白的把它放到台面上的项目经理却不多。比如说某公司的关键路径其实是老板的看法,还有的项目最重要的是“能忽悠到投资”,中国人不够诚实的缺点,其实是增大了项目经理的工作难度。
在开发团队的办公环境里设置一道不上锁但自动关闭的门,有一种类似于深夜对于程序员的刺激作用……资源的种类和用法非常的多,创新是管理的本质,资源使用的管理创新是最具可能性的部分之一。资源的拓展是一个很具挑战的工作,我曾经发现使用2个显示器能提高不少调试效率。又如使用JAVA技术或者虚拟机来运行调试态的服务端程序,然后让客户端直接连接并且进行单步调试,能大大提高协议联调的效率。还有在团队座位的中心竖个牌子,贴上版本目标的任务分解,每个人都会经常的去看这个牌子,同时以在上面打勾表示完成而自豪。
三、沟通
如果掌握的情报是一样,大多数人都能做出类似的明智的决定;问题是情报的搜集是一项艰难的工作,情报的分析和消化同样艰辛。沟通最
重要的目标是获取情报和知识,包括需求、局限、进度、资源可能性,最次要的目标才是说服。
往往掌握的信息足够丰富后,要说服别人是比较容易的。项目经理的责任就是学会那些所需的知识,来让自己能理解沟通的内容。一个好的项目经理往往会让所有人都觉得“有共同语言”。这个确实需要大量的艰辛工作,以及强烈的突破自我的心理能量!
要能做好沟通工作,项目经理最重要的素质是学习的态度,要乐于学习各种信息,才能消化和掌握这些信息。有些项目经理会说自己缺乏某种技术背景,如不懂美术、不懂技术、不懂产品,这些统统都不是理由。