先来看一张程序员的职场进阶图:
大厂的技术经理/架构师及以上、中小厂的技术总监/资深架构师及以上,都能轻松达到年薪百万。并且如果你持续具备岗位的要求,保持绝不是问题。而我,在11年职场生涯中,上图的大部分职位都干过。
第一篇,谈谈从工程师进阶到技术经理:
01
进阶高级工程师
高级工程师是程序员打怪进阶的必经门槛,基本没有人能跨越这一层级到达更高的层级,其他职业或许有,技术很难。
原因其实很简单,如果走专业路线,不可能从工程师跳跃到架构师,这点不解释。如果走管理路线,技术管理工作必须具备专业性,关键点就在于你是否能和技术下属对话并给出指导。做技术的人相对都非常单纯,如果你精通技术,大家自然愿意跟随你,反之则很难管理。
那么一个普通工程师如何成长为高级工程师呢?需要以下四点:
1.对工作追求极致
代码世界精益求精的精神非常重要,无论是代码风格、注释还是函数的抽离、低耦合高内聚,等等都是需要这种精神去驱动的。
工作中主动承担更具挑战复杂度更高的事情,遇到产品故障积极参与分析问题、排查问题,解决系统问题是成长极快的一种方式。举个例子,流量满了,有些工程师加个带宽,糊弄过去业务也能运行,但没有从根本上解决问题,个人也毫无成长。如果能分析流量来源、采用动静分离、使用cdn加速、优化传输协议等等方式去解决,不仅把根本问题解决了,同时也能得到很大提升。
一完成业务目标就不思进取,很难在技术上取得突破,养成习惯后也就成了那种一年经验工作十年的复制粘贴工程师。
这样的工程师不仅仅跨越不到高级工程师的水平,薪资增长极为缓慢,还面临着年纪大了,被淘汰换行业的风险。
2.掌握架构思维
掌握架构思维不等同于就成长为架构师,但一定是从初中级工程师进阶到高级工程师的必经之路。
从直接编写一个个功能,到拿到任务先做业务分析、架构设计、类结构设计,这个过程反复训练,就能掌握架构思维。
画出业务时序图、类结构图是高级工程师必备技能,即便为了赶时间不画出来,也需要能想清楚类结构图。
编码前,是否具备构建能力,是工程师跨越到高级工程师的重要指标。相比那种不上进的打酱油工程师,有一类工程师最为可惜,他们勤奋、吃苦耐劳、抗压,是职场的老黄牛,但却疏于架构思维的培养,只满足业务的紧急需求,工作多年可能还只是中级工程师水平。
3.阅读优秀源码
工程师大量阅读优秀的源码,对提升编码能力非常有帮助,同时做技术的人很容易因为取得一些小的突破就站在了愚昧山峰。这个时候看看顶尖大师们怎么写代码,无异于一种震撼。
11年,我开始阅读Google Chrome源码,真是有一种始惊、次醉、终狂的感觉。深刻认知到差距之后的刻意练习,会让你开启高速进化之路。
还有一个关键点,源码不要只看不上手,编译起来运行起来,然后多改改看看会发生什么,这个过程既好玩又能加深你对源码精髓的吸收。还可以尝试把庞杂源码的设计思想抽离出来,并应用到工作中。
4.阅读经典技术书籍
技术书籍是一定要看的,但是切忌不要看那种《30天精通PHP》(这里不是鄙视PHP,PHP是世界上最好的语言!),要看经典技术书籍。拿JAVA技术栈来说,《JAVA编程思想》、《JAVA核心技术》,都属于经典书籍。
看技术书还有一点很重要,边看边实践,书上讲的知识点一定要在机器里敲出来,这样才能做到真正吸收。这也符合读书必须实践的浅显道理。
以上四点建议说完了,还有一些建议,比如多学习网络相关知识、多关注接口设计,工作中找导师,导师可能是你的上级也可能是其他优秀的同事,甚至也可以是公司之外的大牛朋友。
计算机基础比较差的同学,数据结构、算法、计算机体系知识是必须反复精进的。有不少同学热衷于还没打牢基础之际就开始玩各种语言,还自以为很酷很牛逼,其实很容易把自己玩成打酱油工程师。
02
进阶技术经理
技术经理属于一级管理者,高级工程师取得一些突破后,业务出色就有可能被提升为技术经理。
需要特别注意的是,担任技术经理后,绝不能放弃编码的精进,说一条金标准:技术经理具备随时担任架构师的能力,能独立驾驭一个技术子领域的全部技术架构!
技术经理是技术人最容易突破的职位却又是最难做好的岗位。因为技术经理往往还需要大量编码,特别是攻坚核心代码。
做技术的人其实是最单纯的一群人,编码本身可以产生极大乐趣和快感。当一个个功能、bug被搞定解决之际,就是一次高潮的爆发。我编码多年,也乐在其中,当产生心流体验的时候,等你抬起头发现天已经黑了。
而编码的时候被打断是一种极为痛苦的体验,技术经理一天可能要开N个会、还要处理招聘、沟通、等等其他事物。这个过程是急需要掌握新的领导技能和时间管理方法的。
先来看看技术经理需要具备哪些新的能力:
除了个人攻坚能力,一级管理者要完成思维转变,从一个个人贡献者变成团队贡献者。还要掌握制定工作计划、做工作顶层设计、人员选拔、招聘技巧、项目过程管理、资源协调、营造团队文化、制定考核标准、协调团队资源、争取团队资源、沟通协调等等能力。这其中,挑出一项出来就需要不断持续精进、持续学习。
除了这些通用领导技能的培养,我认为从工程师跨越到技术经理还要跨过四个门槛:
1.责任超越
技术经理是工程师跨越到管理者的必经之路,这时候有个重大转变:由一名个人贡献者跃迁到团队贡献者。
员工是对任务负责的。你交给员工一项任务,需要明确告诉他,完成这个任务的衡量指标是什么?员工把指标做到了,任务也就完成了。
做了技术经理之后,你负责的不再是某项任务,而是团队的目标。假如老板问一个技术经理,你的团队怎么把这件事干成这样了?
如果技术经理回答:“这不是我的错,这是张三弄成这样的”,这样的经理,老板不会喜欢。同时也是这名经理没有从个人贡献者跃迁到团队贡献者的表现。
技术经理需要对对团队的目标负责,这意味着就算是底下的工程师没干好,也应该由技术经理负全责。
2.自我超越
能成为技术经理,在技术专业度上已经有比较深的积累,在升职之前天天和代码打交道,这也导致技术经理往往会比较自信甚至是自负,同时在沟通方面还有很大提升空间。
自我超越首先是跨越愚昧山峰,因为取得了成绩而自大的人不在少数。我在刚做管理工作的时候,看下属的代码怎么看都觉得不行,非得让下属改成我想要的结构,讨论技术问题也无比强势,基本不给团队成员任何发挥空间。时间长了导致大家怨声载道,接连有两位团队成员离职。最后我的副总裁找我谈话,严厉指出了我的自大、自负,这才让我告别愚昧山峰。
跨越愚昧山峰之后,你需要保持高速的自我成长,管理者就是团队的天花板,如果你停止成长意味着团队也停止了成长。
3.沟通超越
你要从用自己的手,到用别人的大脑。作为技术经理,你看到下属的工作做得不如你好,你常常会忍不住自己上!这是刚刚成为技术经理的人经常会犯的错误。
作为技术经理,你需要从依赖自己,变为依靠别人,这是一次巨大的沟通飞跃。同时,你不仅仅要跟下属沟通清楚,你需要什么,你还要沟通清楚,你为什么让他这么做。
同时在下属执行的过程中,你需要设定过程检查节点,并及时和下属沟通做上下目标对齐的工作。
这些都需要极强的沟通能力,做到沟通超越,你才能真正带好下属并对下属的成长负责!
4.关系超越
不少工程师刚刚担任技术经理,会采用小恩小惠笼络住下属,把下属当好朋友、好兄弟、甚至家人,有酒一起喝,有肉一起吃。
看起来很棒对不对?如果公司业务高速发展,一直有肉吃,或许还凑合。一旦公司发展遇到阶段性瓶颈,公司要裁员,怎么办?你还能实现你把大家当兄弟当家人的诺言吗?
显然不能,因为即便你不想裁,公司要裁是挡不住的!
管理者和下属的关系,只有一种关系:合作伙伴关系。下属不会在你这工作一辈子,对下属而言,他的职场发展是最重要的,他在你这说明公司和你能满足他现阶段的需求。
公司和你不会用一个人一辈子,你现在用你的下属,是因为他的能力能帮你和公司解决问题,给他的薪资也符合他的贡献。
很残酷对不对?再说一句多次说过的话:人类社会是最讲究公平,一切都是等价交换。
管理者更应该思考的是,如何在这一段合作关系中,最大程度的提升下属,并将这种提升赋能团队目标的实现,实现真正双赢。
写在最后的话:
今天介绍了从工程师跨越到技术经理的过程,如果在大厂成长为技术经理,已经可以超越百万年薪,如果是中小厂商,或许还差那么一点点,但是只要把技术经理的基础打牢了,持续成长,后续达到也不是问题。
很多朋友感叹互联网人持续生存不易,我想说:人类社会构建了一个安全感的假象,透过社会的组织形态往里看,真相只有四个字:适者生存!
感谢我们身处竞争激烈的互联网行业,这也让我们获得高薪资远比其他行业更容易。但是期望安逸,期望一直呆在舒适区还能持续获得高薪,无异于痴心妄想,程序员职场这条路,必须不断打怪升级,不断突破超越。
扫描下方二维码
添加好友,备注【交流群】
拉你到学习路线和资源丰富的交流群
更多推荐
程序员职场进阶指南(全干货)
发布评论