作者 | 胡书敏

责编 | 伍杏玲

出品 | CSDN博客

我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师。我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次的话,他们的收入也就会停留在当前级别,哪怕工资年限再多,也无法提升工资水平。

比如,我就面试过不少工作了5、6年的程序员,他们的技能也就停留在增删改查阶段,那么只能领到初级程序员的工资。更可悲的时,在面试过程中我发现他们甚至不知道上升的途径和方式,这样的话,可能当他们有10年经验时,或许还只是初级程序员。

对此本文将围绕着初级程序员,高级程序员和架构师这三个职位,说明下这些级别的技能瓶颈,并给出若干突破瓶颈的建议。

初级程序员的技能瓶颈与收入瓶颈

哪怕是非相关专业,从培训班出来的程序员,要找个工作也不难,更何况是计算机相关专业出身的学生。

在一般的公司里,对初级程序员的要求大多也是会增删改查,熟悉基本的业务,而且不少公司不会让他们干更高级的活。所以我在面试过程中,不少3年以内的初级程序员的水平和一些有5年经验的人差不多,这就进入了初级程序员的收入瓶颈。

比如Java方面,他们仅仅会用技能,比如集合、多线程、数据库等,也会在Spring框架下干活,SQL方面,仅会写基本的SQL语句,或许还会使用简单的索引等技能。但如果我问及底层代码,他们知道得很少,问及Spring等框架知识,他们只会告诉我如何配置,如何在现有框架里干活。至于一些高级技能,比如分布式组件,或者Linux下的部署和日志排查,他们大多就不知道了。对于项目管理的工具,比如Jenkins、Sonar等,他们可能都没听说过。

如果面试时仅表现为会干活,不会调优,不会分析和解决问题,那么能力上也就是初级开发。这样的话,在上海,按当前行情,估计最高也就12k了,同时,如果干了5年还是这样的话,那么竞争力会大大降低。那么如何提升到高级开发呢?

1、在平时得熟悉调试代码,并且,一旦组里出了问题,得尽量参与,刚开始可能分析和解决问题的能力不行,但慢慢就行了。

2、多看些优化方面的技能,以及比较热门的技术,比如数据库方面,别单纯看JDBC的增删改查,可以看些NoSQL甚至Redis缓存,然后看下SQL调优技能。

3、多关注些项目开发和管理的技能,比如敏捷开发、站会、单元测试、集成部署、通过Sonar看代码质量等。

4、这点比较关键,得多和别人交流,比如多和需求方沟通需求,多和测试方沟通问题重现步骤,多和组员领导沟通问题的实现方式。

其实初级开发升级到高级开发还是相对容易的,只要主观上态度上端正,别固步自封,然后到处看些资料多和人交流即可。如果进互联网公司,在大压力环境下,身边大牛再多些,升级过程会更加顺利。

高级程序员的技能瓶颈在于分布式组件

高级开发论技术,有一定的调优经验,也有一定分析日志解决问题的能力,也能Debug。论解决问题的能力,也能和别人沟通,从而接简单的需求,并能分析和解决一些问题。论团队合作,也能带3,4个人一起开发。其实这类能力,对工作个3年的程序员来说,不难达到,如果在节奏比较快的互联网公司里,甚至2年即可。

论工资水平,当前在上海,高级开发拿个15k都算低,如果进个大公司,外带5年左右开发经验,估计能到20k,如果在互联网公司甚至能更高,但瓶颈估计在25k左右。

我面试高级开发,他们一般基础知识比较扎实,比如Java集合内部的实现代码,高并发的诸多类,或者Spring框架的一些关键底层代码,都能说得上来。一般给我的高级开发的面试标准是,所需初级开发的技能,并在此基础上具有一定的调优能力,通过日志定位问题,设计解决方案和解决实际问题的能力,而且linux上也能部署代码。只要能说得上来,一般能给到高级开发的工资,就多少的问题。

