程序员从技术到管理之路

技术之路蓝图


作为普通的技术开发工程师,大部分的职业之路可能就是下面的这样的:

  1. 大学毕业之后作为初级研发工程师进入企业
  2. 经过三年的学习和历练,逐渐开始作为项目负责人主导项目开发
  3. 再经过两年的项目历练,已经能够独立负责项目核心模块开发,解决问题的能力得到大幅提升
  4. 再经过两年的历练,如果负责的项目进展顺利,得到老板赏识,可能会被扶正,授予项目技术经理头衔,负责项目技术架构和攻关
  5. 再经过两年,一直保持工作的热情和干劲,大概率能够成为项目经理,总体负责项目进度,向部门经理汇报

好了,作为技术人,好好干,经过大约10年(3+2+2+2=9年)之后,你超越了竞争者,幸运地成为了经理,正式进入管理之路。

此时,假设22岁大学毕业,经过10年奋战,你已经32岁。

从此之后,你可以撸代码,也可以不撸代码,取决于你自己。

从此之后,你可以一路上升,做到部门副总、部门总经理、公司总工、公司副总、公司总、集团总…

但这些,可能更要看运气了。

笔者认为,在程序员工作的前十个年头里,很多事情是可以通过努力达到的,所以想分享一下自己的感受。

猥琐发育(前三年)


此时刚刚从象牙塔步入企业,自己就是个小白,有的只是一腔热血和大把时间。

有人说过,“你不要去拿自己的劣势跟别人的优势比,你只要尽力把自己的优势放大,就能做得很好”。

同样的,此时,你只需要把自己所拥有的优势发挥好就行了:

  • 一腔热血:转化为工作的热情和动力,积极主动吸取新知识,理解所做事情的意义和价值
  • 大把时间:把主职工作做好的同时,修炼自己的内功,利用业余时间把基础技术知识和业务知识巩固提升

就是这样,前三年,你要明白,你现在应该是一个输入的状态,就是你要主动从周围环境中汲取营养。

一是因为你刚来公司,公司、领导和周围同事对你的期望还不高,你可以静下心来,有很好的机会和大量的时间去学习。

二来是因为你有很好的学习环境和氛围:

  • 身边的大部分人,都是技术比你好,业务比你精,经验比你多,工作时限比你长,年龄比你大,都是你的老师
  • 他们大都比较和善,愿意花时间给你指导和指引(因为是初来乍到嘛)

作为技术人,且以后要靠技术吃饭的人,你要给自己规划两条路:

  • 把自己的主职工作做好(主动把工作需要的技术知识和业务能力搞好,成为优秀员工)
  • 除工作外,把技术知识分散开来,努力在纯技术这条路线上成为大牛(有了这个能力,以后你就可以不依赖公司,而是公司依赖你,跳槽也easy)

在猥琐发育的这三年,是为之后10年,甚至是一生打技术基础的时候,因为三年后,你可能就没有这么纯粹学习时间和氛围了。

崭露头角(第4-5年)


经过猥琐发育,你的身边也来了3批刚入职的年青人了。而你已经不再是新员工了。

随着你很好地完成了领导交给你的任务,甚至还主动承担了一些老员工不愿意干的杂活累活,你在领导心中的形象还是很好的:

年轻、肯干、有能力

于是,领导可能会开始让你负责一些项目中的重要功能和核心模块。

这时,你已经对技术有了一定的理解,对业务也有了一定的认识,可以在项目会议上提出一些自己的观点和改进意见。

此时,你处于输入+输出双重重要的状态。

  • 输入是说你还需要学习新的业务知识和别人的观点,能够保持谦虚心态
  • 输出是说你有了一定的业务能力,对技术架构的优缺点也了然于胸,开始有了自己的想法和建议,可以提出来一块讨论

如果保持这样的状态,我相信,只要输入的够多,必然会有良好地输出。

而随着输出的质量越来越高,你的影响力也会越来越高,领导和同事也会认为你是一个有想法、会独立思想的人。

自然也愿意把更重要的事情交付给你。

进入项目核心模块组,就是领导对你能力信任的明证。

经过这1~2年的核心模块开发,你对项目技术架构和业务流程的理解越来越深入,持续开发和修复bug都已经轻车熟路。

如果你定位解决问题的能力很强,经常帮助别人,成为消防队的一员,那么这种能力很快会让你成为团队的明星人物。

特别是线上问题,如果能够早一刻解决,都能为公司产品赢得客户和利润,给部门老板留下深刻的印象。

组团输出(第6~7年)


ok,你已经在公司服务在5年,是个老员工了。

