看了這篇名為《開發(fā)工程師之路》的文章,頗有感慨。特寫此文與所有java愛好者共勉。
對于我個人來說,從事技術(shù)工作已快有兩年了,有時問問自己,這些年來到底真正掌握的技術(shù)有多少?自己天天都做了些什么?如今有什么值得回味的呢?
一想到這些問題,就不免身冒冷汗。仔細(xì)一想,這兩年來,每天除了工作就是學(xué)習(xí)(當(dāng)然周末有例外),新技術(shù),新工具,一個個的學(xué),一個個的用。到如今呢,說學(xué)了什么?能列出來的不就是java相關(guān)的東西嗎?技術(shù)方面:Servlet,JSP(TagLib),EJB,JNDI,JDBC,JMail,JMS,XML,UML,AOP,ICO,JMX。工具方面呢?開源的Ant,Log4j,Exe4j,Junit,dom4j,Xdoclet,Resin,Tomcat,Eclipse,Struts,Hibernate,Spring.其它工具:Jboss,Jbuild等,另外就是學(xué)了一些設(shè)計(jì)模式,項(xiàng)目管理相關(guān)的知識,再就是windows,linux下的一些其它東東。留下的看得見的東西可能就是做過的七八來個項(xiàng)目和一堆讀書筆記(由于時間原因,未放在網(wǎng)上,我會陸續(xù)發(fā)表的,請關(guān)注)。
從整個JAVA的技術(shù)領(lǐng)域來看,我所學(xué)的只能算冰山一角,還有很多東西只是聽說過而已,就拿J2EE來說,就有Web Services,JSF,SOAP,WSDL,JAAS還有其它JAVA技術(shù)JINI,JWS等等,還有當(dāng)前正在流行的N多開源項(xiàng)目:HiveMind,Turbine,Tapestry,Ruby... 當(dāng)然,還有很多J2SE的技術(shù)未包括:像java 2D,java sound,而且這還不包括J2ME的內(nèi)容。對于已經(jīng)學(xué)習(xí)過的東西,可能很快就被遺忘了,因?yàn)閷W(xué)的越多,忘記越多。要真正掌握一個領(lǐng)域內(nèi)完成的知識體系,可能就像這篇文章《在十年里學(xué)會編程》 里所說的,真的需要十年時間!!!十年以后,就可成為一個領(lǐng)域內(nèi)的專家?通才?不,很有可能是一個“什么都會”的技術(shù)狂人?!笆裁炊紩币馕妒裁矗靠赡埽壳傲餍泄ぞ吣愣紩?,主流技術(shù)你能用,但是新的技術(shù),新的工具不斷的涌現(xiàn),你還需要不斷地學(xué)。所以說,要做這樣的技術(shù)狂人十年是遠(yuǎn)不夠的!然而,象這樣學(xué)習(xí),十年,對于 我來說太長了!(當(dāng)然,學(xué)習(xí)是一輩子的事,活到老,學(xué)到老嘛 ^ - ^ )
不要做技術(shù)狂人,要做就做技術(shù)牛人?。?!人的精力是有限的,對于技術(shù),我認(rèn)為不可盲目追求,要適可而止。
為什么這么說呢?難道自己對技術(shù)沒興趣了,不。關(guān)鍵是目前的技術(shù)范圍太大,太廣,一個人不可能什么都懂,什么都會。當(dāng)然這句話的前提是在時間有限的情況下。那么,如何在有限的時間里掌握更多的知識呢?
我覺得首先對所學(xué)的東西有一個著重點(diǎn)的認(rèn)識,抓重點(diǎn)學(xué)。
什么是重要的?對于java來說,j2se是最重要的。最重要的也是最基礎(chǔ)的,學(xué)好的基礎(chǔ)的,其它學(xué)起來不僅輕松而且是效率高。學(xué)好了j2se里最基礎(chǔ)的,學(xué)J2EE就快了。不要一開始就是EJB,JMS,當(dāng)然這些技術(shù)可先了解。學(xué)好了j2EE,再來用Struts,Hibernate,Spring豈不是小兒科,三天搞定!!!聲明一下,前而說的“學(xué)好了j2EE”,是指完全掌握其原理,對技術(shù)細(xì)節(jié)要有一定了解,至于其它方面,只需知道怎么查文檔就可以了,也就是說對于某一細(xì)節(jié),可快速查找到相應(yīng)文檔即可。再一個,前面說所的“三天搞定”,是指知道其原理,學(xué)會簡單使用方法(復(fù)雜的使用查文檔不就完了),實(shí)現(xiàn)細(xì)節(jié)就不用管了,因?yàn)橛衘ava基礎(chǔ),還愁不知道是怎么實(shí)現(xiàn)的?如果你起Struts,Hibernate,Spring覺得很難,一句話,基礎(chǔ)知識沒學(xué)好!這里不排除通過用Struts,Hibernate,Spring來學(xué)基礎(chǔ)的人。
總之,學(xué)基礎(chǔ)的,沒錯!什么是基礎(chǔ)的?借用一名流行的話:一流的公司賣標(biāo)準(zhǔn),二流的公司賣技術(shù),三流的公司賣產(chǎn)品,標(biāo)準(zhǔn)就是基礎(chǔ)。
其次,不要在掌握了基礎(chǔ)之后,自己寫一些所謂的工具。因?yàn)檫@些工具如果有用,你能想到的,別人肯定也想到了,所以沒有必要花時間去創(chuàng)造東西,而是去尋找別人已經(jīng)做好了的東西,學(xué)習(xí)使用別人的東西。http://sourceforge.net上有N多工具供你選擇。如果你想到的別人沒有呢,那好啊,做成項(xiàng)目(見下)
最后,用你可以用你所學(xué)的開發(fā)出一兩個完整的項(xiàng)目。不要太多,兩個就夠!項(xiàng)目一定要完整,而且還要實(shí)用,最好從實(shí)際需求出發(fā),整合自己所學(xué)的知識和第三方的工具。
另外,在自己的blog上多發(fā)表文章,多與人探討。
做到以上四點(diǎn),不用十年,絕對可成技術(shù)牛人!希望所有的java愛好者成為技術(shù)牛人!!!
作者簡介:
施祖陽,網(wǎng)名sylilzy,1979年生。
2002年起從事軟件開發(fā)工作,主要研究JAVA、Linux及相關(guān)技術(shù)。