posts - 63,comments - 71,trackbacks - 0

编者按:随着产业的发展和竞争的加剧,计算机软件开发的规模和复杂度日益加大,时间要求愈来愈严格,软件企业逐渐从“软件作坊”向“软件工厂”转变,这引起了人们对软件开发理念、开发团队管理方式、人员角色定位等一系列问题的重新认识。

  种种问题之中,项目经理的角色定位是讨论的热点。项目经理的工作目标是什么?项目经理应该对谁负责?项目经理在工作中应当获得怎样的授权?什么样的人适合做项目经理?这些问题的回答“仁者见仁、智者见智”。在此,笔者总结了一些看法,和大家一起交流。

  为了保证讨论的针对性和可操作性,我们不妨先预设讨论的前提为:

  涉及的项目团队是指中小规模的软件开发团队,团队成员人数在6~30人之间;
  团队管理不属于“软件作坊”方式;
  团队目标是完成具体应用或者开发商业产品,而非科研课题;
  软件工程思想主要采用传统的软件工程思想,而非“敏捷”型软件工程思想(例如极限编程方法等)。

  项目经理做什么?

  项目经理的工作目标是什么?要回答这个问题,首先必须弄明白什么是项目。关于项目的定义很多,其中以项目管理专家James P.lewis(美)的说法比较有代表性:项目是一次性、多任务的工作,具有明确规定的开始和结束日期、特定的工作范围、预算和要达到的特定性能水平。这里涉及到了4个要素:P——预期的绩效,C——费用(成本),T——时间进度,S——指定的工作范围。这4个要素相互关联、相互影响。如果C只考虑人力费用,在理想情况下,这4个要素可以使用以下数学表达式:
  C=2P+3T+4S
  这可以用一个三角形来形象说明:绩效、费用和时间是三角形的边,范围是三角形的面积(如图1)。通常的项目金三角理论(如图2)中,项目管理集中考虑的因素是R(资源)、C(费用)、T(时间/进度)、S(特色/范围)。与之比较,这里的定义在其基础上着重提出了P(绩效)。在软件公司纷纷进行ISO 9000认证和CMM认证的环境下,重视绩效的意义也就不言而喻了。

了解了项目的含义,那什么是项目管理呢?项目管理是为完成一个预定的目标,而对任务和资源进行计划、组织和管理的过程,通常需要满足时间、资源或成本方面的限制。换句话说,项目管理也就是对与项目密切相关的绩效(P)、时间进度(T)、费用成本(C)、范围(S)进行管理控制的过程。

  总之,项目经理是运用一定的方法和工具对项目进行实际项目管理的人。简单地说,项目经理就是项目的实际控制者。他的工作目标就是成功地对项目的PTCS进行管理。

  对谁负责?

  项目经理应该向谁负责?有人说应该向所在公司负责,因为其属于公司直接管理;有人说应该向客户负责,因为项目是为客户服务的;也有人说要向项目综合利益负责,因为项目涉及到各个方面,项目经理偏重那方都不对。哪个说法更准确?这先要弄清楚项目关系人这个概念。

  项目关系人也可以称为项目风险承担者,是在项目中有既得利益或者与项目有直接关系的所有法人和个人。这包含项目贡献者、项目管理者、供应商、项目投资方、客户等。这些人或者直接推动项目的进展,或者给项目提供各种援助,或者最终对项目进行评价验收。项目经理要达到工作目标,完成项目,这些人的积极参与是根本保证。可以说,项目经理实际控制的项目的权力虽然是由其所在的公司直接授予的,但最终是来源于这些项目关系人的。

  可以这样理解:尽管项目经理隶属于其所在的公司,他受公司的委任管理项目时必须要对公司的利益负责。但是,从其所管理的项目本身角度看,项目涉及的是多方的利益,必须要达到多方共赢的目标。项目经理必须在保证公司利益的同时,保证项目关系人其他各方的利益。否则,在推进项目的过程中,必然会受到其他各方的压力和阻挠,从而使项目徘徊不前,甚至走向失败。

  可见,项目经理不仅仅需要向委任自己的公司“老板”负责,还必须向其他项目关系人负责。这也就是说,项目经理必须向代表所有项目关系人的综合利益负责。

  这里有人也许会提出疑问:实际中的项目关系人都只注重各自的利益,例如:公司管理层、项目投资方注重的是最低成本、最大利润;客户注重以最低价格获得项目成果;项目成员注重的是在可接受的时间和成本范围内完成项目从而获得精神上的满足和经济上的回报。项目经理如何对这种相互矛盾的利益负责?

  要回答这个问题必须探究项目管理目标的量化。一般来说,项目决定开始的重要前提之一是项目关系人对于项目的量化目标取得完全一致的意见。这里涉及的量化目标包含4个方面:一个量化的项目可交付结果列表(S);提交项目可交付结果列表必须满足的质量准则(P);确定项目最终完成以及中间里程碑的截止日期(T);项目不能够超过的成本限制。

