如果你經常關注我的話,應該知道了,今年我成功帶妹入坑(程式媛),注意是親妹啊,不騙你,參見下面的連結:
因為她自己不知道喜歡什麼專業,也沒有目標和方向,於是作為有經驗的前輩,我就給她指了一條“明路”——計算機程式設計。
迷茫不是她的錯,因為大多數普通的學生,在高考結束後都挺迷茫的。高考之前,目標就是攢住勁學習,很單純;上了大學就不一樣,得為以後的生存考量。於是,對於女生來說,教師、護士是她們的常規選項;對於男生來說,鐵路、機械、建築的就是我們的常規選項。
不要問我是怎麼知道的。當年我父母就是這樣逼我的,於是,我報的專業是機械工程,可惜這個專業沒錄上,被調劑到了計算機網路,誤打誤撞地學了 Java。
真的挺佩服那些一開始就目標明確的學生,這樣就可以少走很多彎路。比如說,父母都是醫生,孩子在很大概率上會報醫學方面的專業,這沒什麼不好的,千萬不要信電視上那一套,父母幹啥,孩子偏偏不愛幹啥。
你想啊,從小有家庭氛圍的薰陶,孩子在父母的同專業方面是有很大天分的,這叫特長髮揮,加上父母經營的人脈資源,孩子在畢業後找一份養家餬口的工作完全不是問題。
我這代人,在音樂上有幸遇到了周杰倫、王力巨集、林俊杰、陶喆。被譽為“R&B 教父”的陶喆,他的母親是京劇名伶,父親是臺灣著名歌手,那陶喆在音樂上面的成就,其實是和他的家庭密不可分的。
給你嘮這個,就是希望你不要浪費家庭方面的優勢資源。慎重啊,朋友。
像我,父母都是農民,優勢資源是不存在的,除非我的理想是種莊稼。可惜從小我就討厭幹農活,辛苦不說,溫飽都是問題。如果你的出身和我一樣,那從上學到工作,就只能靠自己的努力,一步步摸爬滾打。
我妹就比我幸運多了,我就是她的優勢資源,沒毛病吧?讓我妹學習程式設計,在我看來,就是最合理的選擇。
因為寫作的緣故,我認識很多做網際網路方面的朋友,關係都處得不錯,等我妹畢業了,內推個崗位是沒有任何問題的。當然了,如果你想要我推薦的話,也可以的。
做為一名負責任的親哥,我特意為我妹寫了一個《教妹學 Java》專欄,你們也看到了,一直在更新著。我妹每篇都有在看,她給我說收穫挺大的。
你想啊,這對於一名程式設計小白來說,多麼的重要!
那今天,我就來談談,成功帶妹入坑後,她該怎樣提高自己的程式設計能力。雖然說“師傅領進門,修行靠個人”,但我還是她哥哥,負的責任更多,應該多領領!
首先,必須對你坦誠相見。
第一,對我妹學習程式設計這件事,沒有很高的期許,我覺得給她寬鬆點的成長環境更好,畢業後順順利利地做一名“程式媛”挺好的。
第二,希望我妹畢業後能成為一名“開箱即用”的程式設計師,能上手做一些專案,而不是停留在大學時期的理論知識層面上。
第三,我妹畢業後進不進大廠無所謂。能進大廠的都是非常優秀的程式設計師,也是極少數的,還有很大一批普通的程式設計師,需要從中小廠幹起。
不管怎麼說,大學的課程都是偏理論知識的,這是我們國家教育的一大特色(沒有貶義,絕對沒有)。企業呢,雖然沒有表現出你沒有專案經驗就不要你的態度,但還是希望你有一些,對吧?
之前的那篇《研三秋招》的文章裡也提到了,有個讀者迫切地想要專案經驗,就顧此失彼,沒有更多時間去鑽理論知識、刷面試題,導致筆試落荒而逃。
那在我看來,確實需要一點平衡,就是 60% 的精力還是要放到理論知識的學習上,剩餘的 40% 的精力就投入到實戰經驗上,兩者不偏不倚,形成互補比較好。
程式設計本身難不難,成為頂尖的技術大牛確實很難,不掉點頭髮,不禿個頂,是“幾乎”不可能的;但能在社會上立足,餬口飯吃,還是是不難的,相信我,我就是個不錯的例子。
對於我妹來說,想要提高自己的程式設計能力,單靠學校的教學是不行的,還得靠自學。自學的精髓就在於利用有限的時間,學習到真正有用的東西。那麼就需要對學習的知識進行篩選,在篩選知識這方面,我還是有點話語權的。
01、Java 學習路線
如果有讀者恰好是學習 Java 的,那麼先看看下面這 3 張圖,一套很完整的 Java 學習路線(入門級別)。
按照這個路線圖學下來,基本上企業級的開發技能都具備了。切記,入門階段,不要盲目追求深度,非要鑽個原始碼做到“知其然知其所以然”,那我可以負責任的告訴你,一個技術點很可能都夠你研究半個月的。
先學會用,會用之後,再結合理論知識深入研究,會事半功倍。這也是我一直奉行的學習準則,還挺有效的。
另外,我在知乎上回答了一個自學 Java 的問題,點贊數 2000+,瀏覽量更是達到了 42 萬。
很多讀者看完後都來私信感謝我,如果你恰好也需要的話,我把地址貼一下:
這個答案裡面把 Java 的學習路線細分成了 4 個階段,包括環境和工具準備、基礎入門、核心技術、進階升級等等,內容非常詳細。
基本上每個知識點我都有更詳細的講解,我相信一定能夠幫助到你。
02、讀書還是看視訊
有了這套路線圖,是不是瞬間就感覺明朗了起來,學習起來就不會犯迷糊了,知道下一步該做什麼,下下一步做什麼,就好像打遊戲的時候有一張地圖踩在腳下。
那接下來,就是把 Java 基礎打好,這對以後的學習很有幫助。怎麼打好呢?
學習之路是一項很逆人性的差事,並不是每個人都能夠堅持下來,尤其是打基礎的階段,過於強求的話可能就會適得其反,沒入門先放棄了。我身邊這樣的例子真的不少,所以你要告訴自己:
1)對 Java 感興趣,對網際網路的高薪感興趣,對“程式設計師禿頂”的段子視若無睹,只有這樣,你才能真正地堅持下去。
2)富有堅韌不拔的學習能力,別總遇到一點點困難,就自暴自棄。
3)設定一個目標就死磕,如果你經常拿不到最終結果,需要反思是不是從來沒有成功做成過一件困難的事情,沒成功過所以不知道“堅持”可以大大提高成功的概率。
4)擁有解決問題的勇氣,學習的過程中註定會遇到許許多多的坑,要敢於跳進去,然後再爬出來,並且是在不尋求他人幫助的前提下。我見過太多的同學,遇到點屁大的問題就直接扔在群裡等大牛解答,殊不知搜尋引擎是第一步。
有人喜歡看書,有人喜歡看視訊,有人喜歡都看。也沒有必要做出非此即彼的選擇。
如果你喜歡讀書的話,可以按照我下面給出的 GitHub 倉庫去下載自己喜歡的電子書。裡面的書單很全,你只需要對應一種技術選擇一本你喜歡的就可以了,不要貪多。
GitHub 訪問比較慢的話,也可以訪問碼雲,馬上兩千 star 了,你也可以貢獻一個。
如果你喜歡看視訊的話,我推薦老九門的零基礎學 Java,B 站和與tube 上都有。B 站的地址我貼一下。
https://www.bilibili.com/video/BV1fx411a7zo
主講人徐嵩的授課風格非常風趣,聽起來很過癮,我最近沒事的時候就看一集,回味一下當初學 Java 時沒有視訊資料的苦澀。
看視訊和看書的體驗完全不同,在我看來,通過視訊學習的好處主要有兩點:
視訊中講的東西比較形象,有一種身臨其境的感覺。
視訊有一種你看不到的魔力,可以提高你學習的自主性。
所以沒必要排斥看視訊這件事。學習的過程中,不要忘了動手去實踐,這裡推薦一個開源專案——vhr,或者叫微人事,我的好朋友江南一點雨是作者,所以我一直在大力推薦,是真的不錯(我也是貢獻者,逼近 20k star 了)。
打基礎的過程中,一定要多敲程式碼,在敲的過程中肯定會出錯。不管你是看書,還是視訊,你覺得作者說得好像挺簡單的,以為看過一遍後自己也理解了。但往往不是這樣的,程式在敲的過程中會發生許許多多意想不到的問題,有時候作者限於篇幅的原因,往往會選擇性地跳過一些細枝末節,但這些對於程式設計的初學者來說,往往很難駕馭。只有經過自己的手敲出來,才能證明真的是會了,懂了。
不是有那句俗話嘛,“當局者迷旁觀者清”,如果你站在讀的角度,就會很容易自欺欺人;但如果自己親自實操的話,就完全不一樣了,不僅印象深刻,還為以後的覆盤做好了備份。在敲的過程中,最好把自己認為經典的案例分門別類,放到 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
附帶的還有一份前端面試小冊,非常精美,包含的內容有以下這些,全是小鹿的原創。
有了學習路線圖之後,學習的範圍就縮小了,事情就成功了一半,接下來就是學習方法的問題了,我這裡分享一些我自己的心得體會。
第一,善用搜尋引擎。平常需要找資料,需要解決問題,如果自己一時半會沒有方法的話,就去搜。
Google 是第一選擇,Bing 是第二選擇,微信搜尋是第三選擇。PC 端的話,Google 和 Bing 就很靠譜,基本上要找的東西,都有好的結果。手機端的話,就用微信搜,答案也很靠譜。
第二,學會提問。如果搜尋引擎找不到答案的話,不要直接把問題拋到群裡,拋給同事、領導,或者大牛,要先對問題梳理一下。
我想問什麼,問題發生的環境是什麼,問題的描述是否足夠清楚,態度是否端正。
不要唐突,不要冒昧,還要臉皮厚,很難,對吧?這就是提問的藝術啊。我有 9 個氛圍很不錯的技術交流群,如果你需要的話,可以聯絡我。
第三,善於總結和歸納。如果你覺得“怎麼總是感覺記不住啊,學完就忘啊,有什麼好的辦法嗎?”
有啊,當然有。學完一個知識點,如果需要動手去實踐,那就去敲程式碼,敲一遍,還是理解,再敲一遍。如果真的感覺自己理解,嘗試寫篇文章,把自己的學習心得分享出來,看看是否能夠教會別人。
如果自己是半瓶水,倒出去只能是半瓶水;只有自己是一瓶水,倒出去才可能多餘半瓶水,對吧?
歸納總結的好處就是把零散的知識變成體系,在腦海中構建一副藍圖,日積月累,你就會發現自己也從一條小溪變成了海洋。
順帶推薦一下費曼學習法,靈感源於諾貝爾物理獎獲得者理查德·費曼,運用費曼技巧,只需要花 20 分鐘就可以深入理解知識點。聽起來是不是很神奇?
費曼學習法的四個步驟:
第一步,能把一個孩子教懂。這有點類似我們古代的一名詩人,白居易,他希望自己的詩連老太婆都能看得懂,那就是好詩。
具體怎麼做呢?拿出一張白紙,寫下要學習的主題,想一下,怎麼把它教給一個孩子,你會講哪些,然後記下來。
你可以把白紙換成 iPad 了,有道雲筆記了,等等。
第二步,回顧。當我們嘗試把知識點講給小孩子的時候,可能會卡殼,那就需要把這些卡殼的點重新學習,這些點可能就是我們認知的邊界——重新學習的地方。
第三步,簡化語言。如果發現表述的文字比較複雜,不夠清晰,那就嘗試把這些內容讀出來,直到通順,直到自然,直到足夠簡練。
第四,傳授。這點雖然是可選項,但真的非常重要。如果確保自己理解了,那就把它教給別人,看你能否把別人教懂,也就是我說的善於總結和歸納。
整個思維導圖( 推薦的線上網址有百度腦圖、ProcessOn)了,或者部落格(建議使用 markdown 格式)了。
第四,多去實踐。實踐出真知,到底馬謖行不行,給他一個街亭守一守,對吧,收不住就是紙上談兵,沒啥鳥用。
GitHub 或者碼雲上有很多優秀的開源專案,挑一些優質的,down 下來,去研究研究,在原有的程式碼基礎上,嘗試做一些優化,或者增加一些功能。
自己動手去做的過程中,你會發現,哇,真的有新大陸呀!
第五,熟練使用開發工具。Intellij IDEA、VSCode 都是非常流行的開發工具,能夠幫助我們在學習和工作中變得更加高效,裡面有沒有快捷鍵,有沒有什麼騷操作,對吧?
在使用 Intellij IDEA 編寫程式碼的過程中,一定要注重程式碼規範。提前就把 SonarLint、阿里巴巴開發規約這些外掛安裝上,寫完程式碼就 check 一下,按照提示對一些不良的習慣做出修正。
如果 Intellij IDEA 下載比較慢的話,我也提供了離線版:
第六,學好英語。這一點真的真的真的非常非常非常重要重要重要,即便是英語功底本身很差,一定不要自暴自棄,對吧?雷軍敢一句“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、一點小小的請求
如果這篇文章的確幫助到了你,哪怕一點點,我都覺得非常的開心。當然了,如果你覺得有幫助,請幫忙點個贊,滿足一下我的虛榮心,謝謝了。