版本一

初级—初

掌握java基础,熟悉常用类库。理解java web中的servlet,jsp,并了解常用的框架对java web的封装原理,能够借助框架完成增删改查功能。理解数据库在web开发中的地位。

初级—中

理解java中较为高级的特性,如反射,动态代理,JVM,内存模型,多线程等等。熟练使用框架,对框架中遇到的bug,能够借助日志和搜索引擎分析出问题的原因。在团队中,能够独立完成普通后台业务功能的开发。了解数据库的高级特性,如索引,存储引擎等等。

初级—高

理解java分布式架构,微服务架构,了解其与集中式架构的区别,并能保证分布式代码质量。熟练使用各个中间件如redis,mq,zookeeper等等,并了解其工作原理和使用场景。能够在中级或高级程序员的带领之下,完成非核心功能的研发。能够关注开源,并且具有阅读源码的能力。

中级

具备一定的项目开发经验(3年之上一线互联网产品研发经验),拥有线上bug的处理能力,JVM调优能力,以及完成核心业务功能的开发。并且带领团队的新人,能够按能力分配任务。

高级

团队的核心人物,把控整个项目的质量,包括代码漏洞和规范问题。具有5年以上项目开发经验,2年以上架构搭建的经验,能够根据业务选择不同的架构类型;根据团队组成,分配不同的任务。具有将自己的知识分享出去的能力,带领初级程序员走向中级,中级程序员走向高级的能力。

版本二

凡人:买本书凑凑热闹,听得多写的少,过段时间就把老师教的都忘了。这个阶段是刷掉人最多的阶段,也是从凡人到程序员本质区别的阶段。你的日后成就在于你的习惯与态度。隔一段时间整理自己的知识体系是重中之重。如果你做得多于看代码,那么恭喜你,你进入下一阶段。

筑基:评价标准:懂了怎么配置环境变量,懂得bin目录下都有什么,java命令行基本懂点。明白了变量类型,也碰过几个坑,知道java的值传递,引用传递,脑子里有点函数和类的概念。try catch用不好,用println多余log4j,知道继承但就是不用。if else看得懂switch知道但用的不多(基本都在用if),知道遍历迭代递归,但只会用for,看到foreach傻眼了,iteracter一脸懵逼,时不时的写出几个超长函数。

进入这个阶段恭喜你,你已经是个程序员了,但只是个炮灰小白,毕业生培训一个月的水平,会用eclipse但用不好,想要进一步还要自己提升人生价值。

金丹:学了一段时间java发现自己进入一个瓶颈,简单的代码能看懂但一到项目就懵逼了。在框架的世界里迷茫,听过struct1和2,听过spring但不知道这些框架个有什么特点。你会发现自己不知不觉多了很多新词,restful api,函数式编程,异步,等等。这是个迷茫期也是个成长期,你的java人生在这个阶段才真正褪去学生时代的影子进入到生产第一线。挺过来就是破茧成蝶

元婴:你决心重新梳理一遍自己的知识体系,发现自己以前多么傻多么天真。终于你发现了多种类型的数据并对他们的作用有了大踏步的理解。明白了list找重复不用整个list都遍历一遍,放到set里就好,也明白arraylist和linkedlist的优劣。渐渐的你迷恋上了算法,以前看不懂的排序在自己的手里变得游刃有余。你变了,发现bat的面试题从高不可攀变得有趣起来。这个时间点的你觉得bat不是终点,google amazon facebook里和全世界的高手一较高下才不枉红尘走一遭

炼虚:你进一步梳理知识体系,发现自己以前用的不过是Java多年前淘汰下来的语法,渐渐lambda代替了for,@注解也越用越流利,spring boot也越来越顺眼,渐渐的你喜欢上了写interface,你发现程序越来越接近书上说的松耦合。getter setter让封装性更好,interface变量也完美的实现多态性。你已经有了自己的函数库,不用遇到一个问题就丢给百度。此时此刻你已经炼化了虚伪,成为真正的炼虚阶段。

合体:这一步的你已经不再受到语法和框架的束缚,你加入了hadoop军团,知道怎么调试jvm也碰到了java的瓶颈,你也许碰到了jvm上另一朵花:scalar,也许在scalar之前也写过屁眼通红(python),或者受过c++的折磨。总之,你已经不再受java的约束,以你java的基础,你开始了几门语言的学习,并发现世界真大,我好渺小,java的功能从最初的搭建web服务器到后来的android大军,再到hadoop的异军突起,java像打不死的小强到处都是他的影子。但你也深深体会了java的迟暮,更新越来越难,新版本的java要为老版本的兼容失去太多太多。

大乘:你进入了AI领域,发现python在人工智能领域的强大,你不服气,参照着sklearn开始自己写机器学习的算法,从开始的决策树到后来的xgboost,一步一步你追赶着潮流,渐渐成为了时代的先锋,此处的你已经是宗师级人物,bat的一方大佬,你在github上发布框架,发布包,发布project,渐渐你发现编程从一门语言的学习变成了数学的海洋,无论多高的天赋,在数学面前都难以翻出浪花来。

真仙:渡劫成仙,你已经是语言之父级别的人物了,你开始自己写编译器,学术界引领潮流,Google等世界级大厂请你做科学家,思考人类的未来。抱歉我离这个境界太远,想象不到这是个怎样的境界。

版本三

实习生

技能:只需要掌握一些Java基本语法,JS语法之类的,这个很模糊,有些没有Java基础的也可以当实习生,但仅限有名的大学。
面试:我还真不知道实习生面试会问些什么
升级:3-6个月,掌握基本的开发就能算初级了。

初级

技能:掌握基本的Java,h5,js,数据库基本操作和优化。这个等级我认为着重点就在Java基础上,泛型、集合、流等等,但是暂时不需要掌握地太深,能够应付常规开发任务就行。
面试:Java基础为主(比如常用集合的原理,实现方式,区别;流在项目中的使用;多线程以及线程安全会问到一点,但不会很深入)。主流框架的使用,web的工作流程(比方说SpringMVC流程),各有什么优缺点以及适用场景
升级:3年以上

中级

技能:
1. 精通Java各种API,各类集合的优缺点、泛型的使用与原理、常用的设计模式、多线程等;熟悉各大主流框架,对Spring的IIOC,AOP等,MyBatis设计与原理,Hibernate的代理Bean原理等等要非常熟悉,如果读过源码那更好。
2. 熟悉各类中间件,MQ、Ehcahe、Redis等,知道他们用法与基本原理;对架构有一定的初识,一致性算法,容错方案等等,懂得基本的调优;
3. 数据库方面要求精通SQL编程,能够解决实际问题,这个年限面试的话,数据库SQL方面的问题一般都会问得比较刁钻;针对不同的场景能够给出一定的数据库方案;其次是数据库调优,SQL语句的优化调优,查询优化,读写分离,主从设计等等;
4. 项目经验丰富,这个年限的最好需要有一个行业沉淀的项目经验,支付行业,金融行业或者医疗行业等。
面试:
仍以Java核心API为主,但会比较深层地去问,比方说各类集合的实现原理,优缺点;能不能大致写出它们的实现原理;对不同数据库引擎之间的优缺点(MySQL)要有了解,索引的原理,给出一定的优化方案;
还会有一些算法上的题目;大多都是比较经典的题目或者切合公司实际需求的题目。这块有难有简单,看具体情况。
升级:
4年工作经验以上,并且技术要达标

高级

技能:
5. 简单地说就是精通Java,尤其是对高并发下线程安全的认知;同步锁机制、Java内存模型,一致性模型等;对如何编写线程安全并且高效的代码要有深刻的理解;对其他的API,例如流,泛型化程序设计等十分精通;
6. 熟悉NIO(精通的话更好);掌握NIO框架,比如Netty,掌握Netty通信原理、线程模型、能够独立编码出高性能的NIO项目
7. 熟悉异步通信,JDK Queue、JMS以及MQ产品,深刻理解异步通信带来的实际价值与实际作用
8. 熟悉数据一致性模型框架,例如:Zookeeper,能够掌握基本的数据一致性模型,算法等;分布式事务,分布式锁,分布式对垒等;掌握ZK的基本原理,线程模型,数据模型等
9. 分布式结构:能够正确认知分布式结构,了解如何维护分布式结构;如何维护一个高可用的分布式结构;了解分布式的四大特点;
10. 精通项目构建工具,ANT,Maven;了解它的工作流程,插件如何工作等
11. 熟悉常用的web容器,Tomcat,nginx,weblogic,jboss等;熟悉用法,了解基本的结构和优缺点;尤其是nginx,对静态资源存储和反向代理,要有更深的理解
面试:
Java核心,会问得很深,对线程安全机制要能够掌握地非常彻底;例如对象头补全,AQS,CPU模型,一致性模型;Java内存模型的实现原理等。结合项目经验,会问很多实际性的问题,例如,数据库数据读写方案。
升级:
这个就比较难了,全看个人资历;大多数都是转型当了项目经理或者产品经理

架构师

除了前面所有的知识点外:
精通中间件,例如MQ,KafKa,Redis等;知道它们的内存模型是怎样的,是怎么维护线程安全与高可用性的
精通数据库一致性算法,ZAB,Paxos算法等;并且能够使用数据一致性框架能够搭建出类似于数据发布与订阅、负载均衡、命名服务等;精通分布式锁机制,序列号生成算法等;
精通NoSQL,MangoDB,Redis等,精通它们的算法
精通PRC服务设计,SOA架构和服务架构Boot,这个是最难的,不仅要考虑到分布式节点安全,负载上的均衡,容错方案,灾备方案;动态恢复等
精通存储设计,不管是关系型数据还是K-V数据;精通数据处理方案,水平切割,还是垂直切割,数据迁移;精通数据分析方案,能够对于数据分析提出合理的解决方案(用空间去换时间等)
精通Dubbo,能够使用Dubbo这类RPC服务,搭建高可用分布式服务,熟悉通信协议,机制;能够开发私有协议的能力
JVM优化,精通Java内存分区,能够根据实际问题给出最优JVM解决方案;精通JVM的垃圾收集算法和各类垃圾回收器的优缺点
Web容器调优
精通统计分布,线性规划等;这一点与算法息息相关;能够根据数据做出详细的分析
面试:
这个还真不是很清楚具体会问什么;

版本四

新手:依靠指令清单,必须按部就班。就是必须给出详细而具体的操作规则,才能工作。比如你做一道从未做过的菜,需要看菜谱的说明,第一步做什么,第二步做什么等等,直到最后烹饪结束。

高级新手:有限的情景洞察力,同等对待工作的各个方面。对全局性、体系性的东西没兴趣。这是小工的水平。比如他能跟着师傅干点活,打打下手。可以靠着反复检索搜索引擎、StackOverflow 解决具体的小问题。

胜任者:能够独立解决各种各样的领域内问题。这是一般的企业招聘,比较希望招到的等级,招进来稍作适应就能干活了,省心省力。

精通者:经验丰富,可以自我纠正、自我改进。这类等级的人,思考可以指向内在,通过反省、反馈改善技能。这种在企业可以算上高手、大拿了,培养不易。

专家:依靠直觉工作,不需要解释和理由。实际你让他解释,他可能也说不出个所以然,就是直觉给出答案,然后还是对的。专家人数稀少,需要很长时间训练、实践。通常的说法是 10 年出专家,10000 小时定律。

这个是理论上的研究,实践中比较缺乏操作性,难以迅速的判定应聘者的实际情况。不信你打开收进来的大把简历,刚毕业的学生,每个技能名词上面都是一堆堆的“精通” – 你相信么?但它可以当成一个职业技能等级判定的参照标准。

于是乎,各家企业开启了各种“笔试”、“机试”,多轮面试,并且严格要求学历以及出身院校,试图以此过滤掉不合意的应征者,留下合格的人选。它当然是可行的,但是效果一般,而且容易出错,错失有思想有水平的人。不然也不会催生出各类“推荐式”的招聘。

看重学历、学校当然也有其优点:它是快速过滤的手段,毕竟能考上好学校的人智商不会太差吧。但在大数字公司的一朋友说,公司里面还有初中毕业,一直精研安全领域的人,技术能力也是十分出色。如果严苛对待背景,这些人就会错过了。因为人的生活多种多样,有各种历史的背景因素影响经历。而部分人的经历,就是跟一些人不同的,可是不妨碍他们同样可以变得优秀。招聘,实际上是建立信任关系。如果有充足的信息证明,应聘者足够优秀,这就够了。条条框框只是辅助手段,并不是目的。

