很多人因为喜欢编程的工作,以及将想法转化为代码的整个过程,才成为了开发人员。学习新技术、编程语言、框架等,学习很多技术的运作原理,从无到有构建各种软件。
从初级软件开发人员开始,努力成长为一名“普通”的软件开发人员,再到高级/首席软件开发人员,我们都很享受自己的工作。
现在,如果你的本职工作已经做得很好了,或者你表现出了些许的管理能力,或者你们团队中没有比你更合适的人选了,那么你就有可能受形势所驱成为一名经理。
很多人有一种共识:成为一名经理是自然而然的发展。但我想说这也并非自然而然,因为我们不应该强迫任何人做他们不想做的事情。
为什么不自然?
首先,你让一个喜欢编程的人从事编程以外的工作,目的何在?他们会感到丧失激情,而且最终会因不堪重负,而对自己的工作产生厌烦情绪。
虽然他们可以强行推开别的职责继续编程,但是如果一个经理都在写代码,那么管理的工作谁做呢?
换句话说,跟团队里的开发抢着做编程的工作,那么就意味着他没有尽到作为经理的职责。这对公司的业务没有好处——经理不从事管理的工作,那么要经理何用?
其次,即便一个人是一位优秀的程序员,也并不意味着他会成为一名优秀的经理人。开发和管理是两种截然不同的工作,各自需要特定的技能和思维方式,有点类似于足球运动员和球队经理。即便某个人是一名优秀的足球运动员,那么也不代表他能够胜任管理球队的工作。
管理的主要工作是与人合作,为成功做足准备。你需要假别人之手完成工作,而不是替他们完成工作。另一方面,开发人员更偏向于个人做贡献。如果相比亲手完成工作,你更喜欢通过其他人完成工作的话,那么你应该去做经理。
此外,首先你应该考虑一下自己的社交技巧。如果你不擅长社交,那么可能也不擅长管理。同样,如果一个人连自己都照顾不好,你觉得他们能照顾好别人吗?
第三,你听说过“彼得原理”的概念吗?简单来说,在组织或企业的等级制度中,某人会因其过往的经验而不断得到晋升,直到他被擢升到不能胜任的职位。
因此,将一名优秀的开发人员提升为经理,如果他们没有充分准备好的话,那么就会身处不能胜任的职位。将一名优秀的开发人员变成一名糟糕的经理,对公司来说并没有好处。
相反,如果有人已经承担起了职责之外的工作,那么就应该提升他们。如果开发人员不适合做经理,那么就不要提拔他们做经理。
第四,有些人会为了钱而承担起管理的职务。虽然管理人员的收入常常高于下属,但也并非所有公司都这样。如果你有一个专家组,还有一名管理他们的经理,而且这些专家不可替代的话,那么经理的收入就未必比这些专家高。
如上所述,开发人员的工作与经理截然不同,一名优秀的经理也不一定是优秀的开发人员。如果开发人员为公司所做出的贡献超过了经理,那么他们的收入未必会低于经理。
所以,请记住,收入并不代表一切。如果你喜欢开发的工作,那么即便赚的钱少也未必是坏事,当经理虽然赚的钱多,但如果你感觉很痛苦,而且对工作产生厌烦情绪的话,那就得不偿失了。
第五,如果遇到团队无人可以承担起管理的职责,你也千万不要强出头。这不是你的错,你有权自主地选择自己的职业发展道路。否则,不仅你会受到伤害,而且对公司也没有好处。
那么,如果你热爱开发的工作,又不想成为一名经理,该怎么办呢?不要害怕,你的职业生涯还有其他发展可能性!
开发的职业发展可能性
虽然高级/首席开发人员的确可以成为晋升经理的垫脚石,但事实也不仅限于此。通常开发有两条职业发展道路:管理与技术。当经理就意味着你走上了管理之路,但是,你也可以留在技术的轨道上。
高级/首席开发人员:这可能是你努力的方向。喜欢单独工作且不想转向管理的人完全可以成为高级/首席开发人员,这一点无可厚非。
开发组长(技术主管):半管理角色。纯粹从技术的角度领导开发团队,领导项目和其他人员。他们不需要直接的报告,也不需要指挥别人。通常他们会承担起有关代码方面最后的决定。但是,这个职位的职责会因公司而异。
架构师:如果你喜欢设计复杂的系统,而且希望继续从事技术的工作,那么就可以考虑架构师。通常技术架构师是技术职业阶梯中的最高职位。这个职位的职责也是五花八门,有些架构师甚至不写任何代码。
无论怎样,我只是想强调上述岗位和他们的职位描述有很大的不同,许多职责有时会混为一谈。
总结
我希望自己一直从事编程的工作,而且我认为“不确定自己是否想成为一名经理”的想法完全正常。做自己喜欢的工作,让别人说去吧。
既然编程是你真正喜欢的工作,那么就坚持下去吧。
不要误会我的意思,如果你想成为一名经理也完全可以,我知道有些管理人员很喜欢他们的工作,但这是因为他们喜欢这个岗位。在考虑个人的职业发展道路时,你应该考虑从事自己真正喜欢的工作。