就我而言,總共讀了9年的資管所。從五專、二技到研究所,不管作業系統、資料結構、基本計概、程式語言(basiccobolpascalC++CJava…課程都有開過)、資料庫、高等資料庫…上述專業科目,我可說是上的琳瑯滿目。但老實說從1624歲當中,我一直不曉得我念這些東西要幹嘛。另外,就算念也只是背印象中期中考前背、期末考背、考二技背、考研究所背。我從來不覺得這些東西能幫上什麼忙但這一切直到我出社會工作,又邊兼顧著上課許多原理在有意無意間連結了起來,瞬間我才知道原來理論不是沒有用處,而是我一直沒有看透他而已~以下我舉幾個例子稍做說明:

 

做專案時搜尋比對帶來的困擾與省思!我的上一份工作是在軟體公司上班,共做四年,後面兩年因緣際會開始帶人,我一直印象很深刻的案子是這樣:他有兩組幾百萬筆的資料,而需要比對這兩組幾百萬筆資料之間有差異的data。我底下一個工程師A,他每次測試程式對不對就要開始跑個20~30分鐘,而大家都知道程式不可能寫一次就可以No bug,所以這樣的反覆等待實在浪費時間到了極點。一天,我終於忍不住去問了他為什麼要跑那麼久,他說因為比對不同時,他需要用兩個for loop去拿一組的資料,去另一組資料一筆一筆比對才知道,我那時因為也都在補習班兼著上課,腦袋瞬間一閃,我想到了他在用暴力演算法,也就是窮舉法(這是最沒有效率的方式)。於是乎,我開始思索:他只是想要知道兩組的差異資料,故我請他用一個超大的hash,將一組都放到hash table當中,另外寫一個for loop去把資料再填入hash table,如果有碰撞那就是有重複資料,沒有碰撞就代表這筆資料在另一群沒有由於hash只需要O(1)就可以確定有沒有碰撞,所以使得原來需要O(n平方時間)所短到只需要執行一個for loopO(N),以百萬筆的資料量,這等於時間提高了百萬倍。當然我只是從理論面下去推敲,他半信半疑的寫著我叫他改的程式,後來印象中從30分鐘測試完一輪,變成不到10秒即可跑完,那一瞬間我才真正瞭解分析時間雜度的真諦。開竅了我到那一刻才開始對『瞭解理論』這四著字感到驕傲。

 

客戶的網路架構複雜至極,出動各方委外廠商的大亂鬥。印象中有一年,客戶他們要做資訊安全演練,所以各方人馬都要到齊,去廠商那邊stand by,我是國防役的一員,當然我方由我負責去囉!那時我家的系統突然變的很慢,全部的委外廠商當然都在看戲。而我跟另一位同仁,一直解釋系統之前都跑得好好的,沒理由會產生這樣的問題,一定不是我們這裡出錯。但誰裡你呢?廠商們全部盯著我們找問題,我還記得因此連續好幾天都從新竹跑到台北一直查問題到晚上10點,搭最後一班新竹客運才能回到家呼~這感覺不好受啊!終於在第三天的時候,實在找太久了,開始去問廠商他們網路的架構,他們的DBapplication server(簡稱AP server)分開,而AP server會透過domain name去連DB,我們好奇的把domain name改成IP address,瞬間………系統變快了。腦海一閃,在改成domain name看看,咦~又變慢了,我們開始問:『DNS Server的設定跟架構有沒有改過』,廠商說前幾天有其它的外包商來動過,於時開使用nslook up的指令來看整個domain name去對應到ip的過程,酷讓我們查出他們DNS設定有問題,在某幾台形成了cycle,所以怎麼都沒辦法把domain name對應成ip。這個原理如果我沒有持續教網路,想必那時候應該被其它廠商欺負很久,甚至可能公司要面臨罰款,而單純從理論面去判斷跟釐清,竟然可以達到那麼大的效益這是我始料未及的,也是我開始徹底瞭解原來教書的我不是在幫助同學而已,也事在反覆的強化自己,原來『理論的活用需要反覆的練習,在反覆的過程中,每次都會有不同的收穫』。再講白點:理論是內功心法、實做是招式~缺一不可囉!

 

以上這兩個例子,只是發身在我自己身上的實際案例。拿出來說,不是要說我多會理論。而是『再做任何事的當下,你總是找不到他有價值的地方在哪?但相信我,若能把這些事情紮實的釐清而不是硬背,日後的某一天你的成就將跟此產生直接或間接的連接,這是沒有人可以預期的到,也是人生中最奧妙且迷人的地方』。凡事的根本之道,不要忽略它的重要性跟原理,若沒有反覆的教學我也不曉得原來會有這檔事情:原來程式跟網路概論有關、原來程式跟資料結構與演算法分析能真實使用、原來OS的臨界區間真的那麼重要、原來資料庫的悲觀跟樂觀鎖的效益對DBMS的調校有那麼大的影響

 

更重要的是:我發現了,原來國內工程師會一直被老外吃的死死的,是因為我們通常記了許多的語法,卻忘了理論;而老外剛好相反他很瞭解理論,卻不去記語法因為google一下就有了,更甚者是他們直接把觀念告訴更下游的台灣軟體工程師們...就交給你們了!

 

理論不重要嗎?好好跟他想處,在你人生中某個時刻他會是你臨時解圍的救命丹至於是何時?我想應該是時時刻刻,只是這沒有標準答案跟標準考試場地的生活中,你能不能想起『它』而已~

arrow
arrow
    全站熱搜

    劉逸 發表在 痞客邦 留言(0) 人氣()