我刚工作的那几年,心里是有点瞧不起项目经理的,觉得他们就是监工,也不写代码,每天就是算算人月,弄好排期,把任务分给程序员,每周开个会,时不时催一催,发个报告,有的还会画个漂亮的甘特图装装样子,除此之外,还能干嘛呢?
更让人生气的是,项目成功实施了,他们居然是最大功臣,受到领导的表扬,这让我们这些整天和代码/Bug搏斗的程序员情何以堪?
工作两年多以后,经理看我积累了不少经验,居然也让我兼职做项目经理了。
刚上任的时候自信心满满,自己技术不错,和程序员无障碍沟通,还能解决技术难题,怕啥?
但是真的开始项目管理工作就傻眼了。
首先遇到的问题就是争取资源,我们的项目需要一个对WebSphere特别熟的人,我想把这样一个人弄到我们组,但是协调能力不够,费了很大劲也无法说服领导,只同意分给我们30%的时间,这合作起来就太麻烦了。
还有和兄弟组对接,他们觉得有个模块我们做合适,我觉得应该他们做合适,就这么扯了扯去,范围定不下来,完成时间也定不下里,累死个人。
在分任务的时候也很痛苦,任务到底分给谁?他的能力如何?他到底能不能按时完成?一系列疑问之下,做了一些错误决定,比如给能力强的人压了太多活儿,忙得不可开交。
组员之间因为采用某个技术出现了争执,我发现我也不会去调节矛盾,更不好意思去批评组员,当组员工作干得出色时,也只是心里默默赞许,忘记了当众表扬和激励。
总之,项目像一架破马车行走在泥泞不堪的道路上,最终能奇迹地按时完成,全靠我和几个核心疯狂地加班。
这时候我才意识到,项目管理真不是一件简单的事情。
软件不同于一般商品的生产,它看不见、摸不着,更需要考虑时间、范围、成本、质量、进度、风险…… 需要良好的规划能力、协调能力、沟通能力。
所以,它能成为一门学科,有一整套的知识体系和工具、方法。
后来我去了IBM工作,发现程序员的三条发展路径。
1. 架构师
2. IT专家,对某个领域,如安全,数据库特别精通
3. 项目经理
这里每个项目都配备专职的项目经理,并且特别要求:一定得通过PMP考试!
其实不仅仅是项目经理需要PMP认证,在IBM做架构师,也会要求具备较强的项目管理能力,所以不少人都去考了PMP。
公司也会鼓励员工去谷安获得PMP这个认证,提升个人竞争力。5天PMBOK 精讲+1天敏捷+1天知识点串讲+3天模考与讲解。
获得PMP证书,有助于内部晋升,是企业人才梯队建设的主要考评项,在一些重要招投标中有PMP证书也是重要加分项。
但是,这些都是结果,对于程序员来说,更关键的是:
1. 彻底改变对项目管理的看法,让自己站在更高层次,重新认识软件开发过程。
2. 学习先进的项目管理理念,掌握在范围、时间、成本约束下完成目标的方法。
3. 掌握先进的解决问题的思维方式。