聊聊我的 Java 自學之路

程式通事發表於2018-12-25

Photo by Ethan Kent on Unsplash

最近經常在知乎收到類似『沒基礎,java 如何自學』、『怎麼才能掌握程式設計』等等問題,再加上發現高中同學也在自學。有感而發,講講我的自學之路。

大一/大二

高考沒正常發揮,考入一所二流的學校,當時分數也只高出錄取分數線一兩分,只能選擇機械專業,當時分數如果高個兩三分,或許可以上計算機專業,或許現在基礎知識水平可能不一樣,可是誰說的準那?

說回正題,大學前兩年,跟大多數同學一樣,基本在混,該打遊戲打遊戲,該逃課的逃課。但是期末的時候會去臨時努力一把,最後也能取個好成績。這裡說一點,後來才發現有些同學原來期末的時候也不去準備一把,沒辦法這樣也就只能掛科了。所以這裡想說個觀點,其實你只要稍微努力一點,其實就已經超過了很多人。

說說我們專業,跟計算機有關聯可能就是『機』了吧。所幸,大一的時候還有一門 C 語言必修課。那時候其實對於程式設計存在懵懂的興趣,曾想過學完 C 語言,然後成為一個黑客。可是學的時候才發現,才發現這門課是如此枯燥,而且你根本不知道學完你能幹什麼。書本只有練習題,老師也只是照本宣科。於是那時候也失去對這門課的興趣。

大三

大三那年對於我人生是有意義的一年。

那個學期,窮的沒辦法,出去兼職,賺到人生第一筆工資。並且用這部分錢,報考駕校。也是這筆錢,讓我意識到原來賺錢是如此不容易。

大三那年,因為面臨畢業的壓力,不得不去思考將來從事什麼。靜下心來思考分析未來到底應該幹什麼。我想過從事本專業的工作,但是本專業無非就去工廠工作或者在研究院從事製圖工作,我根本沒興趣。真的,我那時候真的十分厭惡 CAD 製圖。

這裡真的感謝我女朋友,是她給我提了個思路,讓我去嘗試學習下 Java。哈哈,感謝某度,搜尋 Java 的時候彈出滿屏廣告,一點進去就看了 XXX 在某培訓班畢業,成功進入大公司,拿到很高工資。的確,這個真的很有吸引力。於是踏上自學之路。還記得是大三寒假的時候,在家敲下第一行程式碼。

    public static void main(String[] args) {
        System.out.println("Hello world");
    }
複製程式碼

說說那時候怎麼自學的。我在某自學網站上找到 Java 基礎的視訊課程,真的很老的課程,錄製於 2012 年。給你們看看當時的課程目錄。

課程目錄

課程目錄

接下去每天的生活基本上就很枯燥,除了上課,就是學習,偶爾還出去兼職一下。那時候基本就在學校圖書館學習,沒事就往我們學校四樓去借 Java 相關的書籍。那時候也不知道那些 Java 書籍比較經典,所以就根據標題挑書,於是就挑了『Java 入門到精通』,『21天帶你學會 Java』這類書。當時看到這類書就覺得標題十分吸引人,那時候就覺得看完這些書就能速成 Java。但是現在回想,這些書真的十分坑爹,基本上就是網上資源抄抄改改,誤人子弟。各位讀者如果想買書的話,千萬別買這類書籍。

時間來到大三那個暑假,基本上學完了 Java 基礎,最後還跟著視訊教程完成一個貪吃蛇的小遊戲,那時候真的感覺很有成就感。

學完 Java 基礎,接下去就面臨著學那個方向的問題。那時候其實也沒多考慮,就直接選擇 Web 後臺開發這個方向。在淘寶上買了一套某培訓班的培訓課程後,就跟著其進度學習。這個階段,已經感覺到不像 Java 基礎那時候簡單了。學的東西不僅難,而且多,基本上各個方面都需要學會。還記得這個課程,剛開始先教 Html、CSS、JavaScript,後來就開始教 SQL 語法,最後開始 Java 的 Servlet 等。那時候基本上每天白天仔細看課程視訊,然後晚上一行行去輸入練習,儘量保證當天把課程都練習一遍,不拖到明天。但是有時候就是學完這個,又忘了上面或者說就是想不到這種解決辦法。這時候我就會再看下之前課程,看下到底哪個點卡住,然後思考下為什麼沒想到。

實習

大概在 11 月的時候,基本把課程學完了。學校裡又沒有什麼課程了,呆著學校又沒什麼事,也就想著出看看能不能知道實習。

那時候由於剛自學完,對於自己的技能根本沒有信心,也不知道企業開發到底需要掌握什麼技能。這就導致了那時候我心想只要找到實習工作就好,能開給我一些工資,然後能讓進入學習就好了。

兜兜轉轉,不斷在 58 趕集上找工作,找了一圈最終找到了一家公司招聘 Java 開發。面試官問了幾個簡單 Java 的基礎問題後,然後就發 offer 了。

進入公司之後,我才發現這個跟自己想象的完全不一樣。全公司後臺開發就我一個人,而面試我的面試官,不在這個公司,在另一個市的另一家公司,在這公司掛牌一個開發經理職位。

