;

简析研发项目经理的管理

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

管理的基础是知道要干什么。开发经理的基础就是要安排好工作计划。管理不好任务计划,就没有时间干别的事。实施的问题提交给你,问你什么时候交东西,你不知道,无法有个明确的答复,实施就会跟你抱怨,我们需要和客户沟通具体的实施时间,你连个什么时候开发出来都不知道,我们怎么去和客户说。

开发经理是IT界最底层的管理人员,开发经理是一类特殊的IT民工,他不仅仅要去做好管理,而且还必须承担一定的开发任务。开发经理一般都是由开发人员晋升而来,开发人员做开发的时间长了,有些固定的思维,做开发经理以后还是把开发的工作放到工作的第一位,认为只要承担起主要的开发任务就是已经做好开发经理了,所以开发经理大多数感觉做在这个位置上感觉很累。几乎都快要崩溃了。   开发经理必须转变思想,管理比开发更重要,必须要抽出时间来做管理。抽出时间来做管理了,有时候感觉不得法,为什么那?因为我们没有清楚的认识到管理到底是什么?

部门经理那天给你安排一任务,问你可以插入到任务计划中吗?你不知道;客户有BUG需要修改,而且很着急,你干不干,你一干,你的任务计划又不知道到什么时候开始,什么时候完成了;那天公司的大领导要部门的软件开发必须跟的上时代的发展,去设计和开发新的产品,你只能说没有时间;而且团队成员不仅仅需要你去帮他们解决问题,而且还需要你来安排具体的开发任务,解决不了问题,开发没有办法进行下去,影响了进度,任务没有安排好,做到那是那,有的人闲死,有的人忙死。

每天被这些事搞的焦头烂额的,被烦也烦死了。整天疲于应付,感觉做管理也不是管理,做开发也不是开发,到头来,开发没有做好,管理也没有做好,真是难为死了。给实施的印象不好,给领导的印象也不好,手下人的时间一长就有想法了,不想干了,感觉没有意思。为什么会出现这种情况那?问题的根源就是在于没有做好计划管理。

管理是沟通。沟通在软件开发是很重要的事,真的很重要很重要。

不沟通,你做的功能很可能就不是人家想要的或者没有满足客户的需求,到头来费事费时。不沟通,团队成员来来回回的改功能,改一次还行,短时间改第二次、第三次,时间一长人就疲惫了,而且知道改功能是因为你没有与客户沟通清楚,很质疑你的领导能力。

不沟通,团队成员没有和你交流技术的机会,团队成员不了解你的想法,你不了解团队成员的想法,时间一长,大家各自为政,各说各的,越来越没有团队意识。还有不沟通,上级领导无法了解你再干什么,领导还以为你干自己的事,建立自己的小世界,培养自己的势力,你要让领导了解你再干什么,没有不怀疑员工的领导,做开发经理,要尽量的获取上级领导的支持,那样你的工作开展起来就没有那么多麻烦。误解,往往是自以后相互了解。

管理是左右逢源。管理要平衡与你打交道的各方面的人的利益,这样的工作才好开展。人都心情不好的时候,人都有烦的时候,人都有累的时候,人是感情的动物,克服内心的感情色彩,不要掺杂到工作中去,不然会让别人对你感觉很差,认为你喜怒无常。

管理是争强团队凝聚力。提高团队凝聚力的方法有很多,最主要的是要让团队的成员工作的开心,有成就感,感觉到自己再成长。

管理不能陷入细节。管理应该从大局着眼,不能老是陷入到一些细节中,特别是开发经理。要是纠结于细节,就没有时间去把握住全局,你把握不了全局,就是给别人一种不可靠地感觉。

管理要放手,管理要让合适的人干合适的工作。管理是要倚重团队里面的人。开发经理一边管理一边开发,就想要承担

起所有的开发任务。因为团队的可能对业务部熟悉,也可能技术不太成熟,肯定没有你开发的快,但是开发经理要给团队成员犯错成长的机会。永远不要低估一个人的潜能,人永远也不知道自己的潜能有多大,不在特定的情况下,人的潜能是激活不出来的。

团队的成员就是要分担开发经理的工作,所以要让团队的成员成长起来,反过来还可以提高团队的凝聚力。你永远不知道你的能力是怎么来的。要善于利用自身的优点去生活,这样你才能左右逢源。管理也永远没有定式,自己有找到适合自己性格的管理,才能做好管理。


最新发布

    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)