软件开发:项目经理比你想像的更重要!
共 3017字,需浏览 7分钟
·
2016-08-23 15:58
近几年,全世界对于互联网创业的风潮越来越盛,以软件公司而言,产品经理(Product Manager)、工程师、设计师和运营人员都是不可或缺的要角,相较之下,项目经理(Project Manager)似乎就不是必要的存在,这篇文章主要探讨的是,到底一个好的项目经理的重要性在哪?
之前有人把产品经理和项目经理做过比较:PM:Project Manager v.s. Product Manager,每次别人跑来找我讨论PM工作的时候,我都会反问他们比较想做哪份工作——Project Manager还是Product Manager?
通常我都会得到一样的答案:
“恩,项目经理吧,因为感觉学到比较多,而且感觉比较重要一些。”
这里必须要强调的是如果各位觉得项目经理是产品经理的老板的话,那我想这篇文章可以先跳过了,因为这篇文章,不是说给上下级管理的思维的人看的。
项目经理与产品经理的定位
在创业公司里面,讲求角色责任与扁平化管理,项目经理跟产品经理其实是有共同存在的必要的,项目经理讲究的是规划产品策略与质量方向,技术其实只是其中一环,而产品经理讲究的是技术方向的确认与如何执行。
很多人理解成项目经理跟产品经理是主管与下属的关系,其实他们专注的面向不同,项目经理大多是整理的项目管理以及产品质量和过程化开发把控,而产品经理更多的是面向程序员、设计师等等各个环节的开发者,良好的产品开发仰仗的是项目经理跟产品经理完美配合。
为什么不把两个角色放在同一个人身上?
很多创业公司碍于公司人手的问题,会用同一个人来做项目经理与产品经理的综合体,我必须说,这只能是救急的方法,绝对不能是常态,因为项目经理跟产品经理有一个先天本质上的不同,项目经理需要顾虑的,是客户的沟通,需求的归纳,甚至进行需求的可行性分析,以及整体的项目流程和质量把控,考验的更多的是一个人的综合实力。
而产品经理又不一样了,产品经理需要梳理整个产品的功能点,根据用户增减功能点需求,并且确保整个开发团队迭代任务的顺利完成,所以需要做产品的原型设计和用户情景分析来明确需求定义,如果这些都不懂的产品经理,会被程序员打死,你以为我在开玩笑吗?
很多时候好的项目经理通常都是和产品经理吵完架以后,才会列出明确的开发需求给程序员开发团队去做,如果一个人同时兼职项目经理和产品经理两个职位,很容易人格分裂,太偏向技术思考容易忽略很多用户体验,太偏向用户体验提出不合理的想法需求又会被程序开发团队讨厌,总之经常两边都不讨好。
怎么做好一个项目经理该做的工作呢?
作为一个好项目经理的不二心法当然就是:让工程师可以专心快乐去写代码。不过,在问这问题之前,我们还是先来来看看现在软件开发的状况,现在的软件产品开发,讲究的是拼凑而非原创,用很多的开源产品或是第三方的服务就可以做出产品,所以快速的构架通常会比较讨喜一些,这也是为什么Agile的理念在近几年发展得比Waterfall更为热烈的主要原因。
所以作为一个好的项目经理,要做的可说是包山包海,因为需求统筹完后,要沟通产品经理做原型设计跟用户情景分析,做完这两者后,整理开发需求和功能点开发计划,然后再分派任务给程序员,这时候可能还要兼着做Scrum Master,然后程序员开发完还要兼着做产品测试,最后做上架的管理,这些都是项目经理一条龙管理完成的。之后项目经理最重要的工作,其实是把所有过程文件化。
很多时候我跟程序员朋友在聊,他们都说在他们公司这些事情都是程序员在做,而没有请专业的项目经理负责。但事实上,如果这些事情都是程序员做的话,只会有两个结果:浪费程序员的专业写代码技能、很多环节都会出问题,例如文件写的很烂。
怎么做到良好的风险管理?
很多人问我说项目经理是否需要具有超强的技术能力?其实不一定,虽然好的项目经理在开Ticket的时候甚至可以把一些演算的逻辑都写进去,还可以做Code Review,不过这种人超级难找,所以能够把上述的事情做完的项目经理,已经算是相当厉害。
我认为真正好的开发管理,是必须要分工明确,也就是认知项目经理其实是一门专业。而项目经理的专业主要在于做好项目的风险管理。什么是风险管理?就是当程序员跑不见人或是项目开发出问题的时候,项目经理必须要有能力让伤害减到最低。很多人也许无法真正体会风险管理的重要,但是只要被程序员坑过一次的创业者,看到这段恐怕是会痛哭流涕的。
风险管理的目的,最大的目的是让每一段工作可以阶段性的「保留结果」或「告一段落」。举个例子来说,把API规格定好后,交给程序员去做,如果原先的程序员功力很差,写的代码构架不好,这时候项目经理能做的事情便是,保留原有API规格,把可用的API拿来用,再请一组新的程序员去改进那些写不好的API,然后再逐个Review API,这样的一个淘汰程序员的过程,既不会影响太多原有的开发进程,也不用怕程序员一个API做不好,就要全部砍掉重做,然后整个开发的时程就会因此延误一到两个月,错过一次还好,错个两三次恐怕对于一个互联网创业公司来说,已经把资金烧得差不多了。
一定要明白项目管理的重要性
谈项目管理跟谈软件技术开发的项目管理,可能有些不同,尤其对于创业公司,一个良好的项目经理,绝对比找到一个程序员来得更为重要,也希望大家重视项目经理这个专业,这个专业,并不是写代码写不动的程序员才来做项目经理的,项目经理处理的很多事情,是很多程序员不愿意做的苦活累活,但是随着产品的技术范畴越来越大,这些所谓的苦活累活往往可以救你一命。
我不会说产品经理比较不重要,更不会说程序员或是设计师比较不重要,我想说的是,如果你正在互联网创业的话,请务必搞懂每个工作程序背后的重要,然后让各种不同专业的人来处理,最后养出的这个环境,才会是公司的核心价值。
如何成为一个合格的项目经理
产品开发的问题总结起来无非下面三类:
- 需求进度分工问题。总觉得提供的需求不合理、项目给的截止时间太短、这个功能不是该我做的感觉。
- 态度或水平问题。一些情况下对于自己写的代码都是写完求保佑的姿态,留坑太多不愿意改bug,因为可能改一个引入一堆新问题;拒绝他人怀疑自己的实现方法。
- 天生傲娇闹情绪。产品经理煞笔、设计师煞笔、后端煞笔、钱少活多我不干了。
自从在程序员客栈工作,接触过很多非常优秀的项目经理,这些人的履历会都让我惊呆了。但是为什么还是有时候工作出错呢?当然这里面有程序员老是推卸责任、完成得不及时、代码写得不够优化,我们确实习惯性的认为别人的工作更加容易,喜欢给人贴标签。然而在程序员客栈,却还是有很多让我佩服的项目经理,他们雷厉风行,能把工作粉的特别细,时间规划的很合理,让程序员和企业方无处可挑剔。
其实,项目经理就是针对以上问题做工作,外加协调各种资源保证项目进度和质量。
针对上面需求进度分工问题:项目经理就需要『清晰的规划』『明确的分工』两手抓;态度或水平问题,需要项目经理在技术实现上有深刻认识,不被程序员兜着走,再是注意挑选一定水平的程序员合作;天生傲娇闹情绪,要求项目经理自身态度、心态要好,听的批评挨得骂,一心只想把项目做好。总之,预防各种问题,把工作做到细处,排除一切困难障碍,让项目准时保证质量交付的就是好项目经理。
程序员客栈(proginn.com)—— 领先的中高端程序员自由工作平台,未来企业的用人方式,更多文章请关注微信公众号:程序员客栈Times(微信号:inntimes)