雙非本科,聊聊我是怎麼學習編程的。

大家好,我是 Guide哥~

我的學校是荊州一所雙非一本。

整個大一,我都沒有怎麼認真學習編程,每天就是出去玩,還有參加各種社團活動。

在大二上學期末,最終確定了自己以後要走的技術方向是走 Java 後端。於是,我就開始制定學習計劃,開始了自己的 Java 後端領域的打怪升級之路。

到了大三,我基本把 Java 後端領域一些必備的技術都給過了一遍,還用自己學的東西做了兩個實戰項目。整個過程一共花了我一個暑假+半個學期,每天的學習強度基本都在 10 個小時以上。

這篇文章就簡單聊聊:我是怎麼學習編程的?

👍推薦2021最新實戰項目源碼下載

有哪些學習的途徑?

一般來說,有了一個具體的學習路線,知道學習什麼之後,我們通常有下面幾個方向來學習:

視頻

初學編程的小夥伴儘量多看視頻,因爲,視頻教程比較容易理解。

不過,對於經驗已經比較豐富的小夥伴來說,視頻教程相比於文檔教程學習起來會更慢一些。

像慕課網和嗶哩嗶哩上面有挺多學習視頻可以看,只直接在上面搜索關鍵詞(比如 Java、MySQL)就可以了。

img

提個醒哈!在嗶哩嗶哩上學習的時候,不要學一會就跑到別的分區去了,有點頂不住啊!

博客

網上的博客大多沒有體系,推薦你在解決某一知識點或者問題的時候可以在網上找一些相關的博客看。

就比如我在學習消息隊列 Pulsar 的時候,先把Pulsar 官方文檔看了一遍。然後,自己在網上找了一些相關的文章來深入學習。

