1. 首页
  2. 未分类

从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议

“u003Cdivu003Eu003Cpu003E我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师。我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次的话,他们的收入也就会停留在当前级别,哪怕工资年限再多,也无法提升工资水平。u003Cu002Fpu003Eu003Cpu003E 比如,我就面试过不少工作了5,6年的程序员,他们的技能也就停留在增删改查阶段,那么只能领到初级程序员的工资。更可悲的时,在面试过程中我发现他们甚至不知道上升的途径和方式,这样的话,可能当他们有10年经验时,或许还只是初级程序员。u003Cu002Fpu003Eu003Cpu003E 对此本文将围绕着初级程序员,高级程序员和架构师这三个职位,说明下这些级别的技能瓶颈,并给出若干突破瓶颈的建议。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F9b0cb13aa4c24d119f4a9b01f9f266a6″ img_width=”690″ img_height=”690″ alt=”从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E1 初级程序员的技能瓶颈与收入瓶颈u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E 哪怕是非相关专业,从培训班出来的程序员,要找个工作也不难,更何况是计算机相关专业出身的学生。u003Cu002Fpu003Eu003Cpu003E 在一般的公司里,对初级程序员的要求大多也是会增删改查,熟悉基本的业务,而且不少公司不会让他们干更高级的活。所以我在面试过程中,不少3年以内的初级程序员的水平和一些有5年经验的人差不多,这就进入了初级程序员的收入瓶颈。u003Cu002Fpu003Eu003Cpu003E 比如Java方面,他们仅仅会用技能,比如集合,多线程,数据库等,也会在Spring框架下干活,SQL方面,仅会写基本的SQL语句,或许还会使用简单的索引等技能。但如果我问及底层代码,他们知道得很少,问及Spring等框架知识,他们只会告诉我如何配置,如何在现有框架里干活。至于一些高级技能,比如分布式组件,或者LInux下的部署和日志排查,他们大多就不知道了。对于项目管理的工具,比如Jenkins,sonar等,他们可能都没听说过。u003Cu002Fpu003Eu003Cpu003E 如果面试时仅表现为会干活,不会调优,不会分析和解决问题,那么能力上也就是初级开发。这样的话,在上海,按当前行情,估计最高也就12k了,同时,如果干了5年还是这样的话,那么竞争力会大大降低。那么如何提升到高级开发呢?u003Cu002Fpu003Eu003Cpu003E 1 在平时得熟悉调试代码,并且,一旦组里出了问题,得尽量参与,刚开始可能分析和解决问题的能力不行,但慢慢就行了。u003Cu002Fpu003Eu003Cpu003E 2 多看些优化方面的技能,以及比较热门的技术,比如数据库方面,别单纯看JDBC的增删改查,可以看些NoSQL甚至redis缓存,然后看下SQL调优技能。u003Cu002Fpu003Eu003Cpu003E 3 多关注些项目开发和管理的技能,比如敏捷开发,站会,单元测试,集成部署,通过Sonar看代码质量等。u003Cu002Fpu003Eu003Cpu003E 4 这点比较关键,得多和别人交流,比如多和需求方沟通需求,多和测试方沟通问题重现步骤,多和组员领导沟通问题的实现方式。u003Cu002Fpu003Eu003Cpu003E 其实初级开发升级到高级开发还是相对容易的,只要主观上态度上端正,别固步自封,然后到处看些资料多和人交流即可。如果进互联网公司,在大压力环境下,身边大牛再多些,升级过程会更加顺利。 u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fb5619fb1ad8d45f4be5c612b69e98b51″ img_width=”640″ img_height=”640″ alt=”从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E2 高级程序员的技能瓶颈在于分布式组件u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E 高级开发论技术,有一定的调优经验,也有一定分析日志解决问题的能力,也能debug。论解决问题的能力,也能和别人沟通,从而接简单的需求,并能分析和解决一些问题。论团队合作,也能带3,4个人一起开发。其实这类能力,对工作个3年的程序员来说,不难达到,如果在节奏比较快的互联网公司里,甚至2年即可。u003Cu002Fpu003Eu003Cpu003E 论工资水平,当前在上海,高级开发拿个15k都算低,如果进个大公司,外带5年左右开发经验,估计能到20k,如果在互联网公司甚至能更高,但瓶颈估计在25k左右。u003Cu002Fpu003Eu003Cpu003E 我面试高级开发,他们一般基础知识比较扎实,比如Java集合内部的实现代码,高并发的诸多类,或者Spring框架的一些关键底层代码,都能说得上来。一般给我的高级开发的面试标准是,所需初级开发的技能,并在此基础上具有一定的调优能力,通过日志定位问题,设计解决方案和解决实际问题的能力,而且linux上也能部署代码。只要能说得上来,一般能给到高级开发的工资,就多少的问题。u003Cu002Fpu003Eu003Cpu003E 但我面试时,感受非常深的是,和架构师相比,高级开发对于分布式组件或基于云组件(比如k8s)或其它高并发分布式组件,有些人可能用过,但仅限于会用其中的API,让他们搭建一个集群,他们可能就力所不能及了,如果再问他们分布式组件在项目开发时经历过的坑,他们大多也说不上来。u003Cu002Fpu003Eu003Cpu003E 比如我问,Dubbo里通讯协议有哪些?高级开发一般能说得上来,因为这有现成资料,但我再问,根据你们的业务实际情况,你们用的是长连接还是短连接方式?为什么要用这种协议?他们估计就很难回答。如果我再问,如果要处理高并发的请求,需要在Dubbo里做哪些配置?如何同其它组件搭建成集群以达到容错效果?高级开发就更难回答了。 u003Cu002Fpu003Eu003Cpu003E 同初级开发升级到高级开发相比,高级开发升级到架构师更难,因为在一般的工作环境里,高级开发很难有相应的实践机会。不过话说回来,如果程序员有8年经验后还是高级开发,那么竞争力会逐步下降,一方面很难再要到更高的工资,另一方面很难通过面试争取到架构师的工作机会。那么高级开发如何升级到架构师呢?这个时候光靠态度就不行了。u003Cu002Fpu003Eu003Cpu003E 1 理论知识不可少,还需要在自己电脑上,可以搭建个脚手架项目,比如自己装个虚拟机,搭建个dubbo集群等,这样能熟悉基本的配置和用法。u003Cu002Fpu003Eu003Cpu003E 2 最好找个互联网公司实践下,哪怕在互联网公司干的是高级开发的活,一定也有机会接触分布式组件,这样就有相关经验了。我在一家外企自学了1年多架构师的技能,然后到一家互联网公司,发现3个月的实践抵得上1年多的自己探索。u003Cu002Fpu003Eu003Cpu003E 3 比如高级开发,架构师更得了解集群,而不是单机版的代码,所以更得关注一些技术以外的技能,比如负载均衡,容错处理,通讯协议和流程等。积累着方面的经验别无他法,只能多动手排查和解决实际问题。u003Cu002Fpu003Eu003Cpu003E 4 虽然说光靠态度不行,但没态度也不行,在升级过程中,可能因定位问题不及时不准确,或者提出的方案有瑕疵,从而受到别人挑战,相反如果回到高级开发的舒适区也能稳定地过日子。我自己也有体会,我幸亏遇到了好师傅,而且我师傅的师傅是大牛,也为我指明了不少进阶方向。否则的话,这条升级路能坚持下来,还能难说。 u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F434e80abb3f6454c91e08a894f240a78″ img_width=”500″ img_height=”500″ alt=”从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E3 架构师的瓶颈在于项目实践经验u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E 目前在上海,架构师的月薪普遍在30k以上,如果稍微资深点的话,35k也不是问题,如果是一个公司的主心骨的话,那工资就更没上限了。u003Cu002Fpu003Eu003Cpu003E 虽然不多,但我好歹也面试过Java方面的架构师,我在面试过程中发现,一些资深的架构师,相关实践经验相当丰富,更有部署上线和在线排查问题方面的经验。u003Cu002Fpu003Eu003Cpu003E 比如MyCAT分库分表方面,高级开发会使用,一般的架构师会搭建集群,也会排查产线问题,而资深架构第一能知道该如何上线,上线时如何采用分组发布确保数据兼容性,上线后又该如何清洗数据,如果上线过程中出现问题又该如何回退。再比如针对Netty的OOM问题,资深架构的脑海里会出现若干个优先排查点,在这些范围内找到问题的概率很大,不行再具体看日志分析。u003Cu002Fpu003Eu003Cpu003E 如果说,架构师还有人可以问的话,资深架构则没人可问,有问题得靠自己之前踩坑获得的经验,或者自己找资料。从这个意义上来讲,在架构师级别,如果技术上再要提升,那么只能多靠解决实际问题时积累的经验,而且更得结合业务,把负载均衡,容错处理等处理高并发的理念用分布式组件实现。这方面,我们可以参照下BAT或知名互联网公司的架构知识体系。 u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E4 在任何时候,态度都是限制发展的瓶颈u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E 不管是面试初级程序员还是高级开发或者是架构师,我发现一些表现好的,都是比较积极向上的。u003Cu002Fpu003Eu003Cpu003E 比如回答问题时声音洪亮,沟通时也有尽量向表达清楚的愿望,哪怕某个方面回答不正确,但也能看出平时在不断积累知识,当被追问比较深时,也能比较耐心地一一解答,总之通过交流,给人的印象是比较踏实靠谱。有些人甚至平时会写博客,或者出过书,或者想尽一切办法来积累和提升自己。这类人大多能过,哪怕个别过不了,但努力的大方向没问题,完成进级也仅仅是时间问题,未来潜力也是非常可观的。u003Cu002Fpu003Eu003Cpu003E 但相反,有些回答不好的候选人,总会给人些得过且过敷衍的感觉,比如回答问题比较简单,或者总是想套面试官的话,或者总想用些模棱两可的回答来蒙混过关。u003Cu002Fpu003Eu003Cpu003E 我和其它的面试官沟通以后,对此感受很深,总是先自己要了,然后再肯上进,再自发地归纳出好的学习方法,并能有效地进行时间和工作任务管理。u003Cu002Fpu003Eu003Cpu003E 我见到过不少反面的案例,这些人论资质不错,但或者光有决心没行动,或者干脆陷入在舒适区不可自拔,这些人很难有技术上的突破。相比之下,初级程序员在有决心有行动后,升级所需的时间不会超过1年,有些半年就够了,高级开发升级到架构师可能有些难度,但一般不会超过2年。u003Cu002Fpu003Eu003Cpu003E 所以说,要升级,首先态度要端正,人要上进,这话说起来太容易,但能做到的并且能坚持下来的人数并不多,所以态度也是升级的瓶颈,这话虽然通俗,但不无道理。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E5 总结,技术可以暂时落后,但任何时候都要有上进的信念u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E 本文提到的各级别程序员的瓶颈和突破建议,都是我和其它多位面试官在面试过程中总结而来,希望能对大家有所帮助。 u003Cu002Fpu003Eu003Cpu003E 如果大家感觉本文有帮助,请推荐本文,也欢迎大家通过评论来交流。u003Cu002Fpu003Eu003Cpu003E最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可,希望能对你有所帮助u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议

主题测试文章,只做测试使用。发布者:熱鬧獨處,转转请注明出处:http://www.cxybcw.com/18205.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code