但我面试时,感受非常深的是,和架构师相比,高级开发对于分布式组件或基于云组件(比如k8s)或其它高并发分布式组件,有些人可能用过,但仅限于会用其中的API,让他们搭建一个集群,他们可能就力所不能及了,如果再问他们分布式组件在项目开发时经历过的坑,他们大多也说不上来。

比如我问,Dubbo里通讯协议有哪些?高级开发一般能说得上来,因为这有现成资料,但我再问,根据你们的业务实际情况,你们用的是长连接还是短连接方式?为什么要用这种协议?他们估计就很难回答。如果我再问,如果要处理高并发的请求,需要在Dubbo里做哪些配置?如何同其它组件搭建成集群以达到容错效果?高级开发就更难回答了。

同初级开发升级到高级开发相比,高级开发升级到架构师更难,因为在一般的工作环境里,高级开发很难有相应的实践机会。不过话说回来,如果程序员有8年经验后还是高级开发,那么竞争力会逐步下降,一方面很难再要到更高的工资,另一方面很难通过面试争取到架构师的工作机会。那么高级开发如何升级到架构师呢?这个时候光靠态度就不行了。

1、理论知识不可少,还需要在自己电脑上,可以搭建个脚手架项目,比如自己装个虚拟机,搭建个Dubbo集群等,这样能熟悉基本的配置和用法。

2、最好找个互联网公司实践下,哪怕在互联网公司干的是高级开发的活,一定也有机会接触分布式组件,这样就有相关经验了。我在一家外企自学了1年多架构师的技能,然后到一家互联网公司,发现3个月的实践抵得上1年多的自己探索。

3、比如高级开发,架构师更得了解集群,而不是单机版的代码,所以更得关注一些技术以外的技能,比如负载均衡,容错处理,通讯协议和流程等。积累着方面的经验别无他法,只能多动手排查和解决实际问题。

4、虽然说光靠态度不行,但没态度也不行,在升级过程中,可能因定位问题不及时不准确,或者提出的方案有瑕疵,从而受到别人挑战,相反如果回到高级开发的舒适区也能稳定地过日子。我自己也有体会,我幸亏遇到了好师傅,而且我师傅的师傅是大牛,也为我指明了不少进阶方向。否则的话,这条升级路能坚持下来,还能难说。

架构师的瓶颈在于项目实践经验

目前在上海,架构师的月薪普遍在30k以上,如果稍微资深点的话,35k也不是问题,如果是一个公司的主心骨的话,那工资就更没上限了。

虽然不多,但我好歹也面试过Java方面的架构师,我在面试过程中发现,一些资深的架构师,相关实践经验相当丰富,更有部署上线和在线排查问题方面的经验。

比如MyCAT分库分表方面,高级开发会使用,一般的架构师会搭建集群,也会排查产线问题,而资深架构第一能知道该如何上线,上线时如何采用分组发布确保数据兼容性,上线后又该如何清洗数据,如果上线过程中出现问题又该如何回退。再比如针对Netty的OOM问题,资深架构的脑海里会出现若干个优先排查点,在这些范围内找到问题的概率很大,不行再具体看日志分析。

如果说,架构师还有人可以问的话,资深架构则没人可问,有问题得靠自己之前踩坑获得的经验,或者自己找资料。从这个意义上来讲,在架构师级别,如果技术上再要提升,那么只能多靠解决实际问题时积累的经验,而且更得结合业务,把负载均衡,容错处理等处理高并发的理念用分布式组件实现。这方面,我们可以参照下BAT或知名互联网公司的架构知识体系。

在任何时候,态度都是限制发展的瓶颈

不管是面试初级程序员还是高级开发或者是架构师,我发现一些表现好的,都是比较积极向上的。

