作家曾经是码农,现在成功转型了项目经理。时间似乎是虚幻的,成为程序员的日子转眼就过去了20多年。每当想起年轻时奋斗的日子,一幕幕幕仍然历历在目。一切都像昨天一样。
本人当初进入软件行业的时候完全成了热血,每天都像打了鸡血一样兴奋。为了赶上进度,每天在客户现场一个人加班到凌晨三四点,客户单位大门锁着,小心翼翼地越过两米高的铁栅栏门,回到酒店洗漱完毕的时候,东边已经发白了。第二天早上8点闹钟响了,9点,精神抖擞的我又会准时出现在顾客现场。这样,每天、每年、不知疲倦、没完没了。相对于现在天府所指的996工作制,当时没有一分钱加班费,现在的年轻人可能认为我们这一代的程序员不是疯子就是傻瓜。事实上,当时喜欢代码,沉浸在解决问题的成就感中,享受着隐藏的bug的快乐,学习着不断提高技能的满足感。
但是,不管承认与否,事实是残酷的,这种状态不能长期持续。随着妻子和孩子的出生,家庭的束缚使程序员再也不能像单身时那样埋头工作了。此外,IT行业的技术更新速度比其他行业快得多。以本人为例,我最初用C语音开发了DOS应用程序,掌握了内存驻留技术,似乎已经站在了开发金字塔的顶端。随后,Windows出现了,DOS时代努力研究的高端技术瞬间云散。背后包括流程-面向对象的转换、从C/S架构到B/S架构的转换等,每一波过后,老程序员都可能搁浅在沙滩上。
请记住微软的一位高管曾经说过的话:来申请的25岁程序员敲门,说自己精通C,我就讲工资。如果一个35岁的程序员说他精通C ——,你很好,太老了。(阿尔伯特爱因斯坦,Northern Exposure,女性)中国和外国的代码都成为年轻人的战场,这是不可否认的事实。相反,项目管理工作没有明显的年龄限制,一些大企业的招聘甚至具体说明需要35岁以上经验的项目经理。很明显,从程序员过渡到项目经理是解决35岁困境的关键之一。
那么具体应该怎么变化,从哪方面入手呢?
首先,要做好程序员的本职工作,还要表现得出色。有一个词叫“光环效应”,当我们对一个人的某些方面有好印象时,我们倾向于认为他的其他方面也很好。事实上,大部分软件公司也选择了项目组最优秀的程序员作为项目经理候选人。一旦你有了这个机会,你就可以在实践中不断地学习和成长。
第二,需要改变的是思维方式。一般来说,程序员代表个人利益,而项目经理需要进一步考虑公司和团队的利益,这也是对很多新项目经理的误解。程序员的优点是思维缜密,执着于技术,经常希望能在开发中使用最新的酷技术。这种纯技术思维是优点,但在某种意义上是一大限制。(David Assell,Northern Exposure,MARTID)项目经理的主要任务是关注如何实施计划,以便如期供应产品。首先是考虑费用。因此,开发效率(与开发成本相关)和系统的稳定性(与维护成本相关)是项目经理最关心的问题。程序员往往喜欢在简单的功能模块中使用哪些高度算法和不可预测的技术,但没有考虑是否仅为现周期目的而过度优化,投入的生产成本是否不合理等问题,这种思维方式必须改变。 (程序员,程序员,程序员)一些新变化的项目经理每天都像程序员一样忙于编码。无暇顾及团队管理。这必然会导致项目管理的混乱和混乱。
第三,有意识地锻炼自己的表达能力。沟通表达能力是项目经理必备的技能,沟通能力从根本上是有商量的工作方法,从别人的角度考虑问题的思维。万事万物,净化自己者顺利。释放自己教导人的人违抗。很多程序员肚子里有东西,说不出来。高级商品使用普通包装一样,严重影响职业发展。表达能力强的程序员往往获得更多引人注目的机会。这方面的锻炼并没有捷径。只是要多练习,平时抓住项目会议和集体活动的机会,争取在人们面前发言的机会,不要怕丢脸。另外,提高表达能力的书也不少。如果能找几本学习的话,会有帮助的。
第四,要注意自己的形象。这一点往往容易被忽略。如果公司领导想在程序员中选择项目经理候选人,那么邋遢、整洁、端庄的哪一方会赢?这大概是不言而喻的。
第五是系统学习管理理论,特别是需要项目管理的理论。项目管理系统包括整体、范围、时间、成本、质量、人力资源、通信等管理。有成熟的项目管理系统和理论可以从程序员系统中学习,例如项目管理知识系统(Project Management the Body of Kn)。
owledge,简称PMBOK);CMMI(Capability Maturity Model Integration)能力成熟度模型集成,以及敏捷管理体系等。程序员要像学技术一样学管理。管理本身也是一门科学,也有很多的知识点,要做的不只是知道,也需要像学技术一样地去尝试和练习。第六就是考证了,80%的顶级公司,尤其是国际化公司会要求PMP证书。另外如今流行的敏捷管理ACP证书也有一定帮助。当然,证书不是最重要的,它只是应聘的辅助敲门砖,重要的还是上面前5点。
最后,还要一个问题是有着广泛争论的,就是项目经理要不要懂技术,要不要写代码。第二个问题很容易回答,一般项目经理做到第二、三个年头就已经彻底不会写代码了,除非这个团队是个草台班子,一人必须分饰多角。至于第一个问题,按照我的经验,项目经理只需要对现有技术体系有基本的概念即可,并不需要精通技术细节,因为在正规公司会有架构设计师或者技术经理来把关技术问题。