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