首先聲明,這篇文章不是賣課程、介紹培訓(xùn)班的廣告。

          最近有不少讀者通過微信問我:小白應(yīng)該怎么學(xué)好 Java?

          提問的人里有在校大學(xué)生、有剛參加工作的、有想轉(zhuǎn)行做程序員的,還有一部分是最近找工作不順的。

          現(xiàn)在行情不好,很多人都焦慮,但是光跟著焦慮不解決問題。作為程序員,還不如靜下心來,少受干擾,專心提高自己。

          繼續(xù)說回到學(xué) Java 這個問題上來,網(wǎng)上 95% 以上的文章都是說介紹學(xué)習(xí)路線、Java書籍和視頻的。

          學(xué)習(xí)路線無非就是:

          * Java:語法、面向?qū)ο?、IO、集合、異常、多線程……
          * Java WEB:Tomcat、servlet、Struts、Spring……
          * 持久化相關(guān):MySQL、Hibernate、MyBatis……
          * …………
          書籍、視頻說的比較多的有:

          * 《Head First Java》、《Java 編程思想》、《Effective Java》……
          * 畢向東、劉意等老師的視頻。
          Java 家族成員太多,學(xué)個 Java 怎么要學(xué)這么多東西?

          學(xué)習(xí)資料越收集越多,這要學(xué)到什么年頭?很多人都是收藏從未停止,學(xué)習(xí)從未開始。

          我今天就和大家說點(diǎn)不一樣的,我學(xué) Java 中對我?guī)椭畲蟮娜谓?jīng)歷。這三段經(jīng)歷都是發(fā)生在我剛工作的前 5 年中,我個人認(rèn)為,程序員的前 5
          年是技術(shù)突飛猛進(jìn)的階段,這個階段非常重要。

          經(jīng)歷一:遇到了志同道合的好基友

          這段經(jīng)歷是從我工作之后第三個年頭開始的,因?yàn)橹匾韵日f。

          那時候我跳槽去了一家新公司,在這家公司就干了不到一年,如果不是因?yàn)檎J(rèn)識了兩個程序員,這段經(jīng)歷幾乎都快忘記了。

          這兩個程序員和我年齡相仿,都姓劉,為了省事,后面統(tǒng)稱二劉吧。對我來說,如果用一個詞來形容他倆,就是:良師益友。

          認(rèn)識二劉之前,我覺得自己水平還可以:會寫 CRUD、JSP,會用
          Struts,會扯幾個設(shè)計(jì)模式?,F(xiàn)在看來,就是一個能熟練寫代碼的程序員而已,動手能力還湊合,腦子里的知識不成體系。

          從認(rèn)識二劉的第一天起,就被全面碾壓。學(xué)校、專業(yè)的碾壓就不用說了,關(guān)鍵是從他們嘴中我聽了很多之前都沒聽過的名詞:敏捷開發(fā)、重構(gòu)、結(jié)對編程、領(lǐng)域模型……

          說實(shí)話,當(dāng)初剛接觸這些的時候,我是很排斥的。舉幾個例子:

          * 看到二劉結(jié)對編程,心想一個人干活、一個人閑著,這不是偷懶嗎?
          * 重構(gòu)代碼:程序跑的好好的,我為啥要改我的代碼?有重復(fù)代碼怎么了?有重構(gòu)的時間,還不如再實(shí)現(xiàn)倆新功能。
          * 單元測試:代碼還寫不過來,哪有時間寫單元測試,再說了,不是有專門的測試嗎。
          * 領(lǐng)域模型:別和我說什么貧血不貧血,我的 JavaBean 里就只有 getter、setter。
          好在二劉足夠有耐心,對我不拋棄不放棄,反復(fù)給我洗腦,終于讓我這個思想落后青年,接受了他們的思想,后面經(jīng)常和他倆一起學(xué)習(xí)、實(shí)踐、交流。

          學(xué) Java 很辛苦,大部分人自制力差,一個人學(xué)容易偷懶。找?guī)讉€好基友一起學(xué),確實(shí)提高快。在這里要感謝一下當(dāng)初二劉對我的幫助。


          到現(xiàn)在我和二劉還是好朋友,跟他們一起學(xué)到的重構(gòu)、DDD、TDD、架構(gòu)模式這些思想,讓我受益至今。相比于Struts、Hibernate那些技術(shù)來說,這些更像是程序員的內(nèi)功,內(nèi)功不會很快過時。

          經(jīng)歷二:找到了組織——BJUG

          如果說認(rèn)識二劉是我上了一條賊船,那么加入 BJUG 就是上了一艘航母。加入 BJUG 還是通過二劉,你看好基友是多么重要。

          舊文中提到過 BJUG 這個名字:
          Beijing Java User Group的簡稱就是 BJUG。從名字就能看出來,是一群在北京工作的 Java 程序員聚在一起的一個小團(tuán)體。

          BJUG 是一個非常活躍的技術(shù)社區(qū),我們都有哪些活動呢?

          最主要的活動是線下技術(shù)分享,分享基本都在周六下午,一下午能分享 2-4 個主題。

          現(xiàn)在還能百度到當(dāng)時的信息,給大家貼幾張圖。







          從這幾張圖上,大家能看出了,我們當(dāng)時分享的都是技術(shù)干貨。在冰云的熱心組織下,社區(qū)弄得還可以,成為 Top 50 的 Java User Group。

          除了技術(shù)分享,我們還一起翻譯資料、書籍。當(dāng)然還少不了一起聚餐腐敗。

          BJUG 不僅僅是一個技術(shù)社區(qū),還是一個有愛的社區(qū)。曾經(jīng)一名核心會員得了重癥需要換骨髓,面對伙伴的不幸,大家捐款相助,為伙伴的康復(fù)貢獻(xiàn)了綿薄之力。

          可惜的是,BJUG 后期人變多了,人多了之后交流的質(zhì)量我感覺反而降低了,后面慢慢活動越來越少了。現(xiàn)在看來,人多不一定是好事,小圈子反而更有效率。

          當(dāng)時在 BJUG 里我好像沒做過主題分享,因?yàn)椴蛔孕?,都是充?dāng)聽眾,這也算一個遺憾吧。

          不管怎么說,BJUG 里牛人非常多,我屬于那里邊最菜的了。能跟那些牛人學(xué)多少東西,你們可以自己想象一下。

          總之,經(jīng)歷了二劉和 BJUG 的洗禮之后,后面幾年我找工作面試的時候,沒被技術(shù)面試卡住過。

          經(jīng)歷三:擼幾萬行代碼

          終于可以把時間調(diào)回到我剛工作的頭兩年了。

          我的大學(xué)一般般,非 985、211,我也不是計(jì)算機(jī)專業(yè)的,大四參加了一個 Java 培訓(xùn)班。參加培訓(xùn)班之前的計(jì)算機(jī)水平:QQ 熟練、紅警精通。

          培訓(xùn)半年之后的水平也不咋地,畢業(yè)之后能找到程序員的工作,主要因?yàn)橼s上了好時候,那時候缺程序員啊,大學(xué)剛擴(kuò)招,哪有現(xiàn)在這么多畢業(yè)生,而且大學(xué)還沒教
          Java。大部分培訓(xùn)機(jī)構(gòu)還在教網(wǎng)頁三劍客,能教 Java 的老師就很少。

          有了培訓(xùn)班的基礎(chǔ),我工作之后也能湊合干,不過還有太多太多不會的知識,不會就學(xué)唄。

          最開始我學(xué)習(xí)靠看書,看《Java
          編程思想》,也不知道是書太難了,還是翻譯的太晦澀了,看書真看不懂啊,書又厚,我看了幾個月愣是一遍都沒看完,經(jīng)常是看了后面忘了前面。

          后來我干脆就把書扔一邊去了,直接擼代碼!


          起初是擼簡單的,擼各種常用類、常用方法的例子,這樣方便以后拿起來就用。另外,擼的多了,慢慢攢出了自己的一套工具類,包括String、數(shù)組、日期、類型轉(zhuǎn)換等等這些的,在三方工具類沒有普及之前,這套工具類陪了我很多年。估計(jì)很多老程序員,都有一套自己積累的工具類。

          后來是擼項(xiàng)目代碼,當(dāng)時找的是著名的 PetStore 項(xiàng)目,雖然是個示例項(xiàng)目,項(xiàng)目很小,但是麻雀雖小五臟俱全。最開始是看一行寫一行,照著抄代碼。抄了 n
          遍之后,感覺都會了,然后自己默寫,磕磕絆絆默寫出來之后,根本跑不起來,一堆 bug。解決完
          bug,能跑起來了,下一步就是把自己寫的代碼和原始代碼作比較,看看差異在哪,琢磨人家為什么要那么寫。

          擼了一定數(shù)量代碼之后,我再回過頭去看書,可能以前看不懂的,突然就明白了。

          印象最深的一個事是,當(dāng)初第一次抄完抽象類的代碼,我壓根就不知道還有抽象類這一說,我以為一度懷疑這個類沒寫完整,會編譯不通過……

          總的來說,擼代碼對我度過小白階段來說,非常非常重要。

          我感覺學(xué) Java,除了學(xué)知識,還離不開動手實(shí)踐。上面寫的我擼代碼的方式,也不一定適合所有人,每個人情況不一樣,大家參考就好。

          其他補(bǔ)充

          除了個人經(jīng)歷,再補(bǔ)充幾點(diǎn)學(xué)習(xí)技巧:

          補(bǔ)充1:看大廠的開發(fā)規(guī)范

          例如阿里的《Java 開發(fā)手冊》,是阿里巴巴集團(tuán)技術(shù)團(tuán)隊(duì)的集體智慧結(jié)晶和經(jīng)驗(yàn)總結(jié)。

          看這目錄:




          分為編程規(guī)約、異常日志、單元測試、安全規(guī)約、MySQL數(shù)據(jù)庫、工程結(jié)構(gòu)、設(shè)計(jì)規(guī)約七個維度,再根據(jù)內(nèi)容特征,細(xì)分成若干二級子目錄。另外,規(guī)約依次分為強(qiáng)制、推薦、參考三大類。在延伸信息中,“
          說明”對規(guī)約做了適當(dāng)擴(kuò)展和解釋;“正例”提倡什么樣的編碼和實(shí)現(xiàn)方式;“反例”說明需要提防的雷區(qū),以及真實(shí)的錯誤案例。



          真的是大廠的智慧結(jié)晶和經(jīng)驗(yàn)總結(jié),新人看完可以少踩很多坑!

          補(bǔ)充2:找到學(xué)習(xí)重點(diǎn)

          Java 全家桶包括的東西太多,對小白來說一個難點(diǎn)就是:不知道學(xué)習(xí)重點(diǎn)。

          學(xué)習(xí)重點(diǎn)就是那些在招聘需求、面試問題中高頻出現(xiàn)的。

          把主要精力放在學(xué)重點(diǎn)上,剩下的可以慢慢學(xué),學(xué)習(xí)是一個長期的過程,別想著一口吃成胖子。

          另外,對小白來說,太復(fù)雜、太高級的可以先知道個大概,不用奢望一下學(xué)得很透。就像我們和小朋友說“等你以后長大了,慢慢就懂了”一個道理。


          還有,有些知識可以不用學(xué)了,例如Swing、JSP現(xiàn)在幾乎沒人用了,學(xué)這個就是浪費(fèi)時間。就連Struts、Hibernate現(xiàn)在用的也少了,學(xué)習(xí)的優(yōu)先級也往后放。

          補(bǔ)充3:資料不用貪多

          不要盲目收集資料,收集太多資料你也看不完,更多是自我安慰。


          資料在精不在多,遇到好的資料,該花錢就花錢,對自己學(xué)習(xí)不要摳門。有的資料、課程也不貴,少下一次館子、少買件衣服、少看一場電影就有了。花錢買了別人的經(jīng)驗(yàn),省了自己的時間。

          但是,花錢也別盲目,現(xiàn)在濫竽充數(shù)的老師、培訓(xùn)太多。

          總結(jié)

          這篇文章寫了很多個人經(jīng)歷,我覺得只有親自經(jīng)歷的,自己驗(yàn)證有效的,才好意思推薦給你們。

          經(jīng)歷里,我特意打亂時間順序,按照學(xué)習(xí)效果來寫的。

          強(qiáng)烈建議你們找到身邊的學(xué)習(xí)圈子。如果沒有現(xiàn)成的,你是不是可以組建一個?大家一起學(xué)習(xí)、一起分享、一起寫代碼看代碼。

          圈子人數(shù)不用多,十個人以內(nèi)就挺好的。

          這個圈子,不是微信里面學(xué)習(xí)交流群(我加了不少群,大部分消息沒啥價(jià)值,慢慢成了死群),最好都在一個城市的,能一起線下約活動。

          有了圈子,除了技術(shù)提高,對你以后跳槽也有好處。

          除了圈子,學(xué) Java 要多敲代碼,不用只是聽和看。

          寫到這里,我突然想到了學(xué)習(xí)金字塔:



          看完這個圖,用什么方式去學(xué) Java,你心里就有譜了吧。

          就說這么多吧,希望對你有幫助。

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                老师我想要(h)小说 | 天天操天天舔天天爽 | 亚洲天堂2824在线 | 国产精品动漫一区二区三区 | av中文字幕网 |