天天看點

帶妹入坑,她該怎樣提高自己的程式設計能力?(2)

另外,我在知乎上回答了一個自學 Java 的問題,點贊數 2000+,浏覽量更是達到了 42 萬。

帶妹入坑,她該怎樣提高自己的程式設計能力?(2)
很多讀者看完後都來私信感謝我,如果你恰好也需要的話,我把位址貼一下: https://www.zhihu.com/question/267403723/answer/1520053322 這個答案裡面把 Java 的學習路線細分成了 4 個階段,包括環境和工具準備、基礎入門、核心技術、進階更新等等,内容非常詳細。
帶妹入坑,她該怎樣提高自己的程式設計能力?(2)
基本上每個知識點我都有更詳細的講解,我相信一定能夠幫助到你。

02、讀書還是看視訊

有了這套路線圖,是不是瞬間就感覺明朗了起來,學習起來就不會犯迷糊了,知道下一步該做什麼,下下一步做什麼,就好像打遊戲的時候有一張地圖踩在腳下。

那接下來,就是把 Java 基礎打好,這對以後的學習很有幫助。怎麼打好呢?

學習之路是一項很逆人性的差事,并不是每個人都能夠堅持下來,尤其是打基礎的階段,過于強求的話可能就會适得其反,沒入門先放棄了。我身邊這樣的例子真的不少,是以你要告訴自己:

1)對 Java 感興趣,對網際網路的高薪感興趣,對“程式員秃頂”的段子視若無睹,隻有這樣,你才能真正地堅持下去。

2)富有堅韌不拔的學習能力,别總遇到一點點困難,就自暴自棄。

3)設定一個目标就死磕,如果你經常拿不到最終結果,需要反思是不是從來沒有成功做成過一件困難的事情,沒成功過是以不知道“堅持”可以大大提高成功的機率。

4)擁有解決問題的勇氣,學習的過程中注定會遇到許許多多的坑,要敢于跳進去,然後再爬出來,并且是在不尋求他人幫助的前提下。我見過太多的同學,遇到點屁大的問題就直接扔在群裡等大牛解答,殊不知搜尋引擎是第一步。

有人喜歡看書,有人喜歡看視訊,有人喜歡都看。也沒有必要做出非此即彼的選擇。

如果你喜歡讀書的話,可以按照我下面給出的 GitHub 倉庫去下載下傳自己喜歡的電子書。裡面的書單很全,你隻需要對應一種技術選擇一本你喜歡的就可以了,不要貪多。

https://github.com/itwanger/JavaBooks

GitHub 通路比較慢的話,也可以通路碼雲,馬上兩千 star 了,你也可以貢獻一個。

https://gitee.com/itwanger/JavaBooks

如果你喜歡看視訊的話,我推薦老九門的零基礎學 Java,B 站和與tube 上都有。B 站的位址我貼一下。

https://www.bilibili.com/video/BV1fx411a7zo

主講人徐嵩的授課風格非常風趣,聽起來很過瘾,我最近沒事的時候就看一集,回味一下當初學 Java 時沒有視訊資料的苦澀。

看視訊和看書的體驗完全不同,在我看來,通過視訊學習的好處主要有兩點:

視訊中講的東西比較形象,有一種身臨其境的感覺。

視訊有一種你看不到的魔力,可以提高你學習的自主性。

是以沒必要排斥看視訊這件事。學習的過程中,不要忘了動手去實踐,這裡推薦一個開源項目——vhr,或者叫微人事,我的好朋友江南一點雨是作者,是以我一直在大力推薦,是真的不錯(我也是貢獻者,逼近 20k star 了)。

https://github.com/lenve/vhr

打基礎的過程中,一定要多敲代碼,在敲的過程中肯定會出錯。不管你是看書,還是視訊,你覺得作者說得好像挺簡單的,以為看過一遍後自己也了解了。但往往不是這樣的,程式在敲的過程中會發生許許多多意想不到的問題,有時候作者限于篇幅的原因,往往會選擇性地跳過一些細枝末節,但這些對于程式設計的初學者來說,往往很難駕馭。隻有經過自己的手敲出來,才能證明真的是會了,懂了。

不是有那句俗話嘛,“當局者迷旁觀者清”,如果你站在讀的角度,就會很容易自欺欺人;但如果自己親自實操的話,就完全不一樣了,不僅印象深刻,還為以後的複盤做好了備份。在敲的過程中,最好把自己認為經典的案例分門别類,放到 GitHub 上或者碼雲上,等到以後再用的時候,也好找——書到用處方恨少,代碼也是。

出錯了沒關系,把錯誤解決掉的過程中你能聽到自己成長的聲音,就好像雨後春筍一樣。

03、哪些後端知識不需要再學了

按照我上面說的方法,頂多半年時間,就可以打好堅實的 Java 基礎了。如果你在學習的過程中遇到了問題,也歡迎随時和我交流。切記,要堅持,三天打魚兩天曬網隻會打不到魚還會弄破了網。

張無忌在學太極拳的時候,他爹的師父張三豐就提醒他一定要把之前所學習的武功全部忘掉,忘得越多才能學得越快。

同樣的,自學 Java 的時候一定要先知道哪些知識不需要再學了,畢竟技術的更新疊代就好像火箭一樣快,如果不懂得斷舍離,那學起來就不免太痛苦了。

1)AWT 和 Swing

真不知道為什麼,有些書籍還在介紹 AWT 和 Swing,已經 2020 了,誰還會用 AWT 和 Swing 去開發桌面應用呢?就我所知,C++ 程式員會用 MFC,C# 程式員會用 Winform 和 WPF。甚至還可以用一種更時髦的技術(比如 Electron)把 Web 網頁裹一層華麗的外衣,變成可執行檔案。

2)Applet

作為網頁插件技術,Applet 壓根就沒流行起來,就連曾經的熱門 Flash 也要淘汰了。

3)XML

XML 還沒有被淘汰,應用的地方還有不少。但是作為一種資料傳輸格式,它正在被 JSON 替代。

4)JDBC

我個人不建議再學習偏底層的 JDBC 了,尤其是對于時間寶貴的自學程式員來說。與其花這點時間,不如把精力投入到 MyBatis 的學習上。

5)Struts

Struts 是早年一個優秀的 MVC 架構,單從技術的角度來看,還是蠻不錯的。但是自從有了 SpringMVC 後,Struts 就被拍死在沙灘上了。

6)Hibernate

在我剛參加工作那會(2010 年的時候),持久層架構用的正是 Hibernate。但時過境遷,Hibernate 太重量級了,學習成本太高,取而代之的是輕量級的 MyBatis(支援定制化 SQL、存儲過程以及進階映射)。

7)JSP

說起來慚愧,我現在維護的一個項目,視圖層用的依然是 JSP。但如今流行的是前後端分離+微服務,JSP 就顯得不合時宜了。

04、高效的學習方法

如果你不是後端程式員,學的是大前端,也需要一份前端學習路線的話,那麼我推薦一個我的好朋友——小鹿,他那整理了一份目标很明确的學習路線圖,我這裡貼了一下下載下傳位址:

連結:

https://pan.baidu.com/s/1Z7le7FVVhoQA23t0KyxPyw

密碼: pa8d

附帶的還有一份前端面試小冊,非常精美,包含的内容有以下這些,全是小鹿的原創。

帶妹入坑,她該怎樣提高自己的程式設計能力?(2)

有了學習路線圖之後,學習的範圍就縮小了,事情就成功了一半,接下來就是學習方法的問題了,我這裡分享一些我自己的心得體會。

第一,善用搜尋引擎。平常需要找資料,需要解決問題,如果自己一時半會沒有方法的話,就去搜。

Google 是第一選擇,Bing 是第二選擇,微信搜尋是第三選擇。PC 端的話,Google 和 Bing 就很靠譜,基本上要找的東西,都有好的結果。手機端的話,就用微信搜,答案也很靠譜。

第二,學會提問。如果搜尋引擎找不到答案的話,不要直接把問題抛到群裡,抛給同僚、上司,或者大牛,要先對問題梳理一下。

我想問什麼,問題發生的環境是什麼,問題的描述是否足夠清楚,态度是否端正。

不要唐突,不要冒昧,還要臉皮厚,很難,對吧?這就是提問的藝術啊。我有 9 個氛圍很不錯的技術交流群,如果你需要的話,可以聯系我。

第三,善于總結和歸納。如果你覺得“怎麼總是感覺記不住啊,學完就忘啊,有什麼好的辦法嗎?”

有啊,當然有。學完一個知識點,如果需要動手去實踐,那就去敲代碼,敲一遍,還是了解,再敲一遍。如果真的感覺自己了解,嘗試寫篇文章,把自己的學習心得分享出來,看看是否能夠教會别人。

如果自己是半瓶水,倒出去隻能是半瓶水;隻有自己是一瓶水,倒出去才可能多餘半瓶水,對吧?

歸納總結的好處就是把零散的知識變成體系,在腦海中建構一副藍圖,日積月累,你就會發現自己也從一條小溪變成了海洋。

順帶推薦一下費曼學習法,靈感源于諾貝爾實體獎獲得者理查德·費曼,運用費曼技巧,隻需要花 20 分鐘就可以深入了解知識點。聽起來是不是很神奇?

費曼學習法的四個步驟:

第一步,能把一個孩子教懂。這有點類似我們古代的一名詩人,白居易,他希望自己的詩連老太婆都能看得懂,那就是好詩。

具體怎麼做呢?拿出一張白紙,寫下要學習的主題,想一下,怎麼把它教給一個孩子,你會講哪些,然後記下來。

你可以把白紙換成 iPad 了,有道雲筆記了,等等。

第二步,回顧。當我們嘗試把知識點講給小孩子的時候,可能會卡殼,那就需要把這些卡殼的點重新學習,這些點可能就是我們認知的邊界——重新學習的地方。

第三步,簡化語言。如果發現表述的文字比較複雜,不夠清晰,那就嘗試把這些内容讀出來,直到通順,直到自然,直到足夠簡練。

第四,傳授。這點雖然是可選項,但真的非常重要。如果確定自己了解了,那就把它教給别人,看你能否把别人教懂,也就是我說的善于總結和歸納。

整個思維導圖( 推薦的線上網址有百度腦圖、ProcessOn)了,或者部落格(建議使用 markdown 格式)了。

第四,多去實踐。實踐出真知,到底馬谡行不行,給他一個街亭守一守,對吧,收不住就是紙上談兵,沒啥鳥用。

GitHub 或者碼雲上有很多優秀的開源項目,挑一些優質的,down 下來,去研究研究,在原有的代碼基礎上,嘗試做一些優化,或者增加一些功能。

自己動手去做的過程中,你會發現,哇,真的有新大陸呀!

第五,熟練使用開發工具。Intellij IDEA、VSCode 都是非常流行的開發工具,能夠幫助我們在學習和工作中變得更加高效,裡面有沒有快捷鍵,有沒有什麼騷操作,對吧?

在使用 Intellij IDEA 編寫代碼的過程中,一定要注重代碼規範。提前就把 SonarLint、阿裡巴巴開發規約這些插件安裝上,寫完代碼就 check 一下,按照提示對一些不良的習慣做出修正。

硬核,這 3 款 IDE 插件讓你的代碼牢不可破

如果 Intellij IDEA 下載下傳比較慢的話,我也提供了離線版:

https://pan.baidu.com/s/1W9AsoLrBJTEtE9JTJlqNXw

,提取碼:pa92

第六,學好英語。這一點真的真的真的非常非常非常重要重要重要,即便是英語功底本身很差,一定不要自暴自棄,對吧?雷軍敢一句“are you ok”走天下,你怕什麼?

況且,Chrome 浏覽器可以安裝 Google 翻譯插件,Intellij IDEA 可以安裝 Translation 翻譯插件,隻要稍微有點英語的底子,完全不用怵的。

英語水準提高了,可以看官方的文檔,可以在 Stack Overflow 上找答案,可以檢視 JDK 源碼,等等,程式設計水準就會與日俱增啊。

第七,注意休息。身體健康非常重要,千萬不要淪為工作的機器,認為年輕的時候就應該拼命的加班,通過加班提升技術,多掙點錢。這種想法可以有,但要節制,懂嗎?

兩本電子書,送給你,專業吧?

《程式員健康指南》

https://pan.baidu.com/s/1EssOkFfZV93QIB9IAFmjmw

密碼:pl0i

《頸椎康複指南》

https://pan.baidu.com/s/1AdqcGTLOUkQxrFFURNYq7A

密碼:ouhh

05、一點小小的請求

如果這篇文章的确幫助到了你,哪怕一點點,我都覺得非常的開心。當然了,如果你覺得有幫助,請幫忙點個贊,滿足一下我的虛榮心,謝謝了。