程序员技能树的分层分级方法相关推荐

  1. 2016年程序员如何提高自己的方法有哪些?

    作为软件开发行业,新技术在不断的更新,如何在新的时代实现自己的人生价值,唯一的办法就是为自己树立一个更高的目标,一个人有了目标后就会有了努力的方向,那么在2016年程序员如何提高自己的方法有哪些?新霸 ...

  2. 蛋花花分享程序员赚外快有哪些方法

    蛋花花分享程序员赚外快有哪些方法!现在花钱的地方多了去了,房贷车贷.衣食住行样样花钱,所以很多程序员都在找赚外快的方法,下面蛋花花就来给大家分享一下程序员赚外快的方法有哪些: 01兼职网站 A.程序员 ...

  3. 2016年末程序员突破自我的绝密方法分享

    新霸哥一直致力于了软件开发行业,从事软件开发快五年了,时间过的很快,学到了很多知识,也思考了很多的问题.从最近和大家的交流中,新霸哥发现了很多的朋友在做了软件开发一段时间后非常迷茫,不知道未来的路该如 ...

  4. Java程序员---技能树

    计算机基础: 比如网络相关的知识. 其中就包含了 TCP 协议,它和 UDP 的差异.需要理解 TCP 三次握手的含义,拆.粘包等问题. 当然上层最常见的 HTTP 也需要了解,甚至是熟悉. 这块推荐 ...

  5. 一个退休程序员,用高中几何方法,让百年数学难题逼近理论极限

    十三 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过1厘米. 该如何设计一个通用的补丁,能够把所有的洞都补上呢? 这个 ...

  6. 雷观(十五):提高生产力和程序员价值的2种方法

    2019独角兽企业重金招聘Python工程师标准>>> Web项目,尤其是Web管理系统,被很多程序员认为没有技术含量.这种项目,主要功能就是增删改查,尤其是查询方面,更是多种多样. ...

  7. 新手编程:程序员 5 种编程入门方法,快速学会一门编程语言!

    程序员要精通一门语言,还是要掌握多门语言? 对于这个问题,公说公有理,婆说婆有理. 技术更新太快,精通一门编程语言已经实属不易,又怎么好意思说精通多门语言呢? 不过呢,当你精通一门语言同时,涉猎一下其 ...

  8. 分享六个程序员赚100万的方法

    文本由麒麟子(qilinzitm)原创,转载请保留本声明 大家看到的是这篇文章的第二个版本,因为第一个版本被大家否决了.为了让大家更直观地了解方法,我们以故事的方式进行.下面这6个故事,让你满足偷窥欲 ...

  9. 如何做一个职业的程序员-《麦肯锡方法》读书笔记

    摘要 这本书主要讲的是如何系统的解决问题,也就是方法论这种玄乎的东西.那么到底实不实用的呢,还是说只是顶着麦肯锡这个世界知名的咨询公司的光环,来贩卖知识了,这得看过才知道. 这本书讲了什么 这本书很薄 ...

最新文章

  1. 测试适合眉形的软件_软件测试的自我修养:正向思维与逆向思维
  2. 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授
  3. [雪峰磁针石博客]计算机视觉opcencv工具深度学习快速实战1人脸识别
  4. esp8266 rtos sdk在小黄板上的使用
  5. [HDOJ1016]Prime Ring Problem
  6. 大文件下载及视频点播的CDN加速实践
  7. 交换机的基本功能和应用就是集中连接网络设备
  8. SAP CRM WebClient UI和Hybris backoffice UI开发的相同点
  9. [蓝桥杯][2015年第六届真题]密文搜索(排序+二分)
  10. DevOps组织IO专业人员新角色分析与技能提升
  11. Alpha 冲刺 (6/10)
  12. 从新获取jar_SpringBoot配置文件放在jar外部
  13. c语言玫瑰花图形程序,一个玫瑰花的程序
  14. linux查看程序中最耗时的代码,【Linux】CPU时间与处理器耗时
  15. C#获取文件夹下的所有文件名
  16. 轨道交通重要组成部分网络时钟系统(子母钟系统)
  17. STM32F4 OLED详解
  18. 在别人电脑登录微信会【泄露隐私】,登录微信后一定要删除这个文件
  19. 什么是计算机?计算机的硬件系统组成有哪些?
  20. 女神撤回的消息被我找回了..Python教你查看

热门文章

  1. 最后1天!生信入门转录组和可视化学习捷径
  2. php中以双下划线打头的作用
  3. SQL 查询的分布式执行与调度
  4. 阿里云ACP认证考试易错题集(含答案及解析)
  5. 微信小程序开发案例分享-必背诗:从0到1,从前端到数据库
  6. java bfs 迷宫例子_51-迷宫(一)- java版dfs和bfs
  7. 洛谷 - P1014 [NOIP1999 普及组] Cantor 表 [Java版]
  8. 微信小程序canvas实现画圆圈头像
  9. mysql3306端口被占用无法终止_Mysql3306端口被占用无法启动解决办法.doc
  10. 大学计算机专业清华,中国计算机专业最“牛”的4所大学,清华第1,当之无愧...