所有项目关系人必须在量化的目标基础上形成自己的利益底线。这样,项目经理达到了量化的项目目标,也就实现了对项目综合利益的负责。当然,项目经理毕竟是受其所隶属的企业委任的,由于企业发展的不同阶段,企业对短期效益和长期效益的侧重不同,企业的行为会对项目经理的实际管理带来一些影响。项目经理需要对此进行适当的平衡,保障项目关系人各方的利益,实现成功的管理。

项目经理有什么权?

  项目经理应该得到怎样的授权?按照责任和权力对等的原则,谈论项目经理的授权自然要先考虑项目经理的具体责任。现在,软件企业基本都采用项目经理负责制。尽管不同的企业对项目的责任规定各有侧重,但一般都包含下面的基本内容:

  完成量化后的项目目标;
  进行有效的计划管理;
  提前规避各种项目风险;如果风险已经无法避免,及时把危害降到最小;
  协调项目关系人各方的关系;
  保持项目团队的相对稳定。
  因这些要求,项目经理在实际工作中应该得到下面授权:

  一定的财权。

  常见的情况是:项目经理被企业领导拍着肩膀说,“我们相信你,所以把你放在了项目负责的位置上;不过,为了慎重,在花费项目经费的时候,必须得到批准。”实际上,项目经理由于在经济上没有获得足够的直接决定权,项目开展起来总会感到说话没“分量”,处处受制,展不开手脚。

  那项目经理应该被赋予怎样的财权呢?笔者认为应该满足以下基本要求:

  (1)项目经理应该掌握部分的项目奖金,以便于适时激励开发团队。
  (2)项目经理应该有购买开发工具、项目资源(包含各种服务,例如技术培训、软件工程培训等)、办公易耗品的权利。这里需要特别指出的是:项目经理在项目重要资源(例如软件开发工具、开发需要配置的服务器、打印设备等)的采购过程中应该拥有较大的决定权,因为他知道应该选择怎样的性能并负责将来设备的具体使用。
  (3)项目经理可以直接掌握一定数额的活动费用,以便于人员的协调和管理。

  一定的人事管理权。

  “人”是整个项目中最活跃、影响最大的因素;没有项目成员的积极参与、努力工作,完成项目也就是天方夜谭了。项目经理如果没有直接的人事管理权,实际上也就在很大程度上失去了对项目人力资源的控制能力,这对于项目完成是十分不利的。那么,项目经理应该被赋予怎样的人事管理权呢?一般说来,这应该满足以下要求:

  (1)项目经理直接参与项目成员的配备。从项目开始,项目经理就应该参加项目成员的选择。他必须针对所有备选人员的工作背景、知识技能、性格特征等因素提出自己的看法。有条件时,他还应该与每一位候选人进行面谈。而且,最后的项目成员名单必须得到项目经理的同意。
  (2)所有项目成员的工作必须直接向项目经理或其授权的人汇报。不管项目团队采用哪种方式组织人员,项目经理都应该是工作评定的核心。项目经理可以根据员工的工作直接对其进行奖励和惩罚。他对员工的工作评定直接影响其职业发展。而且,这种影响不应该伴随项目的结束而结束。
  (3)项目经理可以调离员工。尽管激励员工,使之发挥出自己最大的力量是项目经理进行人力资源管理的最重要目标;但是,必须承认将员工调离项目仍然是项目经理手中必不可少的“王牌”,是使项目团队及时进行新陈代谢的保证。

  其他权力。
  除了必要的财权和人事权以外,还应该根据项目的实际情况赋予项目经理其他一些权力。例如,可以考虑赋予项目经理与客户进行直接沟通的权力。这不仅有利于客户及时了解项目的进展,减少许多不必要的误解;而且这种沟通还非常有利于项目经理对产品需求的把握,使产品更好地为客户创造价值。

  这里谈了很多项目经理应该获得的授权。但需要注意的是,作为项目经理,自己应该明白:要想进行成功的管理,权力的使用应该非常慎重。项目经理进行管理时通常可以使用两种力量:影响力和强制力(权力)。影响力让员工感觉到做某事是对的,应该去做;强制力(权力)让员工感觉到做某事是没有选择余地的,必须去做。权力的使用对员工的影响要强烈些,可以取得“立竿见影”的效果。但这也容易让员工产生逆反心理,容易扼杀员工创新的积极性。关于项目经理影响力和权力的使用问题,不是本文的侧重点,在此不再赘述。

谁最适合做项目经理?

  也许有人会说,“学而优则士”,谁的技术最好,谁就可以做经理。在过去(软件作坊时代),很多企业也的确是这样来晋升员工的:技术人员如果编程很优秀,那就可以考虑提升为系统分析/设计人员;如果系统分析/设计能力很优秀,那就考虑提升为项目经理;如果具有较强的项目管理能力,那就可以考虑提升为部门经理;如果能很好地管理好一个技术部门,那在适当的时候就可以提升为技术副总……

  由技术到管理,对于有着成为“软件英雄”理想的程序员而言,确实是不断证明自己、不断超越自己的一条发展道路。不过,随着软件企业由“作坊”发展到“工厂”,如果再继续沿着这样思路走下去,最终往往导致项目进度严重滞后,甚至项目失败。这其中最主要的原因是技能缺乏。

  由于“软件工厂”中人员的分工已越来越细、越来越专业化。对软件工程师的要求是掌握项目开发所必需的各种软件技术,而对项目经理的要求却是掌握进行项目管理所必需的各种技能并且具备领导他人的性格特征。可以说,再优秀的软件工程师也不见得能够轻松胜任项目经理这个职位。
  那么,谁最适合做项目经理?笔者认为应该满足以下基本要求:

  具备领导意识。
  所谓领导意识,是指管理者意识到自己必须在很大程度上依赖他人才能够完成自己的工作任务。项目经理作为整个项目最直接的管理者,必须具备这种意识。

  当然,领导他人的方法多种多样,譬如有的倾向于使用影响力,使被管理者在潜移默化中跟随自己;有的则倾向于使用权力,使被管理者在“权威”要求下跟随自己。

具备沟通意识。
  很大程度上甚至可以说IT项目管理就是对人的管理。一个不善于与人打交道、总是引起部属与自己对抗的项目经理是很难开展工作的。

  尊重他人。
  不论面对任何人(公司领导、投资人、客户、项目员工……),项目经理必须懂得尊重他人。这不是说一些表面上的漂亮话,而是要项目经理能够真正尊重他人的投入,尊重他人的劳动,能够在对方的立场上为其考虑问题,解决事情。“谋人之事,解人之危”,“己所不欲,勿施于人”,这些古老的格言仍值得项目经理恪守。

  懂得团队建设。
  在进行“团队作战”的今天,项目经理的团队建设能力十分重要。项目经理需要懂得如何搭建一个团队的组织结构,懂得如何引导和激励一个团队。

  掌握一些编程技术。
  项目经理应该对项目所涉及的编程技术掌握到何种程度,这一直是业界争论的一个热点。这里不妨先分析两个看法:

  (1)项目经理一定要精通技术,精于编程。
  分析:这个看法对项目经理的技术要求似乎高了一些。不管采取何种软件项目管理方法(瀑布法、原型法、迭代进化法……),对于某一个具体阶段而言,项目总是处在一个生命周期管理过程中:可行性论证→立项→需求分析→系统设计→编码→测试→版本发布总结。
  项目经理作为项目的实际控制者,最主要的工作任务是充分考虑与项目相关的各种要素(PTCS),制定项目生命周期各个过程的详细计划,根据不同的阶段对相关人员进行有效管理,成功地推动项目的进行。
  显然,这表明项目经理的工作重心是对各种资源的规划,对项目成员的激励,而不是技术研究。所以,项目经理并不需要对编程技术达到精通的程度。

  (2)项目经理不精通技术(特别是一些阻碍开发的技术细节)将难以服众。
  分析:实际上这个问题可以换一个说法:项目团队中,谁需要向谁证明技术实力?
  按照TSPi(the introductory Team Software Process)的看法,项目小组中有以下角色:小组领导、开发经理、计划经理、质量/生产经理、技术支持经理、软件工程师。由于各种原因,实际中我国软件企业中项目小组典型的角色设定如下:项目经理、系统分析员、高级程序员、程序员、测试经理、测试人员。二者的对应关系可以参考图3。

  分析参考图,答案已经很清楚:项目小组中系统分析员、高级程序员、程序员是把握技术问题的核心人员,他们向项目经理证明其技术实力,表明项目已经获得所需的基本技术资源。

  注:虚线表明其对应关系因企业不同有较大差异

  总之,项目经理的工作重心是项目管理,而不是编程。项目经理对编程技术需要有一定的掌握,但不必要求很高。当然不可否认,精通技术的项目经理可以在管理过程中更好的发挥其影响力。

  其他管理技能。
  譬如:冲突管理、数据分析(PERT分析)、谈判技巧、风险管理、合同管理等。这些技能涉及的范围比较广,对于项目经理而言也不必一开始就全部具备,可以随着项目管理经验的积累逐步掌握,慢慢融会贯通。
  以上对项目经理的定位问题从4个方面进行了讨论。总之,项目经理作为项目PTCS的实际控制者,其具体定位不可避免要受到软件企业的发展阶段、管理理念等诸多因素的影响。不过,随着项目管理理论的日益发展成熟、企业管理的日益规范,项目经理必然愈来愈职业化,其定位也必然日趋一致。

posted on 2006-10-24 23:43 还没想好名 阅读(261) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: