;

研发项目经理的职能有哪些

发布时间: 作者:系统管理员 访问量:73

  在研发项目进行中,能否圆满的完成项目目标,关键在于人员,而不是程序和技术。程序和技术只不过是协助人员工作的工具。各大企业, 无论是像海尔这样的国企精英, 还是像伊莱克斯、西门子这样的外企,都将培养高素质的研发项目经理作为企业研发管理的核心工作。在企业的产品研发过程中,项目经理(或称项目负责人)是一个不可或缺的角色。顾名思义,项目经理是项目的管理者。他们是产品研发项目的核心人物,也是项目成功的关键。当技术创新日益得到人们的重视时,产品中研发中的人本因素也变得越来越重要。

  管理学上,对于项目经理的定义不尽相同,但本质上基本一致。一般来说,项目经理是项目组的组织者与决策者,领导项目组成员向项目的目标努力并相应开展项目组活动,同时对项目组的内部事务有一定的决策权力。

  一、研发项目经理与领导

  在组织架构中,还有另外一个类似的职位是领导(本文的领导指的是部门行政职位上的领导)。斯蒂芬?罗宾斯给领导职能的定义是:“每个组织都包含人。于是,指导和协调这些人就成为管理工作,这就是管理的领导(Leading)功能。当管理者激励下属,指导别人的活动选择最有效的沟通渠道,或解决成员之间的冲突时,他们就卷入了领导工作”。也就是说,当管理者拥有对下属的领导(Leading)职能时,他就成为这些下属的领导(Leader)。

  作为拥有领导职能职权的领导和研发项目经理有一定的相同之处,具体表现在:

  1、 都是管理中组织机构的组成部分。

  2、 都有一定的决策权力。

  3、 都负有与权力对应的领导成员开展活动,并引导成员向目标努力的义务。

  但研发项目经理虽然具有某些领导职能,但并不等同于领导。

  1、 目标不同。研发项目经理的目标是领导成员为实现某一个具体的研发项目而努力,所有的计划、组织、领导、控制都围绕研发项目开展;而领导的目标则是领导部门成员,保证部门的职能与企业的目标达到一致。

  2、 管理性质不同。研发项目经理是属于研发管理中项目管理者,所有管理活动都以项目为前提;领导则是组织机构管理层次中的成员,偏重于行政管理,拥有监督项目进度的权力,可以撤换项目经理,一般不能直接干涉项目的进行。

  3、 技能要求不同。在管理者的几个基本技能要求中,研发项目经理重要的是技术技能,必须有专业的技术能力,才能更好地对项目进程进行管理和决策。而领导更重要的是人际技能及概念技能,并不十分需要很强的专业技能,因为领导的本质是领导他人并通过他人来实现组织目标。

  4、 职位稳定性不同。研发项目经理职位随项目的开展而产生,也随着项目的完成而消失。而领导则是相对稳定的,不受项目的影响。

  5、 所领导的下属不同。研发项目经理领导的下属是从各个相关部门抽调而来,并不一定是本部门的员工。同时下属也不是固定不变的,各个部门的人员根据项目内容的特点而集中,不同的项目由不同的人员构成。对于部门领导而言,下属则有一定的稳定性。

  研发项目经理和领导是一个完全不相同的概念。可以用一个比喻来说明他们之间的关系:研发项目经理相当于运动场上的教练。他不仅是场上的指挥,而且是训练比赛战略战术的策划者,教练需要精通业务、知己知彼方能百战不怡。领导则相当于球队的管理者,他们关心投资的效益,他们有权罢免教练,但是无权干预教练的工作。

  然而,许多的企业往往忽略了他们之间的不同,在诸多的产品研发项目中,领导也是项目经理。本人曾在多家企业中从事产品研发工作,对此有深切的体会:对于一般的项目,项目经理是本科室的科长;重要一点的项目,项目第一经理是部门经理,第二经理是科长;对于重大项目,则可能项目经理是技术老总,下面则按照职位排序。于是,可能某个科长是六七个项目的经理,部门经理是三四个重要项目的项目经理,技术老总则是某个重大项目的项目经理。而在实际的项目研发过程中,这些领导很少参与,多数是开开会,有的甚至从来都不曾参与研发。

  我不否认领导有做项目经理的能力,而且实在地说,企业研发部门领导多数都是从项目经理中提拔出来的。领导兼职项目经理的主要原因是一方面领导因为出身于项目经理,因而常常忽略了角色的转变而习惯性地继续项目经理;另一方面是由于企业一般对项目成果重视,取得成果则项目经理名利双收,于是部分领导为了获取名利而自封为项目经理。

  部门领导兼职项目经理,会导致以下缺点:

  1、 影响领导的工作效率。作为部门领导,有很多的职位职能,如部门人员的工作安排、部门间的沟通联络等。兼职做项目经理会造成时间紧迫,无法兼顾。

  2、 影响项目的进度及效率。领导的大部分时间花费在领导职能上或者由于管理项目太多。对于各个项目来说,影响了决策计划的及时性。同时由于领导重要的是人际技能及概念技能,可能会有某些领导的技术技能相对不足,因此会影响项目的成功。

  3、 影响领导的项目监督职能。作为领导,有一项重要的职能是监督职能。这是项目成功与否的保障,也是企业研发考核制度合理实施的保证。领导同时又是研发项目经理,则项目的成功与否相当于依赖领导的自我监督。吴家麟曾说过,自我监督等于没有监督,没有的对项目的监督,研发管理也便失去意义。许多企业研发出的成果依然漏洞百出,和缺少应有的监督职能不能说没有关系。广西合浦一大桥的塌陷,固然是由于贪官的贪婪。但我想,如果他不是项目负责人,而仅仅只是监督项目的执行,则造成灾难不一定会有这么大。

  4、 影响项目成员的积极性。作为项目经理的领导,在具体研发过程中参与一般不会太多,而企业的项目奖励制度一般对项目经理加以重奖,专利、成果等也都是将项目经理作为宣传的目标,这样造成分配的不公平;同时,由于项目经理也掌握着考核权力,因此奖励制度的公正也值得怀疑。长此以往,会降低项目参与人员的创新积极性,多数是敷衍了事。还会造成企业的项目奖励制度流于形式,由激励因素转变成为保健因素。

  二、部门领导的主要任务

  作为领导,应当从宏观的角度来进行研发管理,间接影响项目的实施,正如国家不能具体干预某个企业的活动一样。也只有如此,项目经理才能成为真正的项目经理。在企业研发项目管理过程中,领导的主要任务首先是配合人力资源部门培养高素质的项目经理。项目经理由领导任命,直接对领导负责,领导则通过对项目经理的选择来影响项目的实施。因此,培养高素质的项目经理对于领导进行研发管理工作有着举足轻重的意义。

  其次是监督并考核项目的执行状况,随时了解项目的实施进度,并依据项目要求来考核项目组的目标是否偏离了组织的目标,并将考核记录作为实施项目奖励的依据(注意不是考核每一个项目组成员,是考核整个项目组,项目组内的考核应当由项目经理执行)。

  再次是和外部门协调,满足项目的各种资源要求。项目经理的权力多数是临时授权,且权力受项目的重要程度影响。领导一般比项目经理拥有更多的权力及更强的沟通能力。要想更好地实施项目,领导的支持必不可少。


最新发布

    FreeMarker template error (DEBUG mode; use RETHROW in production!): For "#list" list source: Expected a sequence or collection, but this has evaluated to an extended_hash+string (com.jmis.contentmng.pojo.Content wrapped into f.e.b.StringModel): ==> [in template "jmis/pm/article/detail.html" at line 185, column 13] ---- FTL stack trace ("~" means nesting-related): - Failed at: #list content as chann [in template "jmis/pm/article/detail.html" at line 185, column 6] - Reached through: @cm_content_list count="5" titleLen="... [in template "jmis/pm/article/detail.html" at line 179, column 8] ---- Java stack trace (for programmers): ---- freemarker.core.NonSequenceOrCollectionException: [... Exception message was already printed; see it above ...] at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:285) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:200) at freemarker.core.Environment.visitIteratorBlock(Environment.java:595) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:81) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:67) at freemarker.core.Environment.visit(Environment.java:326) at freemarker.core.Environment.visit(Environment.java:368) at freemarker.core.Environment$NestedElementTemplateDirectiveBody.render(Environment.java:2727) at com.jmis.contentmng.action.directive.abs.TemplateDirectiveUtil.ProcessTemplate(TemplateDirectiveUtil.java:316) at com.jmis.contentmng.action.directive.ContentListDirective.execute(ContentListDirective.java:254) at freemarker.core.Environment.visit(Environment.java:426) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101) at freemarker.core.Environment.visit(Environment.java:326) at freemarker.core.Environment.visit(Environment.java:332) at freemarker.core.Environment.process(Environment.java:305) at freemarker.template.Template.process(Template.java:384) at com.jmis.contentmng.common.web.springmvc.SimpleFreeMarkerView.renderMergedTemplateModel(SimpleFreeMarkerView.java:153) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:209) at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.frame.core.cache.PageEhCacheFilter.doFilter(PageEhCacheFilter.java:102) at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.frame.core.web.filter.XssFilter.doFilter(XssFilter.java:20) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)