要成為JAVA程序員,用三個(gè)月的時(shí)間.
要成為J2EE高手,用一年的時(shí)間.
要成為JAVA技術(shù)應(yīng)用專(zhuān)家,用三年的時(shí)間,其中兩年去學(xué)習(xí)C/C++
現(xiàn)在我再次想說(shuō)這樣的話(huà),如果你從來(lái)沒(méi)有學(xué)過(guò)C/C++,那么我說(shuō)一個(gè)JAVA技術(shù),你可能永遠(yuǎn)也不可能真正的理解它的真正的意義:
方法參數(shù)中JAVA的對(duì)象是如何傳遞的?
真實(shí)的情況是傳遞"引用的值",如果你不了解C/C++,你是無(wú)法理解這句話(huà)的.你只能看別人的書(shū)上說(shuō)什么你就記得什么,而實(shí)際如何,你根本不懂.
這就是為什么要理解底層架構(gòu),協(xié)議.不了解你可能在一個(gè)公司混得很好,一個(gè)學(xué)習(xí)三個(gè)月JSP的人混一個(gè)工作是完全可以的,整天做一些ctrl+c,ctrl+v的工作,可以滿(mǎn)足一般的"開(kāi)發(fā)",但你永遠(yuǎn)不會(huì)成為了一軟件架構(gòu)師,你無(wú)法知道100萬(wàn)用戶(hù)和30用戶(hù)的應(yīng)用之間如何設(shè)計(jì)不同的架構(gòu),你會(huì)以為在你的PC機(jī)上寫(xiě)出一個(gè)BBS DEMO就可以拿去支持100萬(wàn)用戶(hù)的應(yīng)用.
記得有一句話(huà)叫"把一件事做到極致",從一個(gè)JAVA程序員,到現(xiàn)在寫(xiě)作業(yè)系統(tǒng)引導(dǎo)程序和驅(qū)動(dòng)程序,我并不會(huì)做和個(gè)方面的開(kāi)發(fā)工作,但我覺(jué)得這是必須的.只有了解每個(gè)bit的產(chǎn)生源泉,你才能對(duì)你的應(yīng)用有100%的把握.
一個(gè)真正的軟件人,不在于你掌握了什么技術(shù),而在于你對(duì)軟件的認(rèn)識(shí),和認(rèn)識(shí)過(guò)程.
我把認(rèn)識(shí)過(guò)程作為軟件認(rèn)識(shí)或者叫軟件知識(shí)的一部份.是以我的經(jīng)驗(yàn)來(lái)說(shuō),認(rèn)識(shí)過(guò)程是一個(gè)非常重要的部分,或許它比軟件知識(shí)更重要.一個(gè)軟件人對(duì)軟件認(rèn)識(shí)的過(guò)程,主要反映在兩個(gè)方面:
認(rèn)識(shí)軟件知識(shí)體系的方法.
認(rèn)識(shí)軟件知識(shí)體系的態(tài)度.
方法因人而異,合適你的方法就是最好的方法.而我有我自己的學(xué)習(xí)方法.書(shū)(15%)+狗哥(35%)+運(yùn)行(50%),以我現(xiàn)在的水平,看一本專(zhuān)業(yè)的技術(shù)書(shū),我仍然會(huì)把書(shū)中的內(nèi)容在機(jī)器上運(yùn)行以得到驗(yàn)證.并以此加深記憶,而不是象很多高手那樣一周或十幾天就能看完<<thinking in java>>那樣厚的書(shū)(這里只是用它來(lái)比較厚度,不是為了推薦它).說(shuō)實(shí)話(huà)我沒(méi)有這種能力.而且,任何技術(shù)方面的書(shū)中如果有光盤(pán),我首先會(huì)扔了它(當(dāng)然以后可能會(huì)從某一地方找到),因?yàn)槲倚枰獜逆I盤(pán)上輸入我想要驗(yàn)證的內(nèi)容.
而"運(yùn)行"并不是把書(shū)籍提供給你的例程運(yùn)行一次,那需要對(duì)所能考慮到的所以情況反復(fù)測(cè)試,比如一個(gè)API,不同參數(shù),不同環(huán)境,以及不同運(yùn)行次數(shù)的性能,在多線程中的安全性和可并發(fā)性等等.
我的學(xué)習(xí)方法很笨,就是大量的上機(jī)實(shí)踐.
對(duì)于學(xué)習(xí)的態(tài)度,這一點(diǎn)猶其重要.好學(xué)不叫學(xué)習(xí)態(tài)度,為了很多理由,我們都需要學(xué)習(xí),誰(shuí)都能做到.但是如何學(xué)習(xí),學(xué)什么,真正能反映一個(gè)人的學(xué)習(xí)態(tài)度.
按你的計(jì)劃,根據(jù)你的需要而學(xué)習(xí),而不是流行什么就學(xué)習(xí)什么.這一點(diǎn)說(shuō)起來(lái)輕松,可很少人做到.
我是完全從面象對(duì)象開(kāi)始接觸程序的.當(dāng)我還不知道什么叫程序的時(shí)候,我聽(tīng)到有一種東西叫JAVA,然后我認(rèn)識(shí)了它.當(dāng)我用它寫(xiě)出一個(gè)還算可以的應(yīng)用時(shí),我認(rèn)識(shí)到我需要深入到它的底層,我要了解JVM,然后我知道我的知識(shí)需要向底層遞歸,然后我從最最基礎(chǔ)開(kāi)始,數(shù)邏,作業(yè)系統(tǒng),數(shù)據(jù)結(jié)構(gòu),編譯原理,匯編,C/C++等這些看似無(wú)關(guān)的知識(shí)把我對(duì)JAVA的理解推向了一個(gè)超越的層次.今天,我仍然說(shuō)我是一個(gè)JAVA程序員,我以它入門(mén),又以它最擅長(zhǎng).但我更要說(shuō),沒(méi)有匯編,C/C++這些基礎(chǔ),我不會(huì)成為一個(gè)真正的JAVA程序員.也不會(huì)讓我輕松地成為一個(gè)C#程序員.所以基礎(chǔ)的東西還是很重要的。
學(xué)習(xí)態(tài)度的另一個(gè)方面是敢于求真的勇氣,在意別人不屑的東西.這一點(diǎn)以后再詳說(shuō).
我相信你有興趣看這個(gè)欄目,就應(yīng)該有能力判斷,什么是永恒的,什么是瞬夕的.當(dāng)然你也不會(huì)因?yàn)槲业膸拙湓?huà)而改變你.我甚至不愿意對(duì)你有什么影響,即使我的觀點(diǎn)是唯一正確的,我也無(wú)法證明它是正確的,何況它并不一定就是正確的!因?yàn)槲业乃枷胍苍诎l(fā)展.