先不說高級。java
就只說初級程序員常常容易犯的錯誤,把這些錯誤改正了,你離中級就近了。程序員
初級程序員常常犯的錯誤集錦web
1 命名不規範算法
2 日誌不規範spring
3 拒絕寫接口和假數據sql
4 不寫單元測試shell
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核心技術有着很是深刻的理解
架構師
能管理多個高級工程師及如下級別,提高工做效率
其發展戰略能夠參考下圖:
一、Java是一門面向對象編程語言,不只吸取了C++語言的各類優勢,還摒棄了C++裏難以理解的多 繼承、指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。
二、Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅 的思惟方式進行復雜的編程。
三、Java具備簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態 性等特色。
四、Java能夠編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等。 2018年9 月25日,Java11(18.9 LTS)正式發佈,支持期限至2026年9月。
技術不一樣。簡單的能夠理解爲:初級中級的只關注代碼,編程。高級的就要考慮系統的架構,總體框架。
1、初級部分
一、Java 程序設計基礎,包括 J2sdk基礎、Java面向對象基礎、Java API使用、數據結構及算法基礎、Java AWT圖形界面程序開發;
二、J2SE平臺Java程序設計,包括Swing圖形程序設計, Socket網絡應用程序設計,對象序列化,Java 經常使用數據結構,Applet,流和文件,多線程程序設計;
三、Java桌面系統項目開發,4~5人組成一個項目組,項目大小爲(15人*工做日);
四、Linux的基本操做,Linux下的Java程序開發,Linux系統的簡單管理;
五、Oracle數據庫,包括SQL/PLSQL;數據庫和數據庫設計;簡單掌握ORACLE9i 數據庫的管理;
2、中級部分
一、Java Web應用編程,包括 Java Oracle 編程,即JDBC;JavaWeb編程,包括JSP、Servlet,JavaBean;Java應用編程,包括Weblogic、Websphere、Tomcat;以及利用Jbuilder開發Java程序;
二、MVC與Struts,學習業界通用的MVC設計模式和Struts架構;
三、Java B/S商務項目開發,4~5人一個項目組,項目大小爲(25人*工做日左右)
3、高級部分
一、J2ME程序設計,包括J2EE程序、J2ME;Java高級程序設計(J2EE),包括J2EE體系結構和J2EE技術、EJB;Weblogic使用、 JBuilder開發;
二、Java和XML,包括Java Web Service,JavaXML, 業界主流XML解析器程序設計;
三、軟件企業規範和軟件工程,包括UML系統建模型和設計(Rational Rose 200x)軟件工程和業界開發規範;CVS版本控制、Java Code書寫規範;
四、J2EE商務應用系統項目開發,4~5人一個項目組,項目大小爲(25人*工做日左右)。
擴展資料:
初級java屬於初學者,可以完成基本的工做,可是每每不知道這麼作的目的,優秀者,可以寫出高水平的代碼,應用各類框架。
中級java每每以爲代碼不夠優秀,他們每每通過了不少的實踐,經歷過代碼的腐朽,有心想要寫出優秀的架構,可是由於經驗欠缺,架構能力不足,因此總有一些有始無終的感受。典型的幾種行爲:很是喜歡封裝函數,代碼,過分設計等。
高級java 通過以前一系列的設計,終於找到了架構設計的黃金點,懂得在實際與美之間進行取捨。
技術不一樣,簡單的能夠理解爲:初級中級的只關注代碼,編程。高級的就要考慮系統的架構,總體框架。
具體區別以下:
1、初級工程師
一、首先要學習java的基礎知識。
不要被新技術迷惑,所謂萬變不離其宗,新技術都是基於java的基礎之上,若是基礎不紮實,對於這些新技術的理解也是隻知其一;不知其二,學不到根源。
二、作一個java項目
在學習完java的基礎知識以後,作一個java項目來鞏固一下,在項目中會發現不少問題,經過解決問題,加深基礎知識的掌握。
三、學習數據庫的基礎知識和開發應用
軟件開發離不了數據庫,掌握幾種流行的數據庫:Oracle、SQL、server、MySQL等。
四、JEE基礎
在這裏首先要學習網站基礎,包括HTML、DHTML、JavaScript;接着要學習XML,XML JAXP;而後學習JEE基礎,包括JEE開發環境,RMI/IIOP、JNDI;最後學習JDBC數據庫的應用開發。
五、web開發
全面的JEE的web開發知識:Servlet JSP javaBean TagLib,到這裏作一個完整的web應用項目開發。
六、EJB開發
包含全面的EJB知識:1)EJB入門和無狀態會話Bean;2)有狀態會話Bean;3)BMP和CMP是實體Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的開發和應用。
七、開源框架的學習
學習幾種如今流行的開源框架:Struts、Spring、Hibernian、Webwork等。完整的學習這些框架的開發和應用。若是有興趣還能夠學習Ibati框架、AJAX技術和DWR框架的開發和應用。
八、JEE項目
綜合應用JEE的知識來開發一個完整的應用。
九、面向對象分析與設計
java是一種面向對象的語言,因此要深刻學習面向對象的分析與設計,另外還要學習UML統一建模語言。
十、接下來就是系統設計與架構
這裏要學習的是Java設計模式、EJB設計模式、JEE核心設計模式、JEE應用程序框架設計。
十一、軟件工程
軟件工程基本理論知識的學習,還有Rup和極限編程。
十二、技術研究
學習搜索引擎技術:如Lucene等、工做流技術:包含Shark、JBPM等、SOA架構和應用。
1三、綜合項目實戰
實現一個企業級的應用。
每一個階段在作項目的基礎上牢固的掌握應用到的知識,只有在實際的應用中發現問題,加深所學的知識。
2、中級工程師
一、對於Java基礎技術體系(包括JVM、類裝載機制、多線程併發、IO、網絡)有必定的掌握和應用經驗。
掌握JVM內存分配、JVM垃圾回收;類裝載機制; 性能優化; 反射機制;多線程;IO/NIO; 網絡編程;經常使用數據結構和相關算法。
二、對面向對象的軟件開發思想有清晰的認識、熟悉掌握經常使用的設計模式;設計模式;單例模式;工廠模式;代理模式;模板方法模式;責任鏈模式等。
三、熟練掌握目前流行開源框架(spring/springmvc/ibatis),而且對其核心思想、實現原理有必定認知;開源框架:spring;hibernate。
四、熟悉Oracle、MySQL等數據庫開發與設計以及緩存系統Redis或 Memcached的設計和研發;關係數據庫:oracle;PostgreSQL 緩存系統:Redis(Nosql)緩存系統:Memcached。
五、熟悉底層中間件、分佈式技術(包括緩存、消息系統、熱部署、JMX等)、底層中間件:應用服務器:Jetty(Tomcat)、 消息中間件:ActiveMQ、RabbitMQ、事務處理中間件:數據訪問中間件:ODBC、工做流中間件:JBPM,分佈式技術:緩存系統、消息系統、Restful、熱部署、JMX。
六、至少一種Java 應用服務器如tomcat、Jetty。
七、精通shell編程,熟練應用awk、sed、grep、strace、tcudump、gdb等經常使用命令。
八、有大型分佈式、高併發、高負載(大數據量)、高可用性系統設計開發經驗,分佈式:(多節點部署)、高併發、高負載(大數據量)、高穩定、高可用。
九、對配置管理和敏捷研發模式有所瞭解,配置管理工具:SVN、Github。
十、業務能力:系統升級、雙機、部署、容災、備份恢復、DFX。
十一、加分技術:腳本語言:Python,遠程調用,精通Internet基本協議(如TCP/IP、HTTP等)內容及相關應用。有必定安全意識並瞭解常見的安全問題解決方案。熟悉常見的一些解決方案及其原理:單點登陸、分佈式緩存、SOA、全文檢索、消息中間件,負載均衡、鏈接池、nosql、流計算等。
3、高級工程師
一、JAVA。要想成爲JAVA(高級)工程師確定要學習JAVA。通常的程序員或許只需知道一些JAVA的語法結構就能夠應付了。但要成爲JAVA(高級)工程師,您要對JAVA作比較深刻的研究。您應該多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、線程。若是可能,但願您對JAVA的全部包都瀏覽一下,知道大概的API,這樣您就發現其實您想實現的不少功能,經過JAVA的API均可以實現了,就沒必要本身費太多的腦經了。
二、設計模式。其實寫代碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個「好」字包括代碼可重用性,可維護性,可擴展性等。如何寫出好的代碼每每要藉助一些設計模式。固然長期的代碼經驗積累,只要您用心,會使您造成本身代碼風格。相信您的代碼也比較符合代碼的可重用性,可維護性,可擴展性。但既然前人已經給咱們總結出了經驗,咱們何不踩着前人的肩膀前進?
三、XML。如今的系統中不使用XML幾乎是不可能的。XML的功能很是強大,它能夠作數據轉換、作系統的配置、甚至可保存您的系統業務數據。所以您必須瞭解XML,包括它的語法,結構。您還須要比較熟練的使用解析XML的一些API,好比JDOM,SAX等,由於在咱們通常的項目中,XML每每擔當系統配置信息的做用,您須要用這些API解析這些配置信息,開發完美的項目。
四、精通使用一種或兩種框架。「框架都會有許多可重用的代碼,良好的層次關係和業務控制邏輯,基於框架的開發使你能夠省出不少的開發成本」。但我這裏但願您能精通,更多的是但願您能經過框架的使用瞭解框架的思想。這樣您在開發一個項目時思路會開闊一些,好比您會想到把SQL語句與您的JAVA代碼分開,再好比您會考慮把您的業務邏輯配置到XML或者數據庫中,這樣整個項目就很容易擴張了。
五、熟悉主流數據庫。其實真正比較大的項目都是有人專門作數據庫的,但每每不少項目要求做爲(高級)工程師的您也參與數據庫的設計以及SQL的編寫。因此爲了更好的爲國家作貢獻,建議您仍是多瞭解一些主流數據庫,好比SQLSERVER,ORACLE,多鏈接SQL和存儲過程以及觸發器。若是您不是「科班」出身,您還須要補充一些數據庫原理方面的知識。
六、精通一種或兩種WEBServer。我仍是要強調您要精通一種或兩種。由於做爲JAVA工程師,特別時想成爲高級JAVA工程師的您,您不可避免地要部署您的項目到WebServer上,並且只有當您精通一種WebServer,您纔可能最大限度地使用它的資源,這每每能夠節省不少時間和精力。
七、UML。我知道您確定想成爲高級工程師,所以您有必要了解或熟練或精通UML,這取決於您有多大決心想成爲高級工程師和項目經理。在比較正規的開發團隊中,UML是討論項目的交流工具,您要想作一個軟件工程師,您至少要能看懂,您要想作高級工程師,您要能經過它來描述您對項目的理解,儘管這不是必須,但卻很重要。
八、站在高度分析問題:這不是一個知識點,也不是經過書本就能學獲得的。只因此提到這一點,是由於我比您還着急,我但願您更快的成爲一個高級的軟件工程師,而不是一個通常的軟件工程師。但願您在工做中多向您的系統分析員、需求分析員、系統設計員學習,多站在他們角度上去看您在開發的項目。在最好在項目之初先在您的腦海裏對項目有個大體的分析、設計,而後和他們進行比較,找找差異,想一想缺點。
九、工具。您在這個階段可能接觸到不一樣的工具了,儘管您還須要使用JB或者IDEA,但能可能對ROSE,Together要多瞭解一些,由於您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鍾了,那些JSP頁面讓初級程序員去寫吧。