比如回答问题时声音洪亮,沟通时也有尽量向表达清楚的愿望,哪怕某个方面回答不正确,但也能看出平时在不断积累知识,当被追问比较深时,也能比较耐心地一一解答,总之通过交流,给人的印象是比较踏实靠谱。有些人甚至平时会写博客,或者出过书,或者想尽一切办法来积累和提升自己。这类人大多能过,哪怕个别过不了,但努力的大方向没问题,完成进级也仅仅是时间问题,未来潜力也是非常可观的。

但相反,有些回答不好的候选人,总会给人些得过且过敷衍的感觉,比如回答问题比较简单,或者总是想套面试官的话,或者总想用些模棱两可的回答来蒙混过关。

我和其它的面试官沟通以后,对此感受很深,总是先自己要了,然后再肯上进,再自发地归纳出好的学习方法,并能有效地进行时间和工作任务管理。

我见到过不少反面的案例,这些人论资质不错,但或者光有决心没行动,或者干脆陷入在舒适区不可自拔,这些人很难有技术上的突破。相比之下,初级程序员在有决心有行动后,升级所需的时间不会超过1年,有些半年就够了,高级开发升级到架构师可能有些难度,但一般不会超过2年。

所以说,要升级,首先态度要端正,人要上进,这话说起来太容易,但能做到的并且能坚持下来的人数并不多,所以态度也是升级的瓶颈,这话虽然通俗,但不无道理。

技术可以暂时落后,但任何时候都要有上进的信念

本文提到的各级别程序员的瓶颈和突破建议,都是我和其它多位面试官在面试过程中总结而来,希望能对大家有所帮助。

再者,除去因升级而带来的收入提升外,在任何技术前提下,都有对应的挣钱手段。比如我在CSDN等地,看到不少大学生朋友靠写文章挣钱,而开专栏也并不是要多高深的技术积累。同时,当程序员升级到高级开发后,就能通过写书或者录制视频等方式挣钱。此外,如果是接项目,在各技术层面都有对应的项目。不过话说回来,对我们程序员来说,在任何公司任何职位任何场景,都有机会进入到舒适区“享福”。

有道是“技术穷但志不能短”,我在CSDN里就见识过不少靠努力翻身的例子,在我身边的同事朋友里,也经常看到“半年后技术大变样”的例子,这些榜样能激励我不断上进。所以本文在给出突破瓶颈建议的同时,更希望大家要有不断上进的信念。

作者简介:胡书敏,知名外企资深架构师,8年内面试过数以百计的Java工程师,5年的Java培训讲师经验,累计培养出数千位合格的Java工程师,帮助众多初学者成功拿到心仪的Offer。著有《Java核心技术及面试指南》。

原文链接:https://blog.csdn.net/sxeric/article/details/102389316

声明:本文系作者原创,转载需联系原作者。

【End】

成为Python能手的学习路径

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

热 文 推 荐 

☞OceanBase 的前世今生

☞中国互联网 30 年

☞谁是当今最顶级的技术?SQL、Java、Python、C++ 皆上榜!

☞惊!程序员真的把地府后台管理系统做出来了!

☞企业上云,如何做好服务器的安全?

☞自学编程、玩 vlog,90 后程序员们的冠军之路

☞警惕!程序员万字揭露被空姐骗到香港做传销的来龙去脉!

☞【经典必看】14个实用的数据库设计技巧

☞贾扬清:为什么说数据智能和云原生之间是“天作之合”?

☞大白话讲解比特币白皮书,十年后它依然是学习区块链的最佳资料,你真的读懂了吗?

 点击阅读原文,参加中国开发者现状调查!

你点的每个“在看”,我都认真当成了喜欢

