如何成为资深软件工程师(JAVA方向)
博客专区 > 可信 的博客 > 博客详情
如何成为资深软件工程师(JAVA方向)
可信 发表于11个月前
如何成为资深软件工程师(JAVA方向)
  • 发表于 11个月前
  • 阅读 61
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: 最近遇到了一些事情,不得已又走上了面试找工作的道路。         本来对自己半生的职业规划是闯荡个几年,然后找一家大公司老老实实的呆着,把精力分一些放在其他的人生目标上(不说太异想天开的(骑行西藏),找个妹子结个婚总可以吧)。没想到就在有了这个规划以后,反而开始了一年多的创业公司之旅,到现在更是与所谓的大公司稳定生活渐行渐远,甚至已经有了一种游离在大公司之外无法回归的迹象。         这一年多的不顺不再赘述,让我们回归正题。

这是一篇干货文。

为什么要成为一名资深软件工程师

        让我们先考虑一个问题,我相信也是绝大多数程序员迷茫和思考过的问题:

        我现在工作(一\二\三\四\五\六)年了,听说程序员写代码最多也就到(30\35)岁,那之后我该怎么办?

        对于这个问题,恐怕很多人想的大概都是转行吧。也经常有新闻报道有程序员不干了,在国贸CBD卖煎饼果子一个月赚好几万,有程序员不干了,卖了五道口的房子创业去了。

        这些新闻无一不带来满满的负能量:程序员到了30多岁就别干了,想个其他的办法去赚钱吧。

        对于热爱软件行业的我们来说,这能接受吗?我是完全无法接受。往煎饼果子上刷酱能有敲击键盘的感觉舒爽吗,今天搞定了几个找茬的城管能有搞定一个折磨很久的BUG更让人值得庆祝吗,更不用说社会地位和社会认可这些了。

        至于创业……我现在就作为一名士兵,站在创业者的战场里,看着这满地的尸骸,“一将成名万骨枯”这句话太贴切不过了。真心想说,创业比换一份工作难多了,如果没有被周围朋友都认可的魄力和领导力和实力,还是再修炼一段时间再考虑创业的事情吧。

        所以对于这个问题,我要说的就是,对于普通的我们来说,不换行,就在这一行做下去,找到自己最合适的方式做下去。这不是一条前路未知的凶险路,美帝的软件行业已经证明,程序员可以做一生。

        成为一名货真价实(划重点)的资深软件工程师,无疑是热爱代码享受编程的同学一条不错的道路。

        可能有的同学要问,我就这么在软件行业混着不行吗,为什么一定要折磨自己,去学习那么多东西呢。

        让我们假设下面一张图,这张图展示了随着工作经验的增长,同龄同行的技能水平分布,y轴是百分比,x轴是什么?掌握的技能分值?大家仔细看看,恐怕也明白了吧。

(本图未采集实际数据,只是演示一个趋势)

结论:只要也只有不停的努力,才能在这一行呆下去,才能不被淘汰被动转行,才能收获更高的薪水。

 

怎样才算是资深软件工程师

        让我们再考虑一个问题:

        我上招聘网站,浏览各个公司岗位的职位要求,为什么总有种要求很高的感觉,就连我们公司扩招的,我这个级别的职位,怎么感觉那要求我自己都达不到(惊恐脸)?

        下面是某招聘网站上某知名互联网公司的招聘要求:

        大略一眼看去,好像这三个职位除了岗位职责不同,对技能的要求除了行业经验和技术经验,对其他并没有太多区别。

        然而大家都明白,这只是冰山在海面的一角,海面之下的要求到底有多少,是谁也难以说清的。

        “对其核心思想,实现原理有一定认知。”多少才算一定认知?每个级别的岗位要求的认知是一样的吗?就如spring,如果我要投递资深研发,会使用会配置就算一定认知,还是读过源码、对spring的实现原理了解三分透算一定认知,还是能够写一个自己的代替spring的开源框架才算一定认知?

        “具有基于SOA架构的复杂业务系统开发经验。”三个岗位要求是一样的吗,是会在SOA的框架下写符合规范的业务代码,还是会在已有框架下独立设计填加模块,还是说能够自己独立搭建一个SOA架构,还是说要对SOA有自己独到的见解。

        还有那些没说的,技术以外的,比如对个人素质的要求呢?这些又是什么要求?

        以上实在是太模糊了,如果能够量化该多好。

        那就让我们做一个量化好了,为此我总结了大量招聘启事的要求,并将简历里提到相关要素全部抽取并列了出来。

基础知识 大学里学习的知识以及一些语言基础知识
后端技术 实际开发中会用到的后端技术
前端技术 实际开发中会用到的前端技术
架构设计 搭建架构的能力或者在已有架构下设计新模块的能力
行业经验 各类行业的知识和经验
技术实践 一些需要经历实战才能得到的经验
交流沟通 与各类人等沟通
解决问题 解决各种开发和上线后的问题

        首先,我将专业技能掌握程度分为几个级别,大概是如下的分法:

0分 刚刚接触,完全不懂
1分 会使用,仅此而已
2分 使用熟练,懂一些基本配置,可调整基本配置
3分 懂几乎所有配置,读过一些源码,懂一些原理,可做小部分自定义扩展
4分 完全理解原理,读过几乎所有源码,并可做大规模的自定义扩展及改动
5分 特殊级别,行业专家级别,可以在这个领域提出更好的建议

        就拿前端来举例吧,我最擅长的是jQuery,也仅仅是会用,所以我给自己打1分。业内名人前端专家阮一峰,对某项前端技术的了解,也许可以打个3.5分,vuejs的作者尤雨溪,我认为他对vuejs的了解是接近5分了。

        素质类技能分法如下:

0分 非常糟糕,这方面情商为0
1分 不太糟糕,多亏你达到了这个分数,人们才能把你和动物区分开来
2分 一般而已,但也仅限于此了,并没有人会觉得你这方面出众
3分 还算优秀,人们在想到这方面做的优秀的人时会想起你
4分 简直完美,如同人民币一样,几乎人人认可,人人夸赞,甚至都有人主动宣传你了
5分 特殊级别,心灵导师,慕名而来的人们踏破门槛

        就拿沟通能力来说,一岁宝宝对外的沟通能力无疑只有一分,马云的演讲能力也许可以达到3.8分,观世音菩萨最可能就是5分的水平了吧(不说话都一堆人整天来拜)。

        有了这个量化评分标准,我试着给自己打了一下分,画了一个雷达图出来

我已经尽力夸奖自己了,没想到还是这么惨不忍睹……

我们再试着分析一下,上面某公司的三个职位要求,又是分别什么水平呢

如果再去投递,是不是就心里有底许多呢?

讲了这么多,我们终于可以给出一个资深软件工程师的具体量化标准了,以下就是我对大量招聘启事的收集,套用上述量化标准,汇总得出的资深软件工程师(后端)平均要求雷达图:

结论:毫不夸张的说,如果你能达到如上能力值,市面上的绝大多数公司都可以投递了。

 

如何成为一名货真价实的资深软件工程师

        讲了为什么要做资深软件工程师,怎样才算资深软件工程师,那接下来自然是要将如何成为资深软件工程师了。

以下,是我参考了某网站的技能图谱,以及招聘启事提到的具体技术,列出的资深软件工程师(java),所需修炼的能力(以下技能要求掌握程度并不相同)

基础知识 后端技术 前端技术 架构设计 行业经验 技术实践 交流沟通 解决问题
数据结构与算法

一站式框架

(spring、spring boot等)

javascript 单点架构\SOA架构\微服务 金融 高并发场景 人员带培 技术调研
JVM虚拟机

MVC

(springMVC、struts2等)

Html/css IAAS\SAAS\PAAS 保险 海量数据场景

与各种角色沟通

(产品经理、运营、其他程序员、运维、其他职能部门、第三方厂商、客户等)

系统运维
JAVA语言

ORM

(mybatis、hibernate等)

jQuery 容器技术 物流 大数据分析   技术难点
JAVA多线程

数据库

(mysql、oracle等)

组件式框架

(React、AngularJS、VueJS等)

  电商 灰度发布    
JAVA集合

NoSql

(MongoDB、HBase等)

    支付 系统调优    
JAVA I/O

消息队列

(ActiveMQ、RebbitMQ等)

    其他 第三方支付    
JAVA socket

分布式缓存

(redis、memcached等)

      多线程模块    

        已经很清晰了,可以看出,只是混日子、混工作经验是没用的。要成为一名货真价实的资深软件工程师,必须经过大量系统的学习,刻苦的学习,大量的实践,以及对自身综合素质的修养和提高才可以。

除了资深软件工程师,我们还可以成为什么

        诚然,许多人并不喜欢一味的钻研技术。在技术打底的情况下,有的人更喜欢做项目管理多一些,有的人更喜欢做一些产品相关的事情。就算是一味的钻研技术,也可以细分成喜欢做基础框架的纯技术流,喜欢解决实际问题的业务流。

        但不管怎样,只要有心仪的方向和职位,只需分析一下市面上的招聘启事,依照那些要求打打分,同样可以得出一个硬性的要求,找准自己努力的方向。

       

共有 人打赏支持
粉丝 2
博文 2
码字总数 3676
×
可信
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: