2019-03-02供稿中心: 北大青鳥武漢中南軟件學院
1、不能光有決心,一定得多用時間學習
我見過不少程序員一點點從初級升到資深開發,少得用1年半,多的用3年,成功完成升級的都有一個共同點:進步得靠學習,學習得靠時間堆砌。
我個人不算聰明,所以我對曾國藩的一句話體會很深:結硬寨,打呆仗。用在學習上,就是不投機取巧,學習時為自己,踏實地掌握基本功,然后一步一個腳印。這一定得靠時間積累。
這樣一天大概能用1個半小時,一周5天,至少能有7個小時,周末至少能有2個半小時,至少一周10個小時吧。
這不算多,以我親身經歷,每周10個小時學習,人而且還不累,如果再擠出點空閑時間,甚至一周能學15個小時。
2、先在Java core方面打好基礎
這部分需要學習的內容:
1、基本語法
2、集合
3、異常處理流程
4、基本的IO操作
5、JDBC
6、多線程
在這個階段無需學的內容:
1、界面編程,比如Swing, AWT
2、Socket編程
在初級階段可以適當了解,但無法過多深入學習的內容:
1、面向對象思想,剛開始學時可以了解下語法,比如繼承,重載的語法,盡量體會其中的含義,但真正做到理解得到高級開發的級別。
2、設計模式思想,這個也可以適當了解。
3 虛擬機方面的內容。
書不在多,而在于精,我個人推薦一本:java編程思想(thinking in java),真的把這本書里的內容理解了,Java core方面真能算掌握了。如果需要更多系統性的學習支持,可以在微信后臺回復你想咨詢的學習內容,阿里技術專家會為你一一解答。
怎么樣才能真正理解,不是光靠看,而是得邊看邊運行書中的例子,而且邊運行邊看書里的解釋。
這本書中的講解非常到位,而且全書是圍繞著面向對象思想講的,邊看邊運行代碼,估計最多用2個月就能看好。
這個我個人感覺是,打基礎是必要的,但不能過多拘泥于語法,所以要求大家邊運行代碼邊學習,如果只看書,一方面無法幫助大家深入理解代碼和知識點的含義,另一方面,看過以后印象不深,估計很短時間以后就忘了。
3、通過一些框架了解Java web方面的內容
這部分是進階。
目前大多數公司是用Java做Web項目,互聯網公司就更別說了。
這方面常規的學習路線是:
1、可以先通過jsp+servlet了解下 web編程的概念,尤其是servlet,可以直接從3.0入手,了解下異步調用。
2、隨后可以通過Spring MVC+Mytabis,搭建一個基本的MVC項目,了解下常規的網絡框架。
3、再深入了解下Spring IOC,AOP,ORM方面,可以再深入了解下事務和連接池等高級知識點。
其實,了解上述內容后,就可以在公司里干活了,在公司里,初級程序員往往會在架構師搭建好的框架里,通過別人寫的代碼堆砌完成自己的功能點。
不過,初級程序員在會堆砌代碼的基礎上,還可以深入了解下分布式組件,集群等知識點。這里可以推薦通過學習Spring Cloud框架里的組件,深入了解下Web方面的知識點。
這方面,講述Spring Mytabis的書比較多,大家找本偏案例的書即可。
4、不斷地提升自己的優化能力
這部分是拉開你和其它初級開發的差距。
資深程序員和初級程序員寫出來的代碼會有不同,主要體現在如下三個方面。
1 、資深程序員寫出來的代碼結構性比較強,這主要是資深程序員能在寫代碼的過程中,主動地引入面向對象思想和設計模式。不過面向對象思想和設計模式得靠項目積累,所以對初級程序員而言, 光學理論效果未必大,一定得在工作中多觀察下繼承,重載和接口復用等做法,因為面向對象和設計模式的表現形式主要包括這些。
2、得考慮性能優化,比如想下,如何讓sql語句更快,如何讓虛擬機內存性能更好,然后找這方面的資料。需求獲得更多學習資料,可以關注微信公眾號后,在后臺回復“加群”?;蛘咧苯犹砑游⑿殴娞?
3、一定得在“單機版”程序的基礎上問自己,如何搭建集群,或者,如何利用現有的面向集群的組件,比如可以用Eureka搭建服務治理的集群,在集群中用Ribbon做負載均衡??傊?,這方面都是有現有解決方案的,而且學起來也不難,但不是每個初級程序員都知道該學這部分的內容。
在這個基礎上,大家都可以技多不壓身了,比如學些redis,消息中間件等,但一定得圍繞上述三個學習方面。
這方面,大家可以看些虛擬機調優,數據庫優化以及Spring Cloud方面的書,還是這句話,選擇的事情需要看下這書是偏重理論還是案例說明,最好是買些案例多點的書。
5、通過提升自己的軟實力,讓自己更專業
一般來說,初級程序員更像學生,而不像職場人士,所以對高級程序員的要求往往是能獨當一面,而對初級程序員的要求是,能在項目經理的帶領下完成本職工作。
所以,初級程序員一定得提升如下的軟技能。
1 、要會積極主動溝通。能否具備好的溝通技能,這個是能力問題,肯不肯和別人溝通,愿不愿意積極主動地展示自己的想法,這個是態度問題。我見過不少初級程序員在干好本身的活以后,就縮在一邊,遇到測試和領導找過來時,也是敷衍,或者是不耐煩,這些人往往在公司中表現都不怎么好。
2、得提升自己解決問題的能力,積累解決問題的經驗。雖然目前很多問題都能靠百度,但比較專業的異常解決手段,以及基于框架的性能調優等,一般都得靠積累,所以初級程序員在遇到問題時,哪怕靠自己能力無法解決,但至少得想,得通過搜索等手段去解決,最后別人解決時,也得學下解決方法,這樣就能不斷提升自己的能力。
3、協調,甚至是扯皮的能力。比如一個活,自己做不完,這個很正常,但有些初級程序員就寧可自己扛。這樣哪怕是靠自己加班最終完成了,但對整個團隊來說,有延遲進度的風險。遇到這類情況,就可以早說,早讓項目經理協調。有些事甚至不該你或者你的組管,遇到這類情況,就可以推掉這類事,畢竟一個人的時間是有限的。
4、要學會和別人溝通協調,一起完成一個任務。
比如測試方面有個問題,而這個問題需要你和別人一起解決,這時,就要求你和測試溝通,了解問題細節以及重現方式,最終和別人一起解決這個問題。在這個流程中,技術問題倒是次要的,關鍵還在協調和溝通方面,初級開發可能會比較被動,坐等別人過來告訴自己該怎么做,但更應該主動和多方面溝通,積極推動事情往前發展。
這方面可能就沒法靠看書,只能多靠觀察別人怎么做了。
武漢北大青鳥中南軟件學院
咨詢電話:400-027-0822
官方微博:@武漢北大青鳥中南軟件學院
官方微信公眾號:whbdqngf
咨詢QQ:2034934699
武漢北大青鳥中南軟件學院地址:武漢市武昌區中南路中南大廈4-5樓
武漢北大青鳥東湖校區地址:武漢市洪山區八一路延長線東湖路附15號