Java 領域比較成體系的博客,推薦 JavaGuide(項目地址: https://github.com/Snailclimb/JavaGuide)

👍推薦2021最新實戰項目源碼下載

官網(官方文檔)

除非是一些國產項目的官方文檔提供了中文版本,否則大概率是英文的。

另外,官方文檔介紹的往往也比較粗糙,不太適合初學者作爲學習資料。

不過,官方文檔我們一定是要看的。通過官方文檔你才能知道你學習的技術最新的技術動態,才能知道這個技術有哪些模塊需要學習,才能知道這個技術具體可以幫你解決什麼問題。

比如下面是 Spring 的官網,通過網站首頁你就可以大概知道 Spring 可以幫助你:

  • 快速開發網站
  • 開發微服務架構的軟件
  • 開發響應式架構的軟件
  • ......

書籍

書籍的內容更成體系,更系統。不過,書籍存在時效問題。你可以通過一些手段瞭解技術最新動向:

  • 關注一些技術社區的動態比如 Github Trending
  • 關注一些公開的技術分享
  • 關注一些技術大佬
  • ......

自學過程中有哪些需要注意的地方?

英語閱讀能力

大部分優秀的技術書籍都是國外的,幾乎都是英文,並且,大部分技術的官方文檔也都是英文的。

所以,提高自己的英文閱讀能力很重要。英文閱讀能力暫時比較差的也不要緊,有道翻譯和谷歌翻譯就是你最好的老師。如果是使用 Chrome 瀏覽器的話,我還推薦你安裝一個 Mate Translate 插件。 這個插件對於網頁閱讀英文文檔太友好了,可以一站式翻譯您的網頁以及標記的文字段落。

多練!多記!多實戰!

不論是看視頻還是看書,最好都要跟着一起練,記錄一些關鍵的內容。

另外,如果你是看視頻學習的話,最好可以邊看視頻邊找一本相關的書籍閱讀。

學習過程中沒弄懂的知識點一定要儘快解決。如何解決?首選百度/Google,通過搜索引擎解決不了的話就找身邊的朋友或者網上認識的一些人。

另外,一定要進行項目實戰!很多人這時候就會問沒有實際項目讓我做怎麼辦?我覺得可以通過下面這幾種方式:

  1. 實戰項目視頻/專欄 : 在網上找一個符合自己能力與找工作需求的實戰項目視頻或者專欄,跟着老師一起做。跟着老師做的過程中,你一定要有自己的思考,不要淺嘗輒止。對於很多知識點,別人的講解可能只是滿足項目就夠了,你自己想多點知識的話,對於重要的知識點就要自己學會去深入學習。
  2. 實戰類開源項目 : Github 或者碼雲上面有很多實戰類別項目,你可以選擇一個來研究,爲了讓自己對這個項目更加理解,在理解原有代碼的基礎上,你可以對原有項目進行改進或者增加功能。Java 類的實戰項目,你可以從 awesome-java 這個倉庫裏面找,裏面有很多非常讚的項目。
  3. 從頭開始做 :自己動手去做一個自己想完成的東西,遇到不會的東西就臨時去學,現學現賣。這個要求比較高,我建議你已經有了一個項目經驗之後,再採用這個方法。如果你沒有做過項目的話,還是老老實實採用上面兩個方法比較好。
  4. ......

做項目不光要做,還要改進,改善。另外,如果你的老師有相關 Java 後臺項目的話,你也可以主動申請參與進來。

一定要學會分配自己時間,要學的東西很多,真的很多,搞清楚哪些東西是重點,哪些東西僅僅瞭解就夠了。一定不要把精力都花在了學各種框架上,算法和數據結構真的很重要!

不要把學習編程還當做學生時代的應試考試來看

你或許也發現了。很多成績特別特別優異的同學,他們的編程能力其實並不好。在大學的時候,那些編程能力最強的往往是那些成績比較一般的。

爲什麼會這樣呢?

我覺得主要是一個思維的轉變問題。很多人學習編程的時候,總是想着我要把這個 API 記下來,把這個庫的用法記下來。這樣學習,導致的結果只有一個那就是你會很難受!因爲,這些根本不是要死記硬背的東西啊!真還當這是上課考試啊!你要從如何用你學的東西來解決實際編程問題出發,站在做一個實際的項目的角度來學習。

拿我自己來說:我平時也會寫 Python,基本就是自己看着官方文檔或者一些書籍的教的語法跟着寫。如果哪個地方不會了,我就去查一下。

多看優秀的代碼

不看優秀的代碼,你寫的代碼質量很難提高。

雖然要多看優秀的代碼,但是也不要被 “最佳實踐” 所束縛,很多時候實際是根本不存在適用於任何場景的“最佳實踐”,沒有銀彈。

有哪些優秀的代碼值得學習呢?

拿 Java 來說,不知道閱讀什麼源碼的話,可以先從 JDK 的幾個常用集合看起。另外,我比較推薦看 Dubbo 的,因爲感覺會稍微相對容易一點,模塊劃分清晰,註釋也比較詳細。搞清楚了 RPC 的基本的原理,知道如何自己實現一個 RPC 框架之後,看起來就沒那麼喫力了。

另外,隨便一個框架的源碼都 10w+行了,都看一遍是不可能的。要挑選比較重要的地方看,就比如看 Spring 源碼的話你一定要看 IoC 和 AOP,要知道一個 Spring Bean 是如何一步一步被創建出來的。你要看 Spring Boot 源碼的話就要知道 Spring Boot 的啓動機制是啥,Spring Boot 是如何實現自動配置的。

不要死記硬背

學習理論知識的時候,我們可以多花點時間整理筆記。

但是,在學習框架使用的時候,就沒有太大必要花大量時間的整理做筆記了。

你完全可以隨時查文檔,記住關鍵詞即可!比如 Spring Boot 你不知道如何接受 Query Param 的話,你直接搜 Spring Boot Query Param 即可!

再比如你不會使用 Redis ,你做的 Spring Boot 項目需要用到的話,你直接搜“Spring Boot+ Redis”就出來了各種詳細的教程。

你要做的就是把常用的東西串聯起來,知道有這個東西就好。根據自己的實際能力,再對底層的東西進行學習就好。

更多編程好習慣,請看:《成爲一個不那麼差的程序員》

我是 Guide哥,擁抱開源,喜歡烹飪。Github 接近 10w 點讚的開源項目 JavaGuide 的作者。未來幾年,希望持續完善 JavaGuide,爭取能夠幫助更多學習 Java 的小夥伴!共勉!凎!點擊查看我的2020年工作彙報!

原創不易,歡迎點贊分享。咱們下期再會!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章