人们的有些尝试从来没有成功过:接到一个小项目,项目小,完全不需要一个全职的项目经理。于是就决定让一个程序员兼任项目经理。毕竟,还能有谁比程序员更清楚应该写出一个什么样的程序?
的确,很多程序员能做好项目经理的职位。好的程序员和好的项目经理的之间没有本质的冲突。这两个职位都是面向细节和面向结果的。但是一个人不可能同时做好这两个工作。
为了理解这种不兼容性,必须认识程序员和项目经理工作任务的类型。
开发软件需要进入一种沉浸状态,为了更加有效率,程序员必须完全进入代码世界,来专注于操作算式和变量,预见到变化和随机事件,测试一些构想和跟随 着一些复杂思路。在这种工作模式下,需要长时间不间断的专注。当程序员被打断,可能会丢失刚才是思维轨迹。被打断后,能在15分钟内找回思路已经很幸运的 了,而很有可能到第二天也找不回刚才的思维点。
换句话说,软件开发的任务切换成本相当高。
而项目经理需要完全不同的思维基准和工作模式。与程序员的梦境模式相比,项目经理需要熟悉和快速地将事实、感情和外部环境属性联系起来。项目经理不 仅仅是创建一个抽象的项目计划、跟踪项目进度,还需要创建项目理论架构。 他们的工作主要是协调多个成员的活动,理解项目成员们的工作进展,遇到了哪些困难,需要哪些资源,成员间的工作进展如何影响其他人的进度。也可以说,项目 经理的工作几乎是间歇式的。他们需要随时处理危机,防止问题出现,并与客户群体沟通。
明显没有办法使这两种截然不同的工作模式融合。如果问某人能否同时兼任项目经理和开发工程师,他可能会说他优先履行程序员职务,再来做项目经理的任 务,但是他应该根本没空去管理项目和与客户沟通,这样的项目肯定缺乏领导力;或者回答者会说他优先履行项目经理的职责,再去做程序员的工作,这样,开发任 务要么被延期要么不会被很好地完成。
如果要改善项目产出效率,一定要将‘一人兼任项目经理和开发工程师的想法’抛在一边,选择一个开发工程师兼任经理会损害项目产出效率,而且这个兼任的工程师来说很残酷,因为你在要求这个人做不可能的任务。