你通过自己的努力,让自己的实力和业务能力得到了领导和同事的认可。你可能已经成为领导心目中的小能手。

随着公司业务的发展和扩张,公司要增加新的模块或者要对原来的产品架构进行优化调整,你的机会来了。

领导选中了你,要你负责新的功能模块,从需求到交付。

你经过规划,多次向老员工和领导取经、汇报和沟通,最终确定了项目周期,并组建了5个人的开发团队,向领导表了决心。

这是你第一次独立展翅飞翔。也是第一次尝试从纯技术向技术管理的转型。

好在公司已经提供了一套成熟的项目管理工具,包括:

  • 在线文档协同系统
  • 项目进度管理系统
  • 代码版本管理系统
  • 技术文档分享平台
  • 部门沟通协调平台
  • 项目沟通协调平台

以前都是别人让你用,现在你要开始规划如何用,才能让团队协作更高效,项目进展更顺利。

你要在团队中宣导并执行你的规划(当然了,规划是一个持续优化改进的过程)。

以前,你最擅长的是撸代码,定位问题、解决问题,可能现在,你更需要的是沟通协调规划和说服能力。

毋庸置疑,如果你的沟通协调和说服力很强的话,你可以至少省一半的力气。

然而,就像你撸代码、定位解决问题的能力一样,这些能力也是需要锻炼的,而留给你锻炼的时间并不长。

所以,这时,你可能会面临来自几个方面的压力:

  • 领导的压力:你需要定期主动向领导汇报工作进度,提出可能的风险点,让领导了解总体概况,做到心中有数
  • 团队的压力:你需要人尽其能,制定的规划别人不认同、有人延误了进度、团队成员之间扯皮、团队主动积极性不高等
  • 技术的压力:出现了惊天大Bug,一周还没有定位
  • 外部的压力:项目组之间的沟通协调等

汇总一下,可能团队的压力和技术的压力会是比较大的,技术的压力你可能会有所准备,而来自团队内部的压力,你则经验不多。

这也是大部分中层管理人员可能会面对的压力:

  • 如何调动团队的积极性,让团队中每位成员都像你一样负责?
  • 如何发挥团队成员的主观能动性,让每个人开心高兴地做事情?
  • 如何保证每位成员按时完成计划的任务?
  • 如何避免无效沟通,让团队协作效率更高?

其实,这些问题会永远地存在于项目的各个角落,没有统一的答案,不同的团队必然使用不同的方法,从而达到一种微妙的平衡。

如果这种平衡坚持到了项目交付,那方法就是有效的。反之,就要继续调整,继续平衡,周而复始。

这是你最具挑战性的一个阶段,也是你在管理这条路线上成长最快的一个阶段。

你仍然会处于一个输入+输出的阶段,但这时的输入和输出的含义跟之前已经大相径庭:

  • 输入:你需要利用业余时间,快速精准地学习项目管理、团队管理的行之有效的方法,并经合团队实际,提炼精华
  • 输出:你要根据实际情况,实践你刚刚学习到的理论,用于提升协作效率, 提高团队土气

这两步会比较频繁地进行,输入、输出、反馈、总结、输入…

最终达到团队的平衡,而此时,你也渐渐地有了一套适合自己的团队的管理方法。

对于领导和公司而言,你以及你所带领的团队是在输出,为公司输出有价值,能够转化为利润的产品,而你的价值,也附属其中。

此时,项目技术经理这个头衔,你受之不愧。

这一部分就不再展开了,可能需要单独写一篇文章探讨了。

项目经理(第8~9年)


作为项目技术经理,你还有一些事情参与不多:

  • 跨项目协调
  • 跨部门协调

所以,你还不是项目经理,而只是技术经理,因为你主要做的是项目中技术相关的东西,管理和协调沟通的事情还有很多。

而这些能力,才最终衡量你是否能够独挑大旗的能力素质。

正是这些软素质,可能会成为技术人员最难跨过的坎,需要不断地打开自我,总结、反思、改进、总结…

这些内容笔者也有很多欠缺和不足,心得和感受也不多,说多了误人子弟就不好了。

总结


就像游戏中一样,每个角色,如果充分发挥出它的技能和特长,都能成为独挡一面的英雄。

现实生活中也是一样。

只是有些人快一些,有些人慢一些,只要方向正确,坚定地走下去,必然到达终点。

你既可以成为技术领域中行业专家,也可以成为技术管理中的佼佼者。

以上文字仅是笔者根据自己在某国企中的经验整理而成,纯属个人感受,仅供参考。

你可能感兴趣的:(职业道路,技术管理,成长之路,程序员)