先不说高级。

就只说初级程序员经常容易犯的错误,把这些错误改正了,你离中级就近了。

 

初级程序员经常犯的错误集锦

 

1 命名不规范

2 日志不规范

3 拒绝写接口和假数据

4 不写单元测试

5 盲目集成

6 逻辑不清

7 不做方案

8 不关注性能

9 害怕重构

10 做出来就好,不考虑优雅的方案

11 不考虑未来需求的变化

12 遇到问题的时候不会试错

13 不会写伪代码

14 不做数据量的预估

15 提交代码不规范

16 不喜欢打Tag

17 不遵守发布流程

18 不知道Bug修复的优先级

19 总喜欢手动修改线上代码

20 不做数据备份

21 不做自测

22 不尽力模仿真实数据,测试数据很随意

23 不抽取公共代码

24 不认真听需求讲解

25 不看验收标准

26 不主动推进项目进度

27 遇到难题不主动反馈

 

低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无bug。高级程序员认为他们之所以高级, 在于他们认识到代码 bug 是不可避免的, 有千万种理由可以导致 bug,但他们可以在设计和逻辑上保证(追求)滴水不漏,并用逻辑的百分之百准确性还减少代码 bug。那么到底初级、中级与高级程序员的区别究竟在哪里呢?

初级程序员

初级程序员就是传说中的码农,依靠复制粘贴、比葫芦画瓢的方式完成代码的编写,通常一个方法几百行代码,恨不得一个类将所有的功能都实现,不考虑程序设计原则,也不考虑程序的执行效率,不考虑SQL注入的问题,更不去想如何能让我的程序质量更好,他们的目的仅仅是我的程序能够运行。

 

很多程序员都会经历这个阶段,而这个阶段是最容易养成毛病的阶段。但是有的程序员很快就摆脱了这个阶段,也有很多程序员停留在这个阶段很长时间,哪怕是掌握了更多的技术,但是这个阶段形成的思维模式却没有改变,养成的毛病也没有改掉。

我们就能听到这样的声音“这是哪个傻X写的代码,写的太乱了,还没有注释”、“我去!这代码完全不敢动啊,逻辑太混乱了,牵一发而动全身啊”。这些基本上都是初级程序员写的代码。

中级程序员

中级程序员更喜欢优雅的代码,而自己写出优雅的代码,封装、继承、抽象运用自如,能够独立完成系统中模块的开发。

 

高级程序员

高级程序员能够完成系统的设计,能够使用已掌握的技能解决问题。并且能够考虑到系统的扩展性、安全性、稳定性等问题。

很多程序员都止步于中级级别,靠一手SSH技术行天下,而身处初级时养成的毛病仍然存在,有的甚至已经工作5年却一直是这样,可塑性极差,由于工作时间长也学会了一手掩盖问题的好本事,这类人毫不客气的说就是项目的祸害。也有一些人达到中级或高级级别后厌倦了编码,从而转做需求分析、产品经理或项目经理,在国内做技术确实也很难拿到高工资,这也是很多技术人员转型的原因。

 

 

初级水平(认知理解技术为主):

项目实战方面:

1.能够熟练使用三大框架或者springboot进行基本的业务开发,熟悉MVC架构

2.能写工作流,熟悉常用的设计模式

java部分:

1.能熟练应用封装,继承,多态这三大特性。能熟练使用list,set等collection接口,及map接口。

2.对java的较为复杂的技术能够灵活使用如:多线程,反射,io流,网络编程和数据库编程

3.sql能够熟练掌握,如子查询,mybatis的复杂查询

中级水平(利用技术解决复杂业务和理解技术的原理为主):

1.对常用的框架的原理有较清晰的理解,能够掌握其设计思想和所用到的设计模式。

2.能独立的完成项目的某些模块的任务

3.能够进行性能优化,代码规范,编程习惯良好无冗余代码

4.对缓存,事务管理,日志,分布式等复杂技术有着深入理解

高级水平(技术领导):

1.能对需求进行架构设计,选择框架以适应最合适的业务,作为某个项目的领导,带领团队完成项目。

2.有自己的开源项目,可以写出自己的组件,对开源的框架能够进行二次编写,java核心技术有着非常深入的理解

架构师

能管理多个高级工程师及以下级别,提升工作效率

其发展战略可以参考下图:

扩展资料

1、Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多        继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

2、Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅         的思维方式进行复杂的编程。 

3、Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态         性等特点。

4、Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。 2018年9       月25日,Java11(18.9 LTS)正式发布,支持期限至2026年9月。

 

 

技术不同。简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。

一、初级部分

1、Java 程序设计基础,包括 J2sdk基础、Java面向对象基础、Java API使用、数据结构及算法基础、Java AWT图形界面程序开发;

2、J2SE平台Java程序设计,包括Swing图形程序设计, Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,流和文件,多线程程序设计;

3、Java桌面系统项目开发,4~5人组成一个项目组,项目大小为(15人*工作日);

4、Linux的基本操作,Linux下的Java程序开发,Linux系统的简单管理;

5、Oracle数据库,包括SQL/PLSQL;数据库和数据库设计;简单掌握ORACLE9i 数据库的管理;

二、中级部分

1、Java Web应用编程,包括 Java Oracle 编程,即JDBC;JavaWeb编程,包括JSP、Servlet,JavaBean;Java应用编程,包括Weblogic、Websphere、Tomcat;以及利用Jbuilder开发Java程序;

2、MVC与Struts,学习业界通用的MVC设计模式和Struts架构;

3、Java B/S商务项目开发,4~5人一个项目组,项目大小为(25人*工作日左右)

三、高级部分

1、J2ME程序设计,包括J2EE程序、J2ME;Java高级程序设计(J2EE),包括J2EE体系结构和J2EE技术、EJB;Weblogic使用、 JBuilder开发;

2、Java和XML,包括Java Web Service,JavaXML, 业界主流XML解析器程序设计;

3、软件企业规范和软件工程,包括UML系统建模型和设计(Rational Rose 200x)软件工程和业界开发规范;CVS版本控制、Java Code书写规范;

4、J2EE商务应用系统项目开发,4~5人一个项目组,项目大小为(25人*工作日左右)。

扩展资料:

初级java属于初学者,能够完成基本的工作,但是往往不知道这么做的目的,优秀者,能够写出高水平的代码,应用各种框架。

中级java往往觉得代码不够优秀,他们往往经过了很多的实践,经历过代码的腐朽,有心想要写出优秀的架构,但是因为经验欠缺,架构能力不足,所以总有一些虎头蛇尾的感觉。典型的几种行为:非常喜欢封装函数,代码,过度设计等。

高级java 经过之前一系列的设计,终于找到了架构设计的黄金点,懂得在实际与美之间进行取舍。

 

 

技术不同,简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。

 

具体区别如下:

一、初级工程师

1、首先要学习java的基础知识。
不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对于这些新技术的理解也是一知半解,学不到根源。

2、做一个java项目
在学习完java的基础知识之后,做一个java项目来巩固一下,在项目中会发现很多问题,通过解决问题,加深基础知识的掌握。

3、学习数据库的基础知识和开发应用
软件开发离不了数据库,掌握几种流行的数据库:Oracle、SQL、server、MySQL等。

4、JEE基础
在这里首先要学习网站基础,包括HTML、DHTML、JavaScript;接着要学习XML,XML JAXP;然后学习JEE基础,包括JEE开发环境,RMI/IIOP、JNDI;最后学习JDBC数据库的应用开发。

5、web开发
全面的JEE的web开发知识:Servlet JSP javaBean TagLib,到这里做一个完整的web应用项目开发。

6、EJB开发
包含全面的EJB知识:1)EJB入门和无状态会话Bean;2)有状态会话Bean;3)BMP和CMP是实体Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的开发和应用。

7、开源框架的学习
学习几种现在流行的开源框架:Struts、Spring、Hibernian、Webwork等。完整的学习这些框架的开发和应用。如果有兴趣还可以学习Ibati框架、AJAX技术和DWR框架的开发和应用。

8、JEE项目
综合应用JEE的知识来开发一个完整的应用。

9、面向对象分析与设计
java是一种面向对象的语言,所以要深入学习面向对象的分析与设计,另外还要学习UML统一建模语言。

10、接下来就是系统设计与架构
这里要学习的是Java设计模式、EJB设计模式、JEE核心设计模式、JEE应用程序框架设计。

11、软件工程
软件工程基本理论知识的学习,还有Rup和极限编程。

12、技术研究
学习搜索引擎技术:如Lucene等、工作流技术:包含Shark、JBPM等、SOA架构和应用。

13、综合项目实战
实现一个企业级的应用。
每个阶段在做项目的基础上牢固的掌握应用到的知识,只有在实际的应用中发现问题,加深所学的知识。

二、中级工程师

1、对于Java基础技术体系(包括JVM、类装载机制、多线程并发、IO、网络)有一定的掌握和应用经验。

掌握JVM内存分配、JVM垃圾回收;类装载机制; 性能优化; 反射机制;多线程;IO/NIO; 网络编程;常用数据结构和相关算法。

2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式;设计模式;单例模式;工厂模式;代理模式;模板方法模式;责任链模式等。

3、熟练掌握目前流行开源框架(spring/springmvc/ibatis),并且对其核心思想、实现原理有一定认知;开源框架:spring;hibernate。

4、熟悉Oracle、MySQL等数据库开发与设计以及缓存系统Redis或 Memcached的设计和研发;关系数据库:oracle;PostgreSQL  缓存系统:Redis(Nosql)缓存系统:Memcached。

5、熟悉底层中间件、分布式技术(包括缓存、消息系统、热部署、JMX等)、底层中间件:应用服务器:Jetty(Tomcat)、 消息中间件:ActiveMQ、RabbitMQ、事务处理中间件:数据访问中间件:ODBC、工作流中间件:JBPM,分布式技术:缓存系统、消息系统、Restful、热部署、JMX。

6、至少一种Java 应用服务器如tomcat、Jetty。

7、精通shell编程,熟练应用awk、sed、grep、strace、tcudump、gdb等常用命令。

8、有大型分布式、高并发、高负载(大数据量)、高可用性系统设计开发经验,分布式:(多节点部署)、高并发、高负载(大数据量)、高稳定、高可用。

9、对配置管理和敏捷研发模式有所了解,配置管理工具:SVN、Github。

10、业务能力:系统升级、双机、部署、容灾、备份恢复、DFX。

11、加分技术:脚本语言:Python,远程调用,精通Internet基本协议(如TCP/IP、HTTP等)内容及相关应用。有一定安全意识并了解常见的安全问题解决方案。熟悉常见的一些解决方案及其原理:单点登录、分布式缓存、SOA、全文检索、消息中间件,负载均衡、连接池、nosql、流计算等。

三、高级工程师

1、JAVA。要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经了。

2、设计模式。其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?

3、XML。现在的系统中不使用XML几乎是不可能的。XML的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解XML,包括它的语法,结构。您还需要比较熟练的使用解析XML的一些API,比如JDOM,SAX等,因为在我们一般的项目中,XML往往担当系统配置信息的作用,您需要用这些API解析这些配置信息,开发完美的项目。

4、精通使用一种或两种框架。“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开发使你可以省出很多的开发成本”。但我这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您会想到把SQL语句与您的JAVA代码分开,再比如您会考虑把您的业务逻辑配置到XML或者数据库中,这样整个项目就很容易扩张了。

5、熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及SQL的编写。所以为了更好的为国家做贡献,建议您还是多了解一些主流数据库,比如SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。如果您不是“科班”出身,您还需要补充一些数据库原理方面的知识。

6、精通一种或两种WEBServer。我还是要强调您要精通一种或两种。因为作为JAVA工程师,特别时想成为高级JAVA工程师的您,您不可避免地要部署您的项目到WebServer上,而且只有当您精通一种WebServer,您才可能最大限度地使用它的资源,这往往可以节省很多时间和精力。

7、UML。我知道您肯定想成为高级工程师,因此您有必要了解或熟练或精通UML,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队中,UML是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但却很重要。

8、站在高度分析问题:这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。

9、工具。您在这个阶段可能接触到不同的工具了,尽管您还需要使用JB或者IDEA,但能可能对ROSE,Together要多了解一些,因为您要画UML了。不要再对Dreamweaver等HTML编辑器情有独钟了,那些JSP页面让初级程序员去写吧。

 

 

 

posted on 2019-12-07 10:49  北辰_阿  阅读(1225)  评论(0编辑  收藏  举报