那時候也不知道需求,就扔給我一套表結構設計以及一套他們以前開發好的後臺程式碼,就讓我模仿這個改改就好了。還記得那套框架由 easyui,struts2,mybatis,mysql 構成。每天的工作就是照著這塊改,不會的就找搜尋引擎。旁邊的同事,基本上都是其他崗位,沒有一個可以請教問題的。那時候也沒有什麼需求文件,基本都是某某經理拍拍腦袋想出來。在那個公司呆了兩三個月,基本上沒有什麼收穫,就像公司辭了職。

那個時候已經到了三月份,還有三個月就畢業了。那時候也很慌張,自己學校招聘會也去逛了下,但是根本沒有看到 Java 相關的工作。偶然間在網上看到恆生,網易的春招的機會,抱著試試的想法,就選擇報名。報名之後,瞭解到其筆試內容,發現很多內容自己很多根本沒學過,比如作業系統,linux 知識。可是沒辦法啊,只能瘋狂在牛客網刷題,瘋狂補充這些知識。最後,兩家公司筆試還是都掛了。。。。

等網易筆試完,已經到了四月。本地工作崗位,也已經基本找了遍,不是不要實習生,就是基本工資太低,低到什麼程度那,有家公司實習每月就給 800 工資。

後來曾有個大公司來學校宣講,聽到最後意外得知他們還招聘 Java 開發,馬上報名參加。接下來的筆試與面試都是跑到那個公司所在城市,最後拿到了這家公司的 offer。不過最後沒有選擇去,一是因為其畢業之後開的工資真的太低,才 3500,二是因為他們公司所在地方實在太偏僻了。

本地沒辦法找到工作之後,不得不去杭州找找機會。在拉勾了搜了一圈工作機會,終於找到幾家公司還在招收實習生,廣投簡歷,收到幾家公司的面試機會。那一天去面試的時候,正好也是網易春招面試,看到一個個坐著網易大巴去面試,真的十分羨慕。那一天,面了兩家公司,最後一家公司發了實習 offer。說說那時候實習工資吧,一天 160,那時候真覺得好高,真覺得應該早點來杭州。

進入公司之後,分配了個師兄帶我。這個師兄雖然話很少,但是在他身上學習到了很多,第一次感覺到那種技術開發的範圍。在公司實習大概一個多月,基本上用到也是之前學習到東西,可以說複習鞏固以前學的知識。5 月份就回學校報到,然後畢業答辯,順利就畢業。後來在這家公司也順利入職,真正進入開發這一行。

總結與想法

看到這裡想必你們也看完我的自學之路,下面也談談我這一路的想法。

  1. 看到很多朋友問,我現在學程式設計來的及嗎?我想說的是,你什麼時候學程式設計都來的及,但是你自己需要評估你自己到底能不能靜下心來花下時間來學習
  2. 學習程式設計需要什麼基礎?學習程式設計最好是理工科,但是你如果不是,也沒關係,只要你能堅持下來,也能學好。我認識好幾位同事,也是文科專業轉行過來,有一些大牛,甚至高中沒畢業。但是你如果對這個沒興趣,最好儘早放棄。興趣是很好的導師。
  3. 學習程式設計,需不需要去去培訓班?如果你自己沒有自制力,或者想快點出師,可以選擇培訓班。因為在培訓班,你會感受到這種學習的範圍,培訓班最後也會叫你一些面試技巧什麼的。但是建議你報班之前,之前嘗試先把 Java 基礎學完。如果 Java 基礎都學不下去,那你最後報班學習效果也不好。但是不要片面看了培訓班的廣告,或者被一些銷售以畢業後高薪洗腦後,就糊里糊塗就報班了。自己千萬要考慮好沒,再去選擇報班
  4. 現在我應該學習 Java 後臺,安卓,Python ?其實到底該學習那個真的不好給建議。但是我可以教你們一個方法,從事情的價值出發,列一分優缺清單。把安卓,Java後臺開發,Python 這幾個優缺點列一個表格,然後 -10 到 10 打一個分數,最後把每一列相加,得出一個最終分,選擇那個分數最高的。
  5. 學完結束之後,找工作一定要去一線城市,北上廣深杭。為什麼這些城市那?因為這些大城市,機會多,薪資也較高。雖然相對而言,生活壓力也大一點。但是相信我,在一線城市你生活工作幾年,你的視野格局會提高很多。但是如果你前幾天在一些二線城市,然後由於薪資水平,再想去一線城市,這樣就難很多。
  6. 對那些還在校正在自學同學們講講,你們在校如果時間很好多,一定不要只學 Java 相關知識,演算法資料結構等也不能丟,這個真的很重要。
  7. 如果你現在已經自學好,正在要找工作。請充滿信心,不要妄自菲薄。一次兩次失敗並不代表什麼,總結前幾次的失敗,這也能更好認識自己。

天下沒有白吃的午餐,同理也沒有速成的大法。希望在學的各位同學,靜下心來,好好練習程式碼~

相關文章