技术人员如何转型做项目经理?
程序员客栈去年9月上线远程工作以来共处理了500+项目,经历了各种项目管理状况。本文提到的项目经理管理经验和相关内容会持续更新,希望大家取其精华。先来张图铺垫一下氛围。这是最近在一线的项目经理反馈回来
技术人员如何转型做项目经理?程序员客栈去年9月上线远程工作以来共处理了500+项目,经历了各种项目管理状况。本文提到的项目经理管理经验和相关内容会持续更新,希望大家取其精华。
先来张图铺垫一下氛围。这是最近在一线的项目经理反馈回来的工作情况图,这位朋友多年开发+产品经理经验,来管项目差点被气炸!在项目开发中,程序员发脾气是常态:老子钱不要了,不干了,煞笔~你们感受下
当时看到这张图我有两个反应:一、肯定不是谁都能当项目经理管好项目的,得摸索出经验来才行;二、程序员不是坏人。为什么跟你干活会情绪如此不稳定,甚至表现得恨不能人格分裂呢?
之前我也是程序员出身,做过项目管理。深刻体会到这确实是两个对立的面:
程序员的问题总结起来无非下面三类:
1、需求进度分工问题。总觉得提供的需求不合理、项目给的截止时间太短、这个功能不是该我做的。
2、态度或水平问题。一些情况下对于自己写的代码都是写完求保佑的姿态,留坑太多不愿意改bug,因为可能改一个引入一堆新问题;拒绝他人怀疑自己的实现方法。
3、天生傲娇闹情绪。产品经理煞笔、设计师煞笔、项目经理煞笔、后端煞笔、钱少活多我不干了。
后面来做项目经理了,也总会觉得程序员老是推卸责任、完成得不及时、代码写得不够好。我们确实习惯性的认为别人的工作更加容易,喜欢给人贴标签。就是这样的画面。
其实,项目经理就是针对以上问题做工作,外加协调各种资源保证项目进度和质量。
针对上面需求进度分工问题:项目经理就需要『清晰的规划』『明确的分工』两手抓;态度或水平问题,需要项目经理在技术实现上有深刻认识,不被程序员兜着走, 再是注意挑选一定水平的程序员合作;天生傲娇闹情绪:那项目经理自身态度、心态要好,听的批评挨得骂,一心只想把项目做好。 总之,预防各种问题,把工作做到细处,排除一切困难障碍,让项目准时保证质量交付的就是好项目经理。
一、项目经理具体是干什么的?和产品经理、技术经理等关系区别是怎样的?
由于项目经理只出现在稍微完善的技术团队中,所以对于很多工作时间不长的技术和其他外行朋友来看对于它的工作职责是非常陌生的。项目经理职位最先出现是在工程项目管理中,和项目监理、建造师差不多是一样时候的,我们平时很多时候提到的项目经理并不是在软件开发领域中。在做程序员客栈之初,有朋友提到了项目监理,建议我们可以用第三方专人来管理项目。后来我Google了一下:项目监理工作主要内容是对工程项目的实施过程所进行的监督、检查、协调和评价协调有关单位的工作关系。项目监理的工作不就是我们的项目经理干的吗?只不过项目监理是第三方的并且目前只存在于建设工程行业中。软件开发领域的项目经理最开始从国外微软这样的大公 司演变出来。与Google 的Product Manager有不少相似的地方,很多Product Manager都是从研发转过来的,这就是大致的职位发展历史了。
先来看看现在行业内的相关岗位:
项目经理、产品经理、技术经理、程序经理、研发经理、技术总监、项目管理、产品管理、产品助理、技术合伙人、技术总监、CTO、架构师、技术主管、产品实习生、部门经理、职能经理...
太多了感觉有点写不完... 我从他们本质上整理了一下,大致分下面三类:
项目经理(Project Manager) == 项目管理 项目主管
产品经理(Product Manager) ==产品总监 相关岗位有:产品管理、产品助理、产品实习生
技术经理(Program Manager)== 程序经理 相关岗位有:技术总监、架构师、技术主管、研发经理
技术合伙人、CTO在我理解看来属于另外一类相对高仿职位。他们主要负责技术经理工作,然后统筹协调项目经理和产品经理类的工作,外加部分技术团队组建管理工作。
至于部门经理这是什么鬼?职能经理就是打酱油的行政好吧。所以童鞋们都不要乱取名字了。我总结了一个公式:『技术/产品/项目』 + 『经理/管理/总监/助理/合伙人/实习生/主管』,完全可以自由组合,至于这些人具体做什么事情,我上很多招聘网站一看感觉都差不多的...原谅HR们 都互相抄过去抄过来
好吧,不扯了!来看看这项目经理、产品经理、技术经理三类工作的主要职责和区别,总的来说:
项目经理(Project Manager)项目经理的主要职责是关注如何执行计划以按期保质交付产品。目前为止,我认识的大多数项目经理都是技术背景出身。项目经理与产品经理有很 多类似的地方,同样是对项目或产品负责,但关注点不一样。项目经理的职责在于将目标转化为可量化可实现的项目计划,偏重于执行层面。关键词:项目、排期、 人月。
产品经理(Product Manager)产品经理其实就是对一个产品负根本责任的管理者,主要工作是:行业认知及分析、需求的挖掘和分析、用户体验及产品设计。关键词:需求、用户、产品。
技术经理(Program Manager)。一般会带技术团队,对产品的技术负责。技术经理会侧重技术架构方案的把握,编码质量,团队分工安排,一般是从研发升上来的。 关键词:技术、架构、编码。
一 些公司Program Manager 经常定义为 Product Manager + Project Manager。后来发现很多互联网公司的产品经理也兼任项目经理的职责。在传统软件领域里,产品通常以独立安装包的形式发布,发布间隔从几个月到几年不等,产品和项目具有相同的粒度,开发频率也相同,产品经理兼任项目经理相对比较容易。但是在互联网产品领域,这一套难度就非常大了。互联网服务类产品对网 站代码的局部修改更加频繁,发布周期缩短。所以,许多成熟的互联网公司指派项目经理来控制产品发布,就不需要产品经理兼任项目管理工作。
总之,一个项目,有明确的开始和结束时间,有明确的质量监控和要求,有明确的投入和产出预算,这些是项目管理的核心。不同公司项目经理的工作具体细节会有不同,大体上项目经理的工作都是一致的:规划版本和预算,协调各种内部外部资源,保证项目进度和质量。
二、到底什么时候需要项目经理;有了好几个程序员,不要项目经理又是一种怎样的开发体验?
一阶段:1个程序员
好吧!程序员就听老板口述做开发,想想就可怕。这种情况最好就是老板自己当程序员,否则脾气不好会打架。
二阶段:2-5人的小技术团队
下面三种情况都可以参考
一个技术leader整体负责技术,搞搞后端管服务器;一个创始人当产品经理(兼职); 还有一个设计师或者叫美工。
两个后端,其中一人兼职产品经理; 一个前端(让前端搞搞美工)。
两个iOS,一个写登录注册,一个写地图复杂的列表;一个后端(同时兼职产品经理)。
....
总之情况多种多样啦,能开发出产品来就行。
三阶段:5-10人的技术团队
这时候技术团队已经初步完善,配置了项目经理,程序员客栈的整包项目就是这个标配。
产品经理;设计师;前端;技术负责人(兼后端);iOS、Android工程师;测试工程师;项目经理。
四阶段:10-50人的团队
很 多初创公司不理解为什么有的公司技术团队那么多人。等你过了第三阶段,业务发展过快。突然有一天,运营需要隔三差五的做html活动页,然后前端工程师怒 了。你不得不找一个前端专门做活动,然后这个前端工程师又告诉你他需要一个后端,一下就多了两个人。搜索是你们产品的一个重要功能,技术负责人告诉你现在 搜索不准是由于PHP不合适做搜索,所以你又找了一个Python或Java。就这样技术团队慢慢多了起来...类似人员配置如下
产品经理(2人);前端(2-4人);iOS、Android工程师;后端(3-5人);技术负责人;设计师(2-3人);测试工程师(2人);项目经理(2人)
五阶段:50人以上
怎么可以有这么多技术,讲讲团队扩展思路吧,顺便就知道团队分工了。
思路一、围绕产品线扩张,多加2-5条产品线
这个我觉不具体说了,很简单,多做几个产品
思路二、围绕模块功能扩张,在重要模块铺工程师
CTO (多个项目经理 产品经理 架构师)
前端组(3-5人 一个写登录注册各种逻辑数据交付,一个写首页列表页各种页,一人写html5)
iOS组(3-5人 一个写登录注册各种逻辑数据交付,一个写框架定大局,一个写各种界面,一个写iPhone,一个写iPad)
后端组(3-5人 一个写邮件短信,一个写搜索,一个写爬虫,一个写日志,3个写逻辑)
测试组(3-5人 单元测试,功能测试,各种高级测试)
设计组(3-5人 一个设计品牌,一个设计活动,一个设计移动端,一个做设计web端)
...
思路三、围绕技术业务方向扩张
自动化测试工程师;运维开发工程师;运维监控工程师;nodejs工程师;爬虫工程师;搜索工程师;移动架构师;资深Python工程师;网络工程师...
再来点实习生,你看就是这样技术团队被搞大了:D
技术团队人数在往上走一般的小组织就很难见识了
如果你的程序员告诉你因为App已经下载几百万级了,所以我需要一个十几或几十人的队伍来搞开发,这样后端、iOS才扛得住,所以你信了。顺便补一刀,我有个朋友在给韩寒那个ONE(千万级)当iOS主程,他们技术团队4人:)
好 的产品、技术工具往往是那个一两个人最先做出来的。一个优秀的顶级开发者可以顶10-100个一般水平的程序员。再往后面你会发现技术工作中最重要的根本 不是编码,而是解决方案。现在一般中小团队谁还自己搭建服务器储存图片视频这样的非结构化数据;谁还自己搭个邮件短信系统?在成本人员的限制情况下,拼的 都是解决方案和效率,对语言、框架、库、各种服务的烂熟于心,即使财力人力充足也不宜乱扩人。越到未来互联网开发工作是分工越细的,技术团队人员也要保持 核心精练。
所 以一般的小团队不需要项目经理是合理的,但是10人以上的多条产品线的团队还没有一个专业的项目经理那也并不好弄:项目进度和质量需要保证,多人工作需要 协调,各种资源需要分配,没有项目经理怎么玩?团队人过多不是好事,人多产品开发得好证明架构搭得好,但是效率或许不高。人员精干产品开发得也好才是王 道。
三、优秀的项目经理需要具备哪些品质?
前面已经说过,项目经理的工作就是规划版本和预算,协调各种内部外部资源,保证项目进度和质量。优秀的项目经理就需要从上述几个方面着手把工作做细做好,总结起来有这样三个重点:系统规划,目标驱动,风险意识。
系统规划
所谓系统规划就是要我们对整体项目开发涉及的资金、时间、人员等都有深入的认知理解并且做好充足的准备工作。这里面很多经验认识都取决于项目经理本身的沉淀和他们的数据积累。这也是项目成败的根本因素!
介入管理一个项目首先要做的就是系统的分析和规划,考虑可行性:技术难不难、钱够不够、时间紧不紧、程序员靠谱不、重点问题主要矛盾。然后做出一份合理的、可执行的规划。
举 例来讲:一个项目开始最大的问题往往是老板的蓝图过于宏伟。项目经理就需要抓主要矛盾,构想如何把他们的宏伟蓝图简化到『1.0 版本』其余的事情以后再考虑。对应的考虑到用人层面,项目经理更应该清楚对于一个简化的不复杂的版本,你的程序员才可能更能游刃有余。程序员不需要知道的 细节也就不用写到需求里面了。
总之,项目的成功受到多方面因素的影响,而且各个因素之间还互相影响。项目经理需要能够清楚的认识到影响项目成功的各个要素,以及它们之间关系和矛盾。然后把事情理顺,然后分解目标,逐步实现。
反之,我们也可以从项目经理这些特质看到项目失败的隐患:
抓不住重点。 配合着BOSS搞宏大的目标。随着目标过大,相关配套的人员、管理协调、技术服务成本都在急剧上升。到了具体的某个程序员的层面,如果分配的任何过重或者 过于复杂,超出他们的承受范围,然后就会加剧管理和执行双方的矛盾,如果解决这些矛盾成为团队开发中的常态,那项目就可以不用做了。易简之道天下至理,简 则易从,易从则有功。项目经理的规划工作一定要让基本的执行个体游刃有余,擅长能胜任。复杂了绝对出问题。也就像古代大将打仗做到『地轻马,马轻车,车轻 人,人轻战』就是要选近路,免得马跑太远;车要装载轻,马才跑得快;车要做得好,便于人使用。这样才能打胜仗。
错误的期望。对具体成员的职责没有正确的认识,存在错误的预期,例如:表现在对产品经理苛求检查交付视觉效果。产品原型阶段别期望界面好看,除非是丑的天怒人怨,只要是功能可用,就可以接受了。就像修一所房子,刷漆和装修是最后工作。
目标驱动
目标驱动的重点就是我们工作要一切以目的结果为导向。很多问题我们也不能只侧重关心对错,而更应该关注结果,不能只找证据把问题摆出来,而是要主动去解决问题。
之 前在程序员客栈有这个一个开发项目案例:企业方和程序员发生了纠纷,主要问题是程序员没有高保真还原设计,当然还有其他的问题。然后就吵起来,开始撕了。 最终双方终于冷静下来...然后他们各种写了十几页的word文档,指控都是对方的问题,开始申请程序员客栈仲裁。如果项目经理遇到这样的问题就应该解决 积极问题,而不是加入找证据的队列,争个输赢。
目标驱动我们又可以分为执行力、量化管理、沟通能力来谈。
一、执行力
解决了系统规划的问题,接下来就是按计划组建班子干活了。设想一个场景:大家每天的任务都不能完成;开会不准备;做事拖拖拉拉;一周过去了好像没有干什么;你找到某个程序员说他的工作有完不成的风险,他告诉你不用担心,自己牛着呢后面几下就做了...
上面种种现象都是团队执行力软弱的表现。
一 切的执行力问题,在钱发好的情况下,应该首先从精神层面出发解决。做事拖沓,责任感差,目标意识弱 ...统统都是这个问题导致。 所以要在人的层面做工作,对团队成员不了解熟悉的要了解熟悉,要逐步让程序员承担责任,努力快速走上开发正规。总之,对于团队个体最起码要有契约精神,否 则就可以换人了。
反观到问题根本为什么大家听指挥,积极做事情?出了钱,还是前面工作安排的问题了。擅长能胜任的工作安排,不乱指挥瞎规划。易一则强,易使则功,易知则明,是治之所由生也。
所以团队缺乏执行力也是项目经理需要考虑在内的问题。好的项目经理如同一个发动机,带领整个团队一往无前。
二、量化管理
这部分我归纳了三个关键词:『明确的分工』『清晰的规划』『检查工作』。
在 系统规划和执行力的层面没有问题之后,我们就需要考虑到团队内的每一个个体,保证他们每个人都有明确的分工,清晰的规划。明确的分工就不会吵架,便于奖 惩。清晰的规划就不会迷茫,避免闲得扯淡。然后要协助团队内每一个个体拟定细致的工作里程碑。工作里程碑不需要规划得过久,要确定好这一周每天做什么就 好。同时要组织阶段性的周会,代码view,定期交流,通过这些方向来检查大家工作。有委派无检查,或者拖延检查时间,过去了很久突然想起来了去看看这个功能做没有这都是容易出现问题的做法。
总 之一条,要帮大家的工作规划到细处。某个执行开发的个体不需要想太远,他就应该明确的知道自己这一天该干什么,一个月后大致什么样就行了。而项目经理要清 楚的知道每个人每周做什么,规划要贯穿整个项目周期,一眼想到底。如果一个程序员这一天的工作都执行不下去,你如何相信他一周的目标会完成?如何指望他一 个月后给你胯下的海口目标?所谓空谈误国,实干兴邦。扯淡谈战略的事情就让CEO和他的投资人去搞吧,其他人谁扯淡谁滚蛋。
如果出现某个程序员不制定规划,定了规划不按规划办事,这些都是非常危险的信号,要及时纠正。
本 质上,作为团队领导,如果一个项目经理自己都规划不明,职责不清,一切不按自己定的规划前进,抓不住『明确的分工』『清晰的规划』『检查工作』这几个重 点,那也别想程序员能进入状态了。凡为人上者,法术明而赏罚必者,虽无言语而势自治;法术不明而赏罚不必者,虽日号令,然势自乱。看项目经理的工作就能看 出团队内部的治乱之势了。
相关失败现象例子:
项 目经理管理能力差。任才使能所以济物,表现在该任用的人才过于干涉,该使用的能人又充分委派。比如:自己天天画原型抢产品经理的活增加沟通成本。不改放的 放,不该抓的抓。不该委派的事情又委派出去了,不检查工作。规划落不到细处,规划了执行不下来。这是都是打乱仗的做法。累死把事情做败活该。
三、沟通能力
沟 通能力的根本就是一种有商量的做事方法,一种站在他人角度考虑问题的思维。万事万物,正己化人者顺;释己教人者逆。项目经理的工作方法不应该是命令、指 挥、专断的。而应该是协商、统筹、不断从自身改进的。一个规划要协商,一场会议要协商,多人办事要商量。要让大家团结在你的周围来,围绕目标前进。
风险意识
项目管理过程中,意外实在是太多了。如果一个项目经理缺乏风险意识,那他就会不断陷入各种风险障碍项目失败的困难之中。表现在形式上,那就是项目经理不断在处理纠纷,团队涣散争吵,不断在给大家擦屁股,一天累死了项目还是出问题。根本上讲这是项目经理自己水平的问题。
胜可为不可知,长期的胜利一定是建立在不断排除失败风险之上的。最高明的医生会把病在无形时给治了。不好的医生只有等病搞大了,他们才会治病,还治不好。
项目经理风险意识高,通过经验的积累把项目的关键风险识别出来管理好,项目是不应该失败的。优秀的项目经理都有非常深的风险意识,项目在他们手中管理得井井有条,事繁但不乱不急,能够把各种问题从事后补救转变到事前预防的状态。
四、开发人力分工的本质 从更高点看软件开发的侧重点
在技术外行人看来所有的程序员都是一样写代码的。但是深入之后才知道不同程序员他们具体负责的职责却如此千差万别。写PHP的不一定擅长前端,写iOS的不懂Java,写C++的搞不好JavaScript。
我们先来看看技术语言的演变发展。
总 体来说行业内是先有汇编,再有C、C++、Java、PHP这些语言。然后它们不断升级推动软件系统极大丰富。后面有了各种系统产品,浏览器等。拿浏览器 举例,围绕这个方向又多了JavaScript、HTML,CSS...各种技术。基于JavaScript 又有了基于JavaScript的各种框架,像jQuery。
表 现在用户接触的层面就是日益丰富的各种软件产品。随之而来的是不同技术开发需求旺盛:网站建设,做APP,微信开发。配套的技术岗位也应运而生。就像之前 是没有iOS的,苹果推出iPhone然后iOS工程师就遍地开花了。技术岗位有生命周期,冷门的技术也在逐渐淡出人们的视野,现在市场上很少有微软当年 热推的.NET了,类似的也包括大学教的VB。
总之,大公司面临复杂的实践挑战,他们不断创新创造技术、管理手段方式。Facebook最开始用的是PHP,然后研发了HipHop。Facebook、Google在部分实践中使用MySQL来存储数据,同样他们对MySQL也做了很多更新修改,这个可以在Google Code中找到。技术改造主要围绕在可伸缩性和可用性两点,其次考虑性能和成本。Google造出了Android ,Apple推出iOS,现在甚至微信也在形成一个平台级的软件系统,很多开发需求都围绕微信来做了。总之一切都在变化发展,技术语言也有生命周期,技术演化升级不断造就新职位。产品开发人力分工的本质和相关职位也都是随着技术发展而不断演变。
程序员客栈深处行业之中,我们非常欣喜的看到:技术职位分工越来越细,单一的技术服务平台也在细分,成为市场独角兽:服务器容器、非结构化数据存储、推送、邮件短信;各种SAAS产品在打入不同行业解决互联网+企业面临的EPR、财务、行政、报销、仓储各种问题。
虽然互联网已经充分发展,电脑、智能手机已经走进千家万户,新产品技术服务也在不断推出,但遗憾的是互联网技术想要惠及各行各业还远远没有实现:项目开发管理的最佳模式还很需要摸索;定制化软件外包市场混乱不堪;行业标准还需要强有力的建立...
回观语言的发展演进,领域中最高级的就是用语言和框架来约束规范使用者的行为,配套相关帮助文档、库...促进社会化分布式的生产。一层层的构建开发领域丰富的生态。
对 于程序员客栈,我们定位为程序员的经济人,同时想成为互联网的整个人力、技术的骨架工程。我们目前肯定是没有能力从生态底层设计出一类语言工具,让人人都 是程序员,生产出更多更好的软件产品,满足各种生产生活需求。但是我们可以顺势而为,让所有的热门技术在人的层面产生技术沉淀,助力所有行业变革,推动社 会化协同的大生产模式。
现在面临的课题就是如何推动同时并行在程序员客栈平台开发的几十个项目;协同项目经理+ 成千上万的签约中高仿程序员,团结他们对外输出极具价值的服务。
相信解决这个平台级的项目管理难题,我们又会摸索出最先进的管理和工作模式。我们构想的本质是:在人的层面增加产品复用率,深挖一类人开放一类标准服务。这 里满是机会,满是市场。我们坚信,只有走过这一道平台级项目管理的坎,社会化协同的开发大生产模式才会诞生。那时开发成本会不断降低、技术质量也会突飞猛 进。平台+优质个体会取代一大部分小公司+雇员。不同公司之间无论大小也会出现更多数据、技术和人才的共享。
至于考证
在本文生产的过程中,发现一些童鞋在关注考项目经理从业证书。在网上搜索到了其实国家机构早已经对项目经理水平制定了标准。
计 算机技术与软件专业技术资格(水平)考试是职称考试,简称软考。软考的考试类别包含系统集成项目经理(系统集成项目管理工程师、信息系统项目管理师)、网 络工程师考试等各类与计算机软件相关联的认证考试。该考试由人保部和工信部联合举办,全国统考,一年2次。其中系统集成项目管理工程师考试、信息系统项目 管理师在软考中又叫软考项目经理考试。该证书既是个人职称评审的依据。
由于身边几乎没有持证程序员和项目经理:我很好奇去看了一下这里面『信息系统项目管理师』类似的知识体系。基本都是以堆积空、大、不切实际的知识理论为主。 在知乎上了解到一般都是旅游管理这样的专业大学生去考。考过你也不知道是项目管理干什么的,具体怎么干好。目前国企都不需要了!
学习还是要练习实践才能出真知,所以自己都开发不了一个整体的软件产品,即使有各种证,有什么资格、有什么理由能当好项目经理。最好项目经理从业证书就是你 优秀的工作经历和产品。程序员客栈100+项目管理经验挡各种顶级证书了。同理关于国外的PMP,大家可以去参考Quora。
先来张图铺垫一下氛围。这是最近在一线的项目经理反馈回来的工作情况图,这位朋友多年开发+产品经理经验,来管项目差点被气炸!在项目开发中,程序员发脾气是常态:老子钱不要了,不干了,煞笔~你们感受下
当时看到这张图我有两个反应:一、肯定不是谁都能当项目经理管好项目的,得摸索出经验来才行;二、程序员不是坏人。为什么跟你干活会情绪如此不稳定,甚至表现得恨不能人格分裂呢?
之前我也是程序员出身,做过项目管理。深刻体会到这确实是两个对立的面:
程序员的问题总结起来无非下面三类:
1、需求进度分工问题。总觉得提供的需求不合理、项目给的截止时间太短、这个功能不是该我做的。
2、态度或水平问题。一些情况下对于自己写的代码都是写完求保佑的姿态,留坑太多不愿意改bug,因为可能改一个引入一堆新问题;拒绝他人怀疑自己的实现方法。
3、天生傲娇闹情绪。产品经理煞笔、设计师煞笔、项目经理煞笔、后端煞笔、钱少活多我不干了。
后面来做项目经理了,也总会觉得程序员老是推卸责任、完成得不及时、代码写得不够好。我们确实习惯性的认为别人的工作更加容易,喜欢给人贴标签。就是这样的画面。
其实,项目经理就是针对以上问题做工作,外加协调各种资源保证项目进度和质量。
针对上面需求进度分工问题:项目经理就需要『清晰的规划』『明确的分工』两手抓;态度或水平问题,需要项目经理在技术实现上有深刻认识,不被程序员兜着走, 再是注意挑选一定水平的程序员合作;天生傲娇闹情绪:那项目经理自身态度、心态要好,听的批评挨得骂,一心只想把项目做好。 总之,预防各种问题,把工作做到细处,排除一切困难障碍,让项目准时保证质量交付的就是好项目经理。
一、项目经理具体是干什么的?和产品经理、技术经理等关系区别是怎样的?
由于项目经理只出现在稍微完善的技术团队中,所以对于很多工作时间不长的技术和其他外行朋友来看对于它的工作职责是非常陌生的。项目经理职位最先出现是在工程项目管理中,和项目监理、建造师差不多是一样时候的,我们平时很多时候提到的项目经理并不是在软件开发领域中。在做程序员客栈之初,有朋友提到了项目监理,建议我们可以用第三方专人来管理项目。后来我Google了一下:项目监理工作主要内容是对工程项目的实施过程所进行的监督、检查、协调和评价协调有关单位的工作关系。项目监理的工作不就是我们的项目经理干的吗?只不过项目监理是第三方的并且目前只存在于建设工程行业中。软件开发领域的项目经理最开始从国外微软这样的大公 司演变出来。与Google 的Product Manager有不少相似的地方,很多Product Manager都是从研发转过来的,这就是大致的职位发展历史了。
先来看看现在行业内的相关岗位:
项目经理、产品经理、技术经理、程序经理、研发经理、技术总监、项目管理、产品管理、产品助理、技术合伙人、技术总监、CTO、架构师、技术主管、产品实习生、部门经理、职能经理...
太多了感觉有点写不完... 我从他们本质上整理了一下,大致分下面三类:
项目经理(Project Manager) == 项目管理 项目主管
产品经理(Product Manager) ==产品总监 相关岗位有:产品管理、产品助理、产品实习生
技术经理(Program Manager)== 程序经理 相关岗位有:技术总监、架构师、技术主管、研发经理
技术合伙人、CTO在我理解看来属于另外一类相对高仿职位。他们主要负责技术经理工作,然后统筹协调项目经理和产品经理类的工作,外加部分技术团队组建管理工作。
至于部门经理这是什么鬼?职能经理就是打酱油的行政好吧。所以童鞋们都不要乱取名字了。我总结了一个公式:『技术/产品/项目』 + 『经理/管理/总监/助理/合伙人/实习生/主管』,完全可以自由组合,至于这些人具体做什么事情,我上很多招聘网站一看感觉都差不多的...原谅HR们 都互相抄过去抄过来
好吧,不扯了!来看看这项目经理、产品经理、技术经理三类工作的主要职责和区别,总的来说:
项目经理(Project Manager)项目经理的主要职责是关注如何执行计划以按期保质交付产品。目前为止,我认识的大多数项目经理都是技术背景出身。项目经理与产品经理有很 多类似的地方,同样是对项目或产品负责,但关注点不一样。项目经理的职责在于将目标转化为可量化可实现的项目计划,偏重于执行层面。关键词:项目、排期、 人月。
产品经理(Product Manager)产品经理其实就是对一个产品负根本责任的管理者,主要工作是:行业认知及分析、需求的挖掘和分析、用户体验及产品设计。关键词:需求、用户、产品。
技术经理(Program Manager)。一般会带技术团队,对产品的技术负责。技术经理会侧重技术架构方案的把握,编码质量,团队分工安排,一般是从研发升上来的。 关键词:技术、架构、编码。
一 些公司Program Manager 经常定义为 Product Manager + Project Manager。后来发现很多互联网公司的产品经理也兼任项目经理的职责。在传统软件领域里,产品通常以独立安装包的形式发布,发布间隔从几个月到几年不等,产品和项目具有相同的粒度,开发频率也相同,产品经理兼任项目经理相对比较容易。但是在互联网产品领域,这一套难度就非常大了。互联网服务类产品对网 站代码的局部修改更加频繁,发布周期缩短。所以,许多成熟的互联网公司指派项目经理来控制产品发布,就不需要产品经理兼任项目管理工作。
总之,一个项目,有明确的开始和结束时间,有明确的质量监控和要求,有明确的投入和产出预算,这些是项目管理的核心。不同公司项目经理的工作具体细节会有不同,大体上项目经理的工作都是一致的:规划版本和预算,协调各种内部外部资源,保证项目进度和质量。
二、到底什么时候需要项目经理;有了好几个程序员,不要项目经理又是一种怎样的开发体验?
一阶段:1个程序员
好吧!程序员就听老板口述做开发,想想就可怕。这种情况最好就是老板自己当程序员,否则脾气不好会打架。
二阶段:2-5人的小技术团队
下面三种情况都可以参考
一个技术leader整体负责技术,搞搞后端管服务器;一个创始人当产品经理(兼职); 还有一个设计师或者叫美工。
两个后端,其中一人兼职产品经理; 一个前端(让前端搞搞美工)。
两个iOS,一个写登录注册,一个写地图复杂的列表;一个后端(同时兼职产品经理)。
....
总之情况多种多样啦,能开发出产品来就行。
三阶段:5-10人的技术团队
这时候技术团队已经初步完善,配置了项目经理,程序员客栈的整包项目就是这个标配。
产品经理;设计师;前端;技术负责人(兼后端);iOS、Android工程师;测试工程师;项目经理。
四阶段:10-50人的团队
很 多初创公司不理解为什么有的公司技术团队那么多人。等你过了第三阶段,业务发展过快。突然有一天,运营需要隔三差五的做html活动页,然后前端工程师怒 了。你不得不找一个前端专门做活动,然后这个前端工程师又告诉你他需要一个后端,一下就多了两个人。搜索是你们产品的一个重要功能,技术负责人告诉你现在 搜索不准是由于PHP不合适做搜索,所以你又找了一个Python或Java。就这样技术团队慢慢多了起来...类似人员配置如下
产品经理(2人);前端(2-4人);iOS、Android工程师;后端(3-5人);技术负责人;设计师(2-3人);测试工程师(2人);项目经理(2人)
五阶段:50人以上
怎么可以有这么多技术,讲讲团队扩展思路吧,顺便就知道团队分工了。
思路一、围绕产品线扩张,多加2-5条产品线
这个我觉不具体说了,很简单,多做几个产品
思路二、围绕模块功能扩张,在重要模块铺工程师
CTO (多个项目经理 产品经理 架构师)
前端组(3-5人 一个写登录注册各种逻辑数据交付,一个写首页列表页各种页,一人写html5)
iOS组(3-5人 一个写登录注册各种逻辑数据交付,一个写框架定大局,一个写各种界面,一个写iPhone,一个写iPad)
后端组(3-5人 一个写邮件短信,一个写搜索,一个写爬虫,一个写日志,3个写逻辑)
测试组(3-5人 单元测试,功能测试,各种高级测试)
设计组(3-5人 一个设计品牌,一个设计活动,一个设计移动端,一个做设计web端)
...
思路三、围绕技术业务方向扩张
自动化测试工程师;运维开发工程师;运维监控工程师;nodejs工程师;爬虫工程师;搜索工程师;移动架构师;资深Python工程师;网络工程师...
再来点实习生,你看就是这样技术团队被搞大了:D
技术团队人数在往上走一般的小组织就很难见识了
如果你的程序员告诉你因为App已经下载几百万级了,所以我需要一个十几或几十人的队伍来搞开发,这样后端、iOS才扛得住,所以你信了。顺便补一刀,我有个朋友在给韩寒那个ONE(千万级)当iOS主程,他们技术团队4人:)
好 的产品、技术工具往往是那个一两个人最先做出来的。一个优秀的顶级开发者可以顶10-100个一般水平的程序员。再往后面你会发现技术工作中最重要的根本 不是编码,而是解决方案。现在一般中小团队谁还自己搭建服务器储存图片视频这样的非结构化数据;谁还自己搭个邮件短信系统?在成本人员的限制情况下,拼的 都是解决方案和效率,对语言、框架、库、各种服务的烂熟于心,即使财力人力充足也不宜乱扩人。越到未来互联网开发工作是分工越细的,技术团队人员也要保持 核心精练。
所 以一般的小团队不需要项目经理是合理的,但是10人以上的多条产品线的团队还没有一个专业的项目经理那也并不好弄:项目进度和质量需要保证,多人工作需要 协调,各种资源需要分配,没有项目经理怎么玩?团队人过多不是好事,人多产品开发得好证明架构搭得好,但是效率或许不高。人员精干产品开发得也好才是王 道。
三、优秀的项目经理需要具备哪些品质?
前面已经说过,项目经理的工作就是规划版本和预算,协调各种内部外部资源,保证项目进度和质量。优秀的项目经理就需要从上述几个方面着手把工作做细做好,总结起来有这样三个重点:系统规划,目标驱动,风险意识。
系统规划
所谓系统规划就是要我们对整体项目开发涉及的资金、时间、人员等都有深入的认知理解并且做好充足的准备工作。这里面很多经验认识都取决于项目经理本身的沉淀和他们的数据积累。这也是项目成败的根本因素!
介入管理一个项目首先要做的就是系统的分析和规划,考虑可行性:技术难不难、钱够不够、时间紧不紧、程序员靠谱不、重点问题主要矛盾。然后做出一份合理的、可执行的规划。
举 例来讲:一个项目开始最大的问题往往是老板的蓝图过于宏伟。项目经理就需要抓主要矛盾,构想如何把他们的宏伟蓝图简化到『1.0 版本』其余的事情以后再考虑。对应的考虑到用人层面,项目经理更应该清楚对于一个简化的不复杂的版本,你的程序员才可能更能游刃有余。程序员不需要知道的 细节也就不用写到需求里面了。
总之,项目的成功受到多方面因素的影响,而且各个因素之间还互相影响。项目经理需要能够清楚的认识到影响项目成功的各个要素,以及它们之间关系和矛盾。然后把事情理顺,然后分解目标,逐步实现。
反之,我们也可以从项目经理这些特质看到项目失败的隐患:
抓不住重点。 配合着BOSS搞宏大的目标。随着目标过大,相关配套的人员、管理协调、技术服务成本都在急剧上升。到了具体的某个程序员的层面,如果分配的任何过重或者 过于复杂,超出他们的承受范围,然后就会加剧管理和执行双方的矛盾,如果解决这些矛盾成为团队开发中的常态,那项目就可以不用做了。易简之道天下至理,简 则易从,易从则有功。项目经理的规划工作一定要让基本的执行个体游刃有余,擅长能胜任。复杂了绝对出问题。也就像古代大将打仗做到『地轻马,马轻车,车轻 人,人轻战』就是要选近路,免得马跑太远;车要装载轻,马才跑得快;车要做得好,便于人使用。这样才能打胜仗。
错误的期望。对具体成员的职责没有正确的认识,存在错误的预期,例如:表现在对产品经理苛求检查交付视觉效果。产品原型阶段别期望界面好看,除非是丑的天怒人怨,只要是功能可用,就可以接受了。就像修一所房子,刷漆和装修是最后工作。
目标驱动
目标驱动的重点就是我们工作要一切以目的结果为导向。很多问题我们也不能只侧重关心对错,而更应该关注结果,不能只找证据把问题摆出来,而是要主动去解决问题。
之 前在程序员客栈有这个一个开发项目案例:企业方和程序员发生了纠纷,主要问题是程序员没有高保真还原设计,当然还有其他的问题。然后就吵起来,开始撕了。 最终双方终于冷静下来...然后他们各种写了十几页的word文档,指控都是对方的问题,开始申请程序员客栈仲裁。如果项目经理遇到这样的问题就应该解决 积极问题,而不是加入找证据的队列,争个输赢。
目标驱动我们又可以分为执行力、量化管理、沟通能力来谈。
一、执行力
解决了系统规划的问题,接下来就是按计划组建班子干活了。设想一个场景:大家每天的任务都不能完成;开会不准备;做事拖拖拉拉;一周过去了好像没有干什么;你找到某个程序员说他的工作有完不成的风险,他告诉你不用担心,自己牛着呢后面几下就做了...
上面种种现象都是团队执行力软弱的表现。
一 切的执行力问题,在钱发好的情况下,应该首先从精神层面出发解决。做事拖沓,责任感差,目标意识弱 ...统统都是这个问题导致。 所以要在人的层面做工作,对团队成员不了解熟悉的要了解熟悉,要逐步让程序员承担责任,努力快速走上开发正规。总之,对于团队个体最起码要有契约精神,否 则就可以换人了。
反观到问题根本为什么大家听指挥,积极做事情?出了钱,还是前面工作安排的问题了。擅长能胜任的工作安排,不乱指挥瞎规划。易一则强,易使则功,易知则明,是治之所由生也。
所以团队缺乏执行力也是项目经理需要考虑在内的问题。好的项目经理如同一个发动机,带领整个团队一往无前。
二、量化管理
这部分我归纳了三个关键词:『明确的分工』『清晰的规划』『检查工作』。
在 系统规划和执行力的层面没有问题之后,我们就需要考虑到团队内的每一个个体,保证他们每个人都有明确的分工,清晰的规划。明确的分工就不会吵架,便于奖 惩。清晰的规划就不会迷茫,避免闲得扯淡。然后要协助团队内每一个个体拟定细致的工作里程碑。工作里程碑不需要规划得过久,要确定好这一周每天做什么就 好。同时要组织阶段性的周会,代码view,定期交流,通过这些方向来检查大家工作。有委派无检查,或者拖延检查时间,过去了很久突然想起来了去看看这个功能做没有这都是容易出现问题的做法。
总 之一条,要帮大家的工作规划到细处。某个执行开发的个体不需要想太远,他就应该明确的知道自己这一天该干什么,一个月后大致什么样就行了。而项目经理要清 楚的知道每个人每周做什么,规划要贯穿整个项目周期,一眼想到底。如果一个程序员这一天的工作都执行不下去,你如何相信他一周的目标会完成?如何指望他一 个月后给你胯下的海口目标?所谓空谈误国,实干兴邦。扯淡谈战略的事情就让CEO和他的投资人去搞吧,其他人谁扯淡谁滚蛋。
如果出现某个程序员不制定规划,定了规划不按规划办事,这些都是非常危险的信号,要及时纠正。
本 质上,作为团队领导,如果一个项目经理自己都规划不明,职责不清,一切不按自己定的规划前进,抓不住『明确的分工』『清晰的规划』『检查工作』这几个重 点,那也别想程序员能进入状态了。凡为人上者,法术明而赏罚必者,虽无言语而势自治;法术不明而赏罚不必者,虽日号令,然势自乱。看项目经理的工作就能看 出团队内部的治乱之势了。
相关失败现象例子:
项 目经理管理能力差。任才使能所以济物,表现在该任用的人才过于干涉,该使用的能人又充分委派。比如:自己天天画原型抢产品经理的活增加沟通成本。不改放的 放,不该抓的抓。不该委派的事情又委派出去了,不检查工作。规划落不到细处,规划了执行不下来。这是都是打乱仗的做法。累死把事情做败活该。
三、沟通能力
沟 通能力的根本就是一种有商量的做事方法,一种站在他人角度考虑问题的思维。万事万物,正己化人者顺;释己教人者逆。项目经理的工作方法不应该是命令、指 挥、专断的。而应该是协商、统筹、不断从自身改进的。一个规划要协商,一场会议要协商,多人办事要商量。要让大家团结在你的周围来,围绕目标前进。
风险意识
项目管理过程中,意外实在是太多了。如果一个项目经理缺乏风险意识,那他就会不断陷入各种风险障碍项目失败的困难之中。表现在形式上,那就是项目经理不断在处理纠纷,团队涣散争吵,不断在给大家擦屁股,一天累死了项目还是出问题。根本上讲这是项目经理自己水平的问题。
胜可为不可知,长期的胜利一定是建立在不断排除失败风险之上的。最高明的医生会把病在无形时给治了。不好的医生只有等病搞大了,他们才会治病,还治不好。
项目经理风险意识高,通过经验的积累把项目的关键风险识别出来管理好,项目是不应该失败的。优秀的项目经理都有非常深的风险意识,项目在他们手中管理得井井有条,事繁但不乱不急,能够把各种问题从事后补救转变到事前预防的状态。
四、开发人力分工的本质 从更高点看软件开发的侧重点
在技术外行人看来所有的程序员都是一样写代码的。但是深入之后才知道不同程序员他们具体负责的职责却如此千差万别。写PHP的不一定擅长前端,写iOS的不懂Java,写C++的搞不好JavaScript。
我们先来看看技术语言的演变发展。
总 体来说行业内是先有汇编,再有C、C++、Java、PHP这些语言。然后它们不断升级推动软件系统极大丰富。后面有了各种系统产品,浏览器等。拿浏览器 举例,围绕这个方向又多了JavaScript、HTML,CSS...各种技术。基于JavaScript 又有了基于JavaScript的各种框架,像jQuery。
表 现在用户接触的层面就是日益丰富的各种软件产品。随之而来的是不同技术开发需求旺盛:网站建设,做APP,微信开发。配套的技术岗位也应运而生。就像之前 是没有iOS的,苹果推出iPhone然后iOS工程师就遍地开花了。技术岗位有生命周期,冷门的技术也在逐渐淡出人们的视野,现在市场上很少有微软当年 热推的.NET了,类似的也包括大学教的VB。
总之,大公司面临复杂的实践挑战,他们不断创新创造技术、管理手段方式。Facebook最开始用的是PHP,然后研发了HipHop。Facebook、Google在部分实践中使用MySQL来存储数据,同样他们对MySQL也做了很多更新修改,这个可以在Google Code中找到。技术改造主要围绕在可伸缩性和可用性两点,其次考虑性能和成本。Google造出了Android ,Apple推出iOS,现在甚至微信也在形成一个平台级的软件系统,很多开发需求都围绕微信来做了。总之一切都在变化发展,技术语言也有生命周期,技术演化升级不断造就新职位。产品开发人力分工的本质和相关职位也都是随着技术发展而不断演变。
程序员客栈深处行业之中,我们非常欣喜的看到:技术职位分工越来越细,单一的技术服务平台也在细分,成为市场独角兽:服务器容器、非结构化数据存储、推送、邮件短信;各种SAAS产品在打入不同行业解决互联网+企业面临的EPR、财务、行政、报销、仓储各种问题。
虽然互联网已经充分发展,电脑、智能手机已经走进千家万户,新产品技术服务也在不断推出,但遗憾的是互联网技术想要惠及各行各业还远远没有实现:项目开发管理的最佳模式还很需要摸索;定制化软件外包市场混乱不堪;行业标准还需要强有力的建立...
回观语言的发展演进,领域中最高级的就是用语言和框架来约束规范使用者的行为,配套相关帮助文档、库...促进社会化分布式的生产。一层层的构建开发领域丰富的生态。
对 于程序员客栈,我们定位为程序员的经济人,同时想成为互联网的整个人力、技术的骨架工程。我们目前肯定是没有能力从生态底层设计出一类语言工具,让人人都 是程序员,生产出更多更好的软件产品,满足各种生产生活需求。但是我们可以顺势而为,让所有的热门技术在人的层面产生技术沉淀,助力所有行业变革,推动社 会化协同的大生产模式。
现在面临的课题就是如何推动同时并行在程序员客栈平台开发的几十个项目;协同项目经理+ 成千上万的签约中高仿程序员,团结他们对外输出极具价值的服务。
相信解决这个平台级的项目管理难题,我们又会摸索出最先进的管理和工作模式。我们构想的本质是:在人的层面增加产品复用率,深挖一类人开放一类标准服务。这 里满是机会,满是市场。我们坚信,只有走过这一道平台级项目管理的坎,社会化协同的开发大生产模式才会诞生。那时开发成本会不断降低、技术质量也会突飞猛 进。平台+优质个体会取代一大部分小公司+雇员。不同公司之间无论大小也会出现更多数据、技术和人才的共享。
至于考证
在本文生产的过程中,发现一些童鞋在关注考项目经理从业证书。在网上搜索到了其实国家机构早已经对项目经理水平制定了标准。
计 算机技术与软件专业技术资格(水平)考试是职称考试,简称软考。软考的考试类别包含系统集成项目经理(系统集成项目管理工程师、信息系统项目管理师)、网 络工程师考试等各类与计算机软件相关联的认证考试。该考试由人保部和工信部联合举办,全国统考,一年2次。其中系统集成项目管理工程师考试、信息系统项目 管理师在软考中又叫软考项目经理考试。该证书既是个人职称评审的依据。
由于身边几乎没有持证程序员和项目经理:我很好奇去看了一下这里面『信息系统项目管理师』类似的知识体系。基本都是以堆积空、大、不切实际的知识理论为主。 在知乎上了解到一般都是旅游管理这样的专业大学生去考。考过你也不知道是项目管理干什么的,具体怎么干好。目前国企都不需要了!
学习还是要练习实践才能出真知,所以自己都开发不了一个整体的软件产品,即使有各种证,有什么资格、有什么理由能当好项目经理。最好项目经理从业证书就是你 优秀的工作经历和产品。程序员客栈100+项目管理经验挡各种顶级证书了。同理关于国外的PMP,大家可以去参考Quora。
责任编辑: