刚入行:就是干入行两年:熟知各种设计模式,信手拈来入行三年:阅码无数,心中已无设计模式入行五年:就是干
都说程序员一年挖坑,五年扛旗,十年成神。
相信许多小伙伴都知道,互联网大厂们都是有一套严格的职级系统,专门用来评判员工的能力等级以及对应的薪资待遇区间。
比如众所周知的阿里的P系列,腾讯的T系列等等。
事实上,程序员的牛逼程度大多也是按照这些所谓的头衔来衡量的。比如假如你是一个P9级别的程序员,那基本就是行业大牛,公司藏金阁之类的长老了。各种叱咤风云的大佬们的故事也都是发生在这个级别及以上。
而对于工作没几年或者刚毕业的萌新来说,一般大多处于P5的职级,这也是应届毕业生最容易获得职级。只有极少数的校园大神级别的人才,才有机会毕业直接P6。
但是事实上这些职级并无完全与你的能力相匹配,仅仅只是代表公司按照它的标准和评判方式对你所得出的评估罢了。这里,我大致按照大厂对软件工程师的能力评级,斗胆谈谈程序员能力进阶的修炼方法。
一、筑基
筑基期大致上可以看作是程序员在互联网行业的起点,意味着入门级别。就好比修仙第一步,已然具备了灵体,能够吸纳天地精气,滋养自身,铸造基石。
对于一个筑基期的程序员来说,能够用一个词来形容,就是「靠谱」。对于公司而已,靠谱是最基本的要求。
这意味着你需要具备基本的岗位工作能力,同时能够了解自己所在部门的业务方向和技术框架,甚至还需要熟悉并能够践行公司的价值观。
具体来说,如果你是服务端研发,那么意味着你要能够保质保量的完成日常的开发需求,并且能够很好的遵循项目规定的开发规范,日志规范以及一些业务安全的规范。这对于一个开发新人来说,前提是能够掌握基本的后台开发能力,包括掌握常用框架、熟悉技术栈、了解业务开发组件等。
不仅如此,还需要具备基本的问题分析和排查能力,能够在遇到与自己相关的线上问题时迅速定位问题并提供解决方案。
而如果你是一个客户端研发,那么相应的你也需要掌握自己开发方向的基础业务能力,比如熟悉UI相关组件的使用、了解动画手势网络等系统库实现以及当前项目的架构以及开发规范等等。
不同技术方向都会有不同的要求,但是不变的是要能够胜任当前的岗位,具备基础的业务和技术能力的同时,学会发现问题和解决问题。
二、结丹
基础已筑,需要将已修得的精华凝缩为内心中的神丹,代表着自己对自己实力层次的精进。
你发现自己始终还是没晋升,这个时候,就该好好想想自己的能力加点是不是点错了。要用一个词来形容结丹期级别的工程师,那么就是「独当一面」。
这个时候,往往已经掌握了扎实的技术能力,同时对业务也有一定的了解。因此这个级别对你提出了更高的要求,那就是具有更高的眼光,能够站在更高的角度上看待并解决问题。
具体来说,就意味着你能够熟知某个子模块的整体业务逻辑以及技术架构,清楚的知道其中涉及的技术实现以及各种风险点。一旦有别人需要改动这一模块时,来问你就够了。
结丹期在筑基期的基础上开始强调了整体意识,并且同时要求你具备一定的责任意识,能够整体负责某一个小的模块,并且能够成为最了解它的人。
当然了,这是结果,而并不是过程。所以对于自身的能力而言,就得去朝着整体负责某一个模块来进步。而这意味着你在保质保量的完成日常工作任务的同时,尽可能的做到以下几点:
主动的去推动事情
主动性往往是区分好员工和一般员工的标准,领导肯定更倾向于主动型的员工。而作为一个努力向上的员工,就需要充分发挥自己的主观能动性。
互联网企业的文化一般都是不设边界的,如果你能够主动的去提出问题,并且去共同推动多方进行问题的解决,大概率是能够获得领导的青睐的。有人说这不就是向上管理吗,这可能是见仁见智了。
熟悉业务的发展方向
方向这种东西都是领导才会说的名词,所以如果你能清晰的知道当前业务的发展方向以及具体的战术战略,那岂不意味着你都能当领导了。
我在之前的一篇文章里就说过,咱们虽是技术人,但是也要时刻保持着对业务的感知能力。因此,熟悉业务逻辑并不是一件没有意义的东西,反而会成为我们的加分项,锦上添花的事。
负责子模块/子系统的构建
从专业能力上来说,这一级别的你已经不是新手了,所以要能够团队中承担更多模块/系统/架构层面的作用。你需要能够对模块化的工程具有一定的了解,并且在技术上具有一定的思考和沉淀。
并且很有可能,这个时候你可能可以成为新人的导师,身后带着几个小屁孩。这时候就更意味着你需要非常深入的理解整个部门的技术体系以及具体模块中实现原理,然后能够带动一个小团体一起独立完成某个子系统/模块的开发,架构设计以及稳定监控等环节。
三、化神
这又是一个坎,然而想化神,必先化凡。
这意味着当你想成为大佬的时候,就要先深入群众,深得人心。
若是作为技术管理者的候选人,则需要主动承担团队工作,解决团队中的开发管理问题;而若是作为技术专家的领路人,则需要主动发掘团队开发过程中的技术问题,为提升团队整体的效率而努力。
技术管理还是技术深化,不同的选择意味着不同的道路。一般来说这个级别如果不是leader,那基本上就是大头兵。已经能够算得上是部门的大佬了。
这个级别对于不同方向的人,自然是有着不一样的要求。比较熟悉业务方向、业务规划那更适合走技术管理的道路,能够协助leader一起参与团队的管理以及业务方向的规划。
当然,尽管是技术管理,但是并不是说不要求技术,只是相较于技术专家而言,更倾向于技术的广度。能够比较了解业界的技术发展动态,同时结合业务的特征,带头推动新架构新系统的落地,并能够保证系统的高可用、高扩展以及高效稳定。
而如果醉心技术沉迷底层,自然就更适合走技术专家的道路,为整个团队提供技术支持,为前线小头兵们解决开发效率、开发流程的问题。
这个级别通常都能在团队里带领一个小组,整体负责一个业务方向,负责整个业务方向的进展和规划,基本算得上是一个小领导了。
即使手底下没人,那也说明技术实力还是得到了肯定,只不过由于各种原因,没法单独负责一个方向领域。总而言之,这个级别要求你能够独立负责复杂系统的设计与开发,比较熟悉业务数据;并且同时具备一定的领导意识和组织能力,在团队中有自己影响力。
四、大乘
化神期终究无法满足你。你需要突破,需要走出自己的路,明悟大道,踏破天境。
这时候,已经无法通过练气吐纳来提升修为,更多的是看人事际遇和人间造化。
绝大部分程序员们都会止步于此,无法前行。而突破进入大乘期的方式,除了需要在化神期稳固的修为外,还需要能够具备一定的运气和过人的胆识。
受到大领导的赏识,遇到公司上升期,接手好的项目,这些都是能够让你脱胎换骨的灵丹妙药。而除了这些之外,自身的实力水平也需要足够达标才行。
若是偏向于技术管理的方向,需要能够站在团队的角度上为业务发展指导方向,能够理解并且有效的推进团队在长期目标上的技术规划,同时能够对领域内外都有一定的技术广度,能够带头推动整体项目的进展,并且还需要具有跨部门的协调能力,多方调控一起协调资源和解决问题。
总的来说呢,就是要安内攘外。内部保证团队的高效运行,各种需求和改造能够合理消化,同时营造团队内的和谐舒服的工作坏境;对外需要具备敏锐的视角和眼光,了解竞品发展方向,时刻思考自己所带业务的目标和未来。
而若是偏向于技术专家的方向,则更多是对于技术深度上的要求。在一个技术领域上,能够深入原理及机制层面进行研究,并且能够带头攻关技术难题。同时对于技术架构具有很深入的理解,能够将复杂的技术问题拆解并有序安排至团队成员。
除此之外,还有一点也挺重要,就是技术影响力。这个级别的大佬基本上已经算是行业内的大佬,在领域内都会享有一定的影响力和号召力。所以在提升自己技术实力的同时,提升自己的行业中的影响力也非常重要。
所谓大乘,意味着已然进入了很高的层次。到了这个层次,更多的还是看造化,看机遇。
五、渡劫
如果说大乘期是得看造化,那么渡劫期则可谓是可遇不可求。简单来说,就是只可会意,不可言传。我一个筑基期的小喽喽,哪敢妄想达到渡劫期。
不过依我看,想能够到达渡劫期的一个简单的方式,就是要记得跟自己的室友搞好关系,并且一起创业。等到他厌倦于CEO的生活后,你的天劫便因此而来。
渡过天劫,则可踏过天境,羽化登仙。从此,世间无道,道化自然。
你若要问我程序员修道还有没有第六步,第七步,或许有,或许没有。我也不知道。
这几个层次是我认为的,也是我所观察到的能力等级。尤其在大公司,感觉不同等级之间的差别还是挺明显的,领导也会根据这样的能力等级来对员工进行考核。
这几个层次也不能完成与阿里的P几相对应,毕竟公司的评级实际上并不能完全反映我们个人的能力。并且各大公司所谓的评级系统实际上都会跨越一个很大的区间,甚至会有比较严重的重叠。
所以这篇文章的几个层次更多的用来评估自身实力的模型,千万不要与自己在公司的职级对照入座了。
期待各位早日渡劫成功,飞升仙界。