本期《IT名人堂》邀請(qǐng)到了Oracle開(kāi)發(fā)大師蘇旭暉先生,也就是ITPUB論壇中的newkid。說(shuō)起newkid,在ITPUB可以說(shuō)是備受大家推崇。那么這次訪談他又給我們帶來(lái)了哪些內(nèi)容和驚喜呢?
蘇旭暉(newkid),oracle開(kāi)發(fā)板塊資深版主,現(xiàn)居加拿大多倫多,長(zhǎng)期活躍于開(kāi)發(fā)板為網(wǎng)友答疑解難,堅(jiān)持每天貢獻(xiàn)PL/SQL CHALLENGE 每日一題,曾參與撰寫(xiě)itpub系列叢書(shū):劍破冰山:Oracle開(kāi)發(fā)藝術(shù)。擔(dān)任了第三屆SQL編程大賽的出題與評(píng)審工作。
duke217:蘇老師,您好!在ITPUB,您可是大神級(jí)別的人物,相信很多朋友對(duì)您都已經(jīng)很熟悉了。但同樣,我們還有很多新朋友對(duì)您不是很了解。您能否再簡(jiǎn)單的介紹一下自己?分享下您的職業(yè)經(jīng)歷?
newkid:應(yīng)該說(shuō)我是大叔級(jí)別的人物還差不多。我1992年畢業(yè)后在廈門(mén)的一家軟件企業(yè)工作,一開(kāi)始主要是在DOS下寫(xiě)FoxPro的程序,有時(shí)候也干一些諸如安裝打印機(jī)、殺病毒之類的雜活。幾年下來(lái)我練成了FoxPro大師,曾經(jīng)用FoxPro寫(xiě)過(guò)一個(gè)類似WPS的文本編輯器,還寫(xiě)過(guò)俄羅斯方塊游戲。幾年后公司開(kāi)始做醫(yī)院收費(fèi)系統(tǒng),采用的是當(dāng)時(shí)流行的CS架構(gòu),客戶端用PowerBuilder做開(kāi)發(fā),數(shù)據(jù)庫(kù)用Oracle,我被同事培訓(xùn)了一下就上崗,幾年下來(lái)不知不覺(jué)又成了PowerBuilder大師。這兩樣我曾經(jīng)最拿手的本領(lǐng)現(xiàn)在都已進(jìn)入歷史博物館,也基本忘光了,只剩下Oracle還沒(méi)丟。算起來(lái)接觸Oracle的時(shí)間已經(jīng)有18年了,但真正專職從事Oracle開(kāi)發(fā)是從2003年移民加拿大開(kāi)始。當(dāng)時(shí)恰好找到的第一份工作是做Oracle開(kāi)發(fā),積累了經(jīng)驗(yàn)后再換工作也是這個(gè)方向,算是機(jī)緣巧合吧。來(lái)到itpub的緣起也是很湊巧,2008年經(jīng)濟(jì)蕭條時(shí)我上班很閑,到處晃悠,在別的網(wǎng)站看到有人在推薦itpub,進(jìn)來(lái)之后才發(fā)現(xiàn)自己原來(lái)早就注冊(cè)了賬號(hào),是有次下載電子書(shū)時(shí)偶然注冊(cè)的。開(kāi)發(fā)版的內(nèi)容很對(duì)我的胃口,精華區(qū)里有很多奇妙的技巧貼,我花了很多時(shí)間閱讀,也試著回答網(wǎng)友的問(wèn)題,慢慢地就養(yǎng)成了每天必來(lái)的習(xí)慣,直到今天。
duke217:經(jīng)過(guò)多年的實(shí)戰(zhàn)洗禮,您在學(xué)習(xí)和工作的道路上有過(guò)困惑么?能否分享下您的經(jīng)驗(yàn)和故事?
newkid:要說(shuō)困惑,那就是職業(yè)轉(zhuǎn)型的困惑。在國(guó)內(nèi)做程序員是種吃青春飯的職業(yè),做開(kāi)發(fā)到了一定年齡之后就很難繼續(xù)了,我其他方面的才能又十分有限,所以轉(zhuǎn)型之后就感覺(jué)自己對(duì)公司做不出貢獻(xiàn)了,于是選擇了出國(guó)。在國(guó)外重操開(kāi)發(fā)舊業(yè)之后我感覺(jué)自己的青春延續(xù)了,每天做的都是自己擅長(zhǎng)且感興趣的事,日子過(guò)得比較充實(shí)?,F(xiàn)在公司里各種膚色年齡的人都有,像我這樣的大叔混雜在開(kāi)發(fā)隊(duì)伍中竟然沒(méi)有違和感。我的經(jīng)歷和個(gè)人性格有關(guān),對(duì)別人不一定有參考作用,我也祝愿所有程序員都能找到適合自己的發(fā)展方向。
duke217:近年來(lái),Oracle的自動(dòng)化程度變得越來(lái)越高,很多需要人為介入的優(yōu)化手段也變得越來(lái)越簡(jiǎn)單。在這種情況下,您對(duì)SQL優(yōu)化的價(jià)值體現(xiàn)怎么看?
newkid:Oracle優(yōu)化器的智能化把我們從一些低端的勞動(dòng)解放出來(lái)了,比如現(xiàn)在我們?cè)诖蠖鄶?shù)情況下都不需要操心IN(SELECT...)和EXISTS(SELECT...)的差別,這樣我們可以把精力放在技術(shù)含量更高的設(shè)計(jì)方面,比如數(shù)據(jù)結(jié)構(gòu)、物理組織等等方面,設(shè)計(jì)做好了寫(xiě)起SQL可以事半功倍,這是SQL優(yōu)化的更高境界。另一方面,任何產(chǎn)品都不可能是完美的,隨著新功能的引入,優(yōu)化器的行為也會(huì)更加難以捉摸,新版本往往會(huì)帶來(lái)新的BUG,這就需要我們不斷學(xué)習(xí),掌握優(yōu)化器的新特性和新的干預(yù)手段和工具,當(dāng)新版本優(yōu)化器不能好好干活時(shí)知道怎么“治”它,這也算是人力優(yōu)化的價(jià)值體現(xiàn)吧。
duke217:作為一名數(shù)據(jù)庫(kù)從業(yè)者,您如何看待關(guān)系型數(shù)據(jù)庫(kù)和NoSQL之間的競(jìng)爭(zhēng)?他們未來(lái)會(huì)呈現(xiàn)何種關(guān)系呢?
newkid:SQL不是萬(wàn)能的,但沒(méi)有SQL是萬(wàn)萬(wàn)不能的!粗看起來(lái)SQL是一門(mén)簡(jiǎn)陋的語(yǔ)言,但其實(shí)它書(shū)寫(xiě)簡(jiǎn)潔,功能強(qiáng)大,有旺盛的生命力,以后也會(huì)繼續(xù)生存。我對(duì)NoSQL的了解都來(lái)自于網(wǎng)絡(luò),據(jù)我所知它的弱點(diǎn)在于對(duì)事務(wù)的支持,而關(guān)系數(shù)據(jù)庫(kù)在這方面是非常成熟的,有多年的技術(shù)積淀,任何顛覆者想要取代關(guān)系數(shù)據(jù)庫(kù),最后會(huì)發(fā)現(xiàn)只是把輪子重新發(fā)明了一遍而已,而且代價(jià)高昂,很可能還沒(méi)原來(lái)做得好。世界上還有許許多多需要事務(wù)支持的應(yīng)用,在這方面關(guān)系數(shù)據(jù)庫(kù)的地位是很難撼動(dòng)的。未來(lái)這兩種陣營(yíng)將會(huì)有各自的地盤(pán),并且互相學(xué)習(xí)、取長(zhǎng)補(bǔ)短,比如Oracle就一直在豐富自己的SQL功能,加入了對(duì)文本搜索、GIS、XML等等的支持,現(xiàn)在又推出了BigDataSQL產(chǎn)品,可以用SQL來(lái)訪問(wèn)NoSQL數(shù)據(jù)。
duke217:眾所周知,您沉浸SQL開(kāi)發(fā)行業(yè)已經(jīng)有10多年了,那對(duì)于新進(jìn)入的開(kāi)發(fā)人員有什么好的建議呢?
newkid:類似的問(wèn)題我在論壇上看到過(guò)幾次,每次我的回答都是:興趣是最好的老師。在我看來(lái),SQL其實(shí)是很有趣的語(yǔ)言,我們歷屆的SQL比賽都會(huì)有意找一些標(biāo)新立異的題目,讓人感受到SQL的獨(dú)特魅力。說(shuō)實(shí)話在我剛開(kāi)始學(xué)習(xí)SQL的前幾年也不知道SQL可以這么好玩,可見(jiàn)興趣是可以培養(yǎng)的。只要有了興趣,你就會(huì)好奇,就會(huì)主動(dòng)尋找學(xué)習(xí)資料,而網(wǎng)上的SQL學(xué)習(xí)資料是很豐富的,我甚至可以夸口,關(guān)于SQL開(kāi)發(fā)的任何問(wèn)題你都可以到我們ORACLE開(kāi)發(fā)版來(lái)找到答案,這里有一幫高水平而又熱心的網(wǎng)友和版主。只要有了興趣,在別人看來(lái)枯燥無(wú)味的工作一點(diǎn)也不辛苦,當(dāng)你把別人寫(xiě)的幾百上千行的SQL看懂,并且用更好的寫(xiě)法取代,運(yùn)行時(shí)間從幾小時(shí)降到了幾秒鐘,那種成就感是無(wú)以倫比的。我希望SQL能得到越來(lái)越多的開(kāi)發(fā)人員的重視,哪怕你做的不是專職的數(shù)據(jù)庫(kù)開(kāi)發(fā),精通SQL對(duì)你的職業(yè)生涯也是大有裨益的。
duke217:幾年前,您參與編寫(xiě)的《劍破冰山—oracle開(kāi)發(fā)的藝術(shù)》大受業(yè)內(nèi)好評(píng),不知道您最近都在忙些什么,有沒(méi)有編寫(xiě)新作品的計(jì)劃呢?
newkid:我是個(gè)典型的IT宅男,整個(gè)人生就是上班、吃飯、睡覺(jué),解悶的方式就是在地鐵上聽(tīng)音樂(lè),看視頻。我的文字表達(dá)能力是短板,而且人也比較懶,平時(shí)沒(méi)有寫(xiě)文章、寫(xiě)博客的習(xí)慣,零碎發(fā)帖倒是很勤,但基本上沒(méi)什么積累。我要感謝劍破冰山的其他作者促成了我那次的玩票之作,如果有機(jī)會(huì),碰到好的選題還是有可能再寫(xiě)的,但目前完全沒(méi)有計(jì)劃。