Java用來(lái)解決業(yè)務(wù)問(wèn)題,實(shí)現(xiàn)商業(yè)價(jià)值。我們工作的過(guò)程,總會(huì)接觸并接受一些領(lǐng)域知識(shí)。領(lǐng)域知識(shí)往往很復(fù)雜,有時(shí)真要學(xué)好一門領(lǐng)域知識(shí)比駕馭一種編程語(yǔ)言要花更多精力。這就是為什么業(yè)務(wù)專家總是身價(jià)很高,掌握領(lǐng)域知識(shí)的門檻本來(lái)就不低。深刻理解領(lǐng)域知識(shí)有利于設(shè)計(jì)并實(shí)現(xiàn)程序。這個(gè)道理很簡(jiǎn)單 —— 我們通過(guò)java抽象領(lǐng)域?qū)ο螅绻麤](méi)有對(duì)領(lǐng)域的深刻理解,怎么能分得清應(yīng)該有哪些domain object,它們的behaviour應(yīng)該是什么?寫程序時(shí)盡量做簡(jiǎn)單又靈活的設(shè)計(jì)。“簡(jiǎn)單”和“靈活”本來(lái)就有一定程度的矛盾,不理解領(lǐng)域知識(shí)就沒(méi)法預(yù)見潛在的擴(kuò)展點(diǎn),容易設(shè)計(jì)不足; 處處盲目預(yù)留各種各樣的擴(kuò)展點(diǎn)實(shí)際上就是過(guò)度設(shè)計(jì)。所以好的程序設(shè)計(jì)不光需要懂得分層, ooad,pattern, strategy, bo,vo,dto…還必然要基于對(duì)業(yè)務(wù)知識(shí)的深刻理解。Domain Driven Design的思想也非常強(qiáng)調(diào)程序員對(duì)領(lǐng)域知識(shí)的學(xué)習(xí)。一個(gè)不可回避的問(wèn)題是,新學(xué)一門領(lǐng)域知識(shí),很難一下把握清楚,1月份對(duì)某個(gè)概念有了一定理解,5月份時(shí)發(fā)現(xiàn)當(dāng)初自以為理解清楚了,其實(shí)有偏差,那么這四個(gè)月里寫的程序可能根本就基于錯(cuò)誤的assumption, 很多設(shè)計(jì)和實(shí)現(xiàn)又要推倒重做。所以比較理想的情況是,程序員就專門深入研究某一個(gè)領(lǐng)域,從此就混跡這一個(gè)領(lǐng)域。表面上這樣限制了程序員混飯吃的門路,實(shí)際上只有這樣才有利于在技術(shù)上有更深層的修為。當(dāng)然一些技術(shù)天才走的是另一條路,Rod Johnson,Gavin King他們能做出來(lái)影響深遠(yuǎn)的framework,萬(wàn)人景仰,那靠的是純粹的對(duì)技術(shù)的深刻理解,還要耐得住性子strive for the goal把想法實(shí)現(xiàn)出來(lái)。有這種天賦的人去搞物理,生物,化學(xué)也能很成功,還能得諾貝爾獎(jiǎng)呢。
那么接下來(lái)要要解決的問(wèn)題是,怎么選擇一個(gè)好的方向去學(xué)習(xí)領(lǐng)域知識(shí)。gartner之類的時(shí)常搞一些這方面的調(diào)研,比如十大有前景IT技術(shù)之類的。他們預(yù)測(cè)的未必準(zhǔn),但是讀一讀這方面的資料你自己也能感受到什么方向至少能長(zhǎng)期混口飯吃。我直到最近才開始投入學(xué)習(xí)領(lǐng)域知識(shí),商業(yè)智能是個(gè)很合適的方向。
商業(yè)智能就是Business Intelligence, 簡(jiǎn)稱BI,只是這個(gè)縮寫容易被當(dāng)作關(guān)鍵詞給過(guò)濾掉,所以這篇文字的標(biāo)題仍然寫全稱。
信息爆炸會(huì)越來(lái)越嚴(yán)重,以后必然是數(shù)據(jù)的社會(huì),BI可以從海量數(shù)據(jù)中獲取價(jià)值,這會(huì)是一個(gè)相對(duì)常青的行業(yè)。更現(xiàn)實(shí)的是,我正好在做BI的公司工作,可以很方便地接觸到相關(guān)軟件,身邊也有這方面的高手可以提供指導(dǎo)。看到人家如何分析問(wèn)題,建立模型解決問(wèn)題,就有種強(qiáng)烈的感覺(jué):這才是能賺錢的本領(lǐng)。
BI的基礎(chǔ)是統(tǒng)計(jì)和數(shù)學(xué)分析,公司里不少人是學(xué)統(tǒng)計(jì)出身的,連CEO也是。咱程序員多數(shù)在學(xué)校里學(xué)的是計(jì)算機(jī),這方面比不上統(tǒng)計(jì)專業(yè)的人, 算是先天不足。但是我簡(jiǎn)單地算了一下帳,發(fā)現(xiàn)這種不足不難后天補(bǔ)齊。如果初級(jí)目標(biāo)是趕上統(tǒng)計(jì)專業(yè)的本科生,據(jù)推斷,統(tǒng)計(jì)專業(yè)的人第一年不可能學(xué)上統(tǒng)計(jì)學(xué),因?yàn)楦叩葦?shù)學(xué)是統(tǒng)計(jì)學(xué)的基礎(chǔ),統(tǒng)計(jì)學(xué)中講分布函數(shù)和分布密度需要用到微積分,極大似然函數(shù)也要用到微積分,所以計(jì)算機(jī)專業(yè)的和統(tǒng)計(jì)專業(yè)的第一年沒(méi)啥差距。而我們?cè)趯W(xué)校也學(xué)過(guò)統(tǒng)計(jì)課,那么我們和統(tǒng)計(jì)專業(yè)的差距主要集中在大二下學(xué)期之后的時(shí)間,大四通常沒(méi)啥重要的課可以講,咱們跟統(tǒng)計(jì)專業(yè)的也就差一年多的學(xué)習(xí)課程,這里還包括很大一部分馬克思主義哲學(xué)之類無(wú)關(guān)的課,所以如果咱們勤奮一點(diǎn),追齊統(tǒng)計(jì)專業(yè)的本科生只需要大約一年的時(shí)間,也許還可以更短。
大學(xué)學(xué)的微積分,線性代數(shù)和統(tǒng)計(jì)學(xué)早就還給老師了,首先要復(fù)習(xí)一下這方面的東西。前段時(shí)間剛復(fù)習(xí)完微積分,統(tǒng)計(jì)學(xué)和一半兒線性代數(shù)。分享一下資源:
微積分之倚天劍 屠龍刀: http://ishare.iask.sina.com.cn/f/6933932.html
線性代數(shù)和概率統(tǒng)計(jì): http://202.113.29.3/~gdsxjxb/wlkj/windows/artsmath/main/index2.htm
統(tǒng)計(jì): http://ishare.iask.sina.com.cn/f/5773491.html
接下來(lái)還要掌握data mining的過(guò)程和方法,這個(gè)可以沿著SAS的semma理論學(xué)習(xí),sample, explore, modify, model, assess。每個(gè)方面都大有學(xué)問(wèn)。還需要學(xué)會(huì)使用相關(guān)的工具,比如enterprise miner. 正在學(xué)習(xí)SAS編程。最后要跟定某個(gè)金錢無(wú)數(shù)的行業(yè)繼續(xù)深入學(xué)習(xí),比如銀行業(yè)。
學(xué)這些不是為了轉(zhuǎn)行搶業(yè)務(wù)專家的飯碗,那太難了,畢竟沒(méi)有合適的環(huán)境。已經(jīng)在Java上投入很多精力和時(shí)間,好不容易積累一些技術(shù)實(shí)力,Java仍然是闖蕩江湖的一項(xiàng)資本,目標(biāo)是做BI方面產(chǎn)品的架構(gòu)師,遇到合適的位置,就無(wú)可替代。與各位同行共勉!