
本周讀了周志明老師的《深入理解java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐》,但是說來慚愧,一周的時(shí)間,讀了不超過一百頁(yè),而且在這個(gè)過程中感覺到因?yàn)椴涣私?,所以很難保持足夠的熱情堅(jiān)持下去,曾經(jīng)認(rèn)為熟悉的java語言仿佛變得格外陌生。這樣的閱讀體驗(yàn)不禁讓我對(duì)自己有了很多反思。
首先對(duì)自己進(jìn)行定位,讀得艱難的唯一原因就是對(duì)java這門語言的掌握不夠深入,目前所處的技術(shù)高度不足以支持對(duì)這本書的理解。
回首自己的編程學(xué)習(xí)之路,從最開始接觸java的大一算起,到如今我學(xué)習(xí)與使用java也有四年了。從最初只是簡(jiǎn)單地學(xué)習(xí)語法,會(huì)寫一個(gè)“Hello World”程序,會(huì)用java寫小程序解決一些算法問題,到后來自學(xué)了Struts2、Spring和Hibernate三大框架,開始學(xué)會(huì)做Web應(yīng)用,同時(shí)接觸了Android應(yīng)用開發(fā),似乎和java沾邊的許多方面都接觸到了,看起來也似乎是對(duì)java有了一定的了解與體會(huì)。
對(duì)于這個(gè)過程,我自我總結(jié)為技術(shù)能力從第一個(gè)階段跨入了第二階段。何謂第一階段?在那個(gè)時(shí)候,java程序開發(fā)的理論課能考個(gè)90多分,課程設(shè)計(jì)的時(shí)候也能拿個(gè)優(yōu)秀,一些基本的小程序也都可以動(dòng)手試試,可是內(nèi)心還是止不住地有一種惶恐和焦慮。我感到很迷茫,看著學(xué)長(zhǎng)們開發(fā)網(wǎng)站,制作手機(jī)APP,參加競(jìng)賽,拿國(guó)家級(jí)獎(jiǎng)項(xiàng),心向往之,然而就是身不能至。模模糊糊地看到了一個(gè)方向,可就是不知道路該怎么走,始終處在不得其門而入的狀態(tài)。就好像是看到了一座水晶宮殿,為它的華麗而折服,可就是找到進(jìn)去的大門,始終在宮殿的外圍打轉(zhuǎn)。這就是我的第一階段,總結(jié)起來就是三個(gè)字,不得法。
這種迷茫持續(xù)了大二一年的時(shí)間。終于在大二暑假的時(shí)候我找到了自己當(dāng)時(shí)最大的問題所在是所圖太大,想做到的事情太多,導(dǎo)致的結(jié)果就是所學(xué)雜而不精。于是痛下決心,決定把一門技術(shù)作為切入點(diǎn),先深扎進(jìn)去,找到進(jìn)門的途徑,再考慮向周邊擴(kuò)散。那年暑假留在學(xué)校,忍受著南京三四十度的高溫和沒有空調(diào)的宿舍,我堅(jiān)持每天至少八小時(shí)的學(xué)習(xí)時(shí)間專心學(xué)習(xí)javaweb開發(fā)技術(shù)。印象最深刻的是那時(shí)白天坐在桌前,不住地淌汗,一天要洗好多次澡,而晚上打地鋪睡覺,依然熱得難以入睡。辛苦了一個(gè)暑假,終于有了收貨,我對(duì)javaweb開發(fā)技術(shù)有了一定的了解,掌握了SSH三大框架,終于可以開始做一些“有實(shí)際意義的事情”。而就在那時(shí),我清楚地感受到,之前久久不得入的那道壁障,我真的越過了。于是進(jìn)入了第二階段,這一總結(jié)起來就是,可以做一些事情了。
一法通而萬法通。最讓我感覺到已經(jīng)找到一些門路的一件事是,我后來又去自學(xué)Android開發(fā),這次只學(xué)了一周左右,然后就用了一個(gè)月時(shí)間開發(fā)出了自己的第一個(gè)Android應(yīng)用,一個(gè)基于百度地圖的記事本(當(dāng)然,Android技術(shù)易學(xué)難精,入門容易,想做出好的應(yīng)用其實(shí)十分不易,而我做到的也不過就是能做一個(gè)最基本的,類似玩具的一樣的東西)。
再后來就是項(xiàng)目經(jīng)驗(yàn)和代碼量的積累過程。整個(gè)本科期間,前前后后開發(fā)過若干個(gè)web應(yīng)用,也做過一些Android APP,收獲了一些專業(yè)比賽的獎(jiǎng)項(xiàng),也收獲了大概三四萬行的代碼量以及調(diào)試bug的一些經(jīng)驗(yàn)。
然而,再往后走,就到了如今的境地?,F(xiàn)在的感覺是,雖然做了很多東西,做了很多事情,但是捫心自問,有本質(zhì)上的提升嗎?必須實(shí)話實(shí)說:沒有。學(xué)習(xí)了SSH(后來又添了SpringMVC)框架,會(huì)用框架開發(fā)網(wǎng)頁(yè),然而框架為我們屏蔽了許多底層的復(fù)雜邏輯,那么又對(duì)框架的深層的內(nèi)在的思想了解多少呢?應(yīng)該說,知之甚少。對(duì)Spring的面向切面編程、依賴注入和控制反轉(zhuǎn)的思想只是有個(gè)模糊的印象;讀了很多次介紹23種設(shè)計(jì)模式的書,對(duì)常用的幾種模式可以大概講講思路,然而似乎從沒有在項(xiàng)目實(shí)踐中真正地用過任何一種(貌似單例模式還是試著用過的)。最近一段時(shí)間因?yàn)轫?xiàng)目的需要又在學(xué)習(xí)使用Python以及Django,然而對(duì)Django的內(nèi)涵也幾乎不了解……于是現(xiàn)在所處的這個(gè)階段,似乎應(yīng)該形容為:尷尬。
一直在思考一個(gè)問題:我的核心競(jìng)爭(zhēng)力在哪里?覺得很多大牛說的話非常有道理,無論在哪個(gè)行業(yè),職場(chǎng)中想提高自己,就要讓自己無可取代,如果可以取代,至少要讓自己被取代的代價(jià)高一點(diǎn)。在這個(gè)話題里,我覺得對(duì)于一個(gè)程序員來說提高不可替代性的其中非常重要的一點(diǎn)是要精通一門語言。當(dāng)然了,敢說精通口氣太大,但始終覺得要朝著這個(gè)方向去努力,努力地去挖出一門語言更深層的東西。如果真的能對(duì)一門語言了如指掌,相信再學(xué)習(xí)其他的語言也不會(huì)是多么困難的事情。
于是處在尷尬的第二階段的我想到的繼續(xù)上升的方法是回歸語言本身,去研究語言,去努力地掌握語言,當(dāng)對(duì)基本的編程語言有更深的了解之后,我相信我會(huì)看到更多東西。欲窮千里目,更上一層樓。
技術(shù)的積累與提高就像是我放在文首的那幅圖,永遠(yuǎn)是一個(gè)螺旋上升的過程,我們總要一點(diǎn)一點(diǎn)地去積累,一點(diǎn)一點(diǎn)地向上。這就像網(wǎng)絡(luò)小說里說的修煉升級(jí)一樣,積累一段時(shí)間后遇到瓶頸,而突破了瓶頸又是更高的等級(jí)。這樣想,仿佛也是樂在其中了。
還記得高中時(shí)候的物理選修書的序言,作者期待學(xué)子們能有朝一日拍著那本書說“編者還需費(fèi)思量”,我們的程序員修煉之路也是一樣的,提高與超越應(yīng)該成為我們永遠(yuǎn)的追求,也會(huì)是我們的樂趣所在。感謝周志明老師給我的啟迪,路漫漫其修遠(yuǎn)兮,我們還要重新上路,期待下一次的破關(guān)升級(jí)。