8 年经验面试官解读程序员的技能瓶颈,以及突破瓶颈的忠告 | CSDN 博文精选相关推荐

  1. java程序员面试怎么难为面试官_Java程序员面试这些多线程问题你知道吗?

    在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.所以你应该准备很多关于多线程的问题.在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的.他们会问面试者很 ...

  2. java面试官:程序员,请你告诉我是谁把公司面试题泄露给你的?

    前情提要: **面试官:**你好!请先做一下自我介绍! **程序员:**balabalabala- 前戏先过了- **面试官:**先介绍SpringCloud核心组件及其作用 **程序员:**Spri ...

  3. 一个Java开发5年的程序员,讲述自己三年突破瓶颈的经验,注意到这些能少走弯路。...

    对于那些想改变自己的朋友们来说,还是需要看清楚一些东西,有一些经验也想和大家分享.同样是职场人士,我也有我的经验和感受.在打工的时候,我曾经创造了3年加薪7次的小小"战绩"(同时进 ...

  4. 培训班出身需隐瞒经历吗?商业项目经验怎样写?程序员面试准备大盘点

    作者 | hsm_computer 责编 | 伍杏玲 出品 | CSDN博客 在<春招妥了!资深技术面试官教你这样准备 Java 面试!>这篇博文后,提到了不少引导的说辞和技巧,如果能把面 ...

  5. 面试了一个程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验...

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  6. 8 年经验面试官详解 Java 面试秘诀!

    日前,全球知名 TIOBE 编程语言社区最新发布 11 月的编程语言排行榜,根据最新的榜单显示,相比上个月编程语言 Top 5 并没有太大的变化,其中 Java 依旧稳坐榜首,随后分别是 C.Pyth ...

  7. 300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!...

    原标题:直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer! 今天给大家分享一位Java程序员小伙去阿里应聘的经历! 从Java开发要掌握的技术来讲,前面已经说得差不多了.我主要想 ...

  8. 十年经验-给程序员小弟弟小妹妹们的一些总结性忠告

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告  走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的 ...

  9. 十年经验-给程序员小弟弟小妹妹们的一些总结性忠告(转)

    http://www.apkbus.com/android-11837-1-1.html 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把 ...

最新文章

  1. 使用淘宝的IP查询API实现IP地址省市展示
  2. 负离子发生器模块 ANION GENERATOR
  3. Nmap用法的思维导图
  4. 深度学习果实即将摘尽?11位大牛谈AI的当下(2018)与未来(2019)
  5. win7下搭建GO开发环境 - eclipse 配置GO开发
  6. Spark2.4.0 SparkEnv 源码分析
  7. Androidの网络Http之判断是否连接服务器
  8. Hanoi 汉诺塔——通俗易懂地讲解(c++)
  9. VB 阿拉伯数字转换为中文大写数值函数
  10. 895计算机专业基础,2017北京工业大学895计算机学科专业基础考研入学考试大纲...
  11. Quartus II 与ModelSim-Altera联合仿真PLL
  12. 如何写php大马,带你走进php大马的结构模块编写之路
  13. 怎么安装64位JAVA,大师来详解
  14. Linux efi分区被删除了,如何恢复意外删掉的EFI系统分区
  15. 笔记本计算机硬盘如何分盘,笔记本电脑硬盘怎么合理分区
  16. mem leak debug
  17. 建个网站需要多少钱?
  18. 二级MS Office高级应用--Excel常用函数
  19. SPSS Modeler KNN分类器(第十七章)
  20. memcpy、memmove、memcmp、memset函数的使用说明和模拟实现

热门文章

  1. vc 编译器的一些精典报错
  2. JavaScript高级程序设计学习笔记--DOM
  3. web前端开发工程师“想都不用想”的几个知识点
  4. textbox readonly的问题
  5. 关于如何解决特定场景下WPF4.0中“XamlWriter.Save序列化限制”问题的一种思路
  6. 全文搜索 (SQL Server) 修复
  7. docker on marathonmesos示例
  8. GitBook Editor不能pull新Book时的处理
  9. python如何实时查询oracle_python针对Oracle常见查询操作实例分析
  10. 雷达数据处理及应用第三版 pdf_数字阵列雷达:零中频接收机的优缺点