零基礎小白到底應該選擇學習 java、php、前端 還是 python?

作為一個自學走過來的人,走過很多坑,做過兩年前端的工作,到現在一直做Java,深知學習編程是一件多麼不容易的事,所以把自己的想法寫出來,希望可以幫助大家

這三門當中,首推Java。真的,Python當然是好,但是對於一個新入門的人,最重要的是先找到工作不是嗎?而找工作的話,Java無疑是最容易的。對於跨行業的人而言,最困難的其實是第一步,那就是如何進入這個行業。如果你連進都進不來,第一份工作遲遲無法開始,那麼好好努力,補上數據結構,設計模式,算法設計這些差距就根本無從說起,不是嗎?


零基礎小白到底應該選擇學習 java、php、前端 還是 python?

不要被什麼科班出身之類的說法嚇壞了。雖然我是科班出身,但我始終覺得,只要你肯努力,這裡面並沒有什麼無法逾越的鴻溝,最重要的是不要好高騖遠,也不要急於求成。學習和積累是有一個過程的,在程序員這個行當,你一分付出,就會有一分回報。尊重學習的內在規律,循序漸進,終有一天,你會成為你想成為的那個人的。


接著,我來談談具體的規劃。

1. 瞭解Java的運行環境。搞清楚path和classpath是幹什麼的,怎麼在命令行進行編譯,執行。知道IDE的各個按鈕後面真正發生了什麼事情。

2. 掌握Java的語法。搞清楚包,接口,類,繼承這些基本概念。掌握多態,overwrite,死背下IO的接口,包括InputStream/OutputStream和Writer/Reader,死背下網絡編程和GUI編程的接口,死背JDBC接口。這一步,推薦的書是《 Thinking in Java》。

3. 掌握多線程編程。弄明白ConcurrencyHashMap是怎麼實現的,搞清楚synchronized是怎麼回事,弄明白為什麼要有Runnable接口。


零基礎小白到底應該選擇學習 java、php、前端 還是 python?

在第二步和第三步掌握到80%的時候,你就可以考慮找工作了。


4. 在工作中體會一下設計模式。推薦《Java與模式》這本書。看完裡面的Decorator,IO接口你再也不會去死記硬背了。用的時候,根據Adaptor和Decorator的命名規則,自己臨時推都推得出來。

5. 惡補數據結構。 搞清楚 LinkedList和 ArrayList的實現機制,瞭解它們的每一個接口的時間複雜度。同樣的還有其他容器,Map啊,Set啊,都是一樣的。棧,隊列,二叉樹,圖貫穿編程始終,如果這一步你邁不過去,那就只能在低階程序員裡打轉。

6. 如果有可能,最好對一些算法設計也有所涉獵。比如動態規則的思路,貪心算法,諸如KMP這種奇妙的算法等。這一步沒有數據結構那麼重要,學得好當然好,學不好也不用太挫敗。


到了這一步,你和科班程序員之間的差距就不大了。可以在工作中獨立承擔開發任務了。


7. 進階,這時候就可以有自己的思考了。Java發展到現在,被用在各種各樣的情景之中,說它是應用最廣泛的編程語言並不過分。你在打好基礎以後,就可以考慮應該向哪個方向發展了。比如服務端的架構,最好能學習一下JavaEE。JEE一直以來,都是讓人覺得門檻太高。

這個其實可以從Spring入手,搞清楚反射,控制反轉,依賴注射都是什麼鬼(這些神叨叨的名詞其實都是為了解決Java本身不夠動態這個缺陷而出現的,這裡不展開,我只想提醒的是,這些概念沒有什麼大不了的東西,不要被愛裝逼的傢伙嚇住了)。還有消息這個東西,還有ORM這個東西,都去搞搞清楚。想一下它們要解決什麼問題,再猜一下他們是怎麼實現的。

我面試的時候發現,其實大多數優秀的開發者,即使以前沒思考過這個問題,讓他現場設計一下Hibernate,都能設計得差不多。這說明,這些框架性的東沒有什麼大不了的。有了基礎,你也能設計出來。關鍵是要去動腦筋想。以上是以服務端開發舉例,那麼對於客戶端,你就去思考事件響應機制是如何工作的(這個我不熟悉,就不再多說了)。還可以深入研究一下JVM的源代碼,以及其實現機制,瞭解一下垃圾回收算法等等。


到了這一步,你就可以應聘Java高級開發了。如果運氣好,年薪30萬是有可能的。保底也要20萬了。


8. 架構。到了這一步,你就算是登堂入室,真正邁入高級開發人員了。這一步,你要思考更多的東西,比如,如何處理高併發,如何應對分佈式系統,如何提供更健壯的數據服務。到了這一步,那就沒有什麼可以參考的,現成的東西了。全靠自己的悟性了。那最後能達到什麼高度,就不是我這個層次能點評的了。


選擇Java是還沒有入行的人一個不錯的選擇,Java的崗位在任何一個城市需求都是最高的。一個公司什麼都可以不招,但是不能不招Java,因為Java程序員可以把前後端都幹了。但是Java這門語言的入門又難一些,在初期的兩個月是比較艱難的,所以選擇學習Java要付出相當多的精力去學習,大量的練習。把Java學會了,能掌握好學習編程的方法,以後在學習其他語言,很容易上手。


如果大家在入門學習Java的過程當中有遇見任何關於學習,行業方面的問題,有任何不懂的大家都可以隨時來交流,千萬不要選擇一個人孤軍奮戰,只有不斷交流的碰撞,我們才能發現問題的根本。

零基礎小白到底應該選擇學習 java、php、前端 還是 python?


分享到:


相關文章: