電腦技術在一般人的概念裡,是一種變化極為快速的東西。就拿處理器來說,沒多久前才推出雙核心的版本,四核心隨即問世。

對於保守不喜變化的人來說,電腦真的是一個叫人望之卻步的領域。事實上,不僅對一般人來說是如此,對許多資訊產業的從業人員而言,又未嘗不是這麼想的。尤其資訊產業是個名詞快速推陳出新的產業,就拿網路來說,一下子是Web 2.0、一下子又是UGC(User Generate Content)、SNS(Social Network Services),想要追趕時代潮流的每個浪頭,光是在心中想想,就覺得十分吃力。

技術飛快進展,一不注意就遭淘汰?
可是,轉念一想,技術變化如此快速,倘若不能時時勤拭,職場生涯的前途恐怕就要染上些許的塵埃了。將這種「如果不持續關注技術發展,就會被淘汰」的恐懼稱為「新技術焦慮症」,一點也不為過。有些人甚至相信,對新技術焦慮的念頭,是推動自己不斷精進的一大動力。

這種IT從業人員的毛病,程式人當然也無法免疫。以Java為例,JDK最近幾年一路從1.4殺到了1.6。記得不久前EJB(Enterprise JavaBeans)還大行其道,現在Entity Beans早就乏人問津,如今,最多人採用的資料存取方案已經是Hibernate了。

Java不是才流行沒多久嗎?怎麼最近已經有人喊出「Java即將COBOL化」的口號呢? Java Frameworks一堆過時又複雜的設定,讓Java像是一頭腳步笨重的大象,要使用當紅炸子雞的RoR(Ruby on Rails)才能跳出輕盈的舞姿。雖然身在Java陣營,但是看著吸取Java精華再發揚光大、又有微軟一甲子功力加持的.NET技術,心裡難免不禁心猿意馬,不知道是不是應該要預先做好更換跑道的心理準備。

許多程式人深陷在這樣的焦慮中,不是耗費許多的時間探索每一項新技術,就是時常讓這樣子的憂心困擾。事實上,從我的觀點來看,這兩種情況都大可不必。

緊盯每一項新技術的發展,收穫有限
其實,任何領域的知識學問多半有一種共通的特性,也就是說,越是變化快速的,越是位在學問領域的外圍或表面;而真正處於核心地位的學問,幾乎都是穩定而長久不變的。

以電腦科學的學問來說,一代大師John von Neumann提出的凡紐曼架構(Von Neumann Architecture),至今所有的電腦都無法超出它的範疇。愈是包容廣泛且價值重要的學問,其實往往歷久不衰且不變。今日資訊科技所使用到的理論基礎,絕大多數在幾十年前就已經建立完成,而且鮮少有極大的變動。

從另一個面向來看,許多人所害怕的那些快速變化的事物,時常都只是短暫的光環,很容易就被其他的事物取代。倘若因為對技術的焦慮,而迫使自己不斷地追求每一項新的事物,那麼不僅疲於奔命,更殘酷的是,其實追求的事物,也許根本一點都不重要。

當B快速取代A、而C又快速取代B、發展到D快速取代C時,從A直接跳過B、C來到D,其實並不會有太大的差異。但對緊盯每一項新技術發展、關心每個A、B、C、D的技術焦慮者來說,必須投入探索成本可能就高很多了。

善用成熟技術,而非浪費心力摸索
更有一類人,不以追求新技術為苦,甚至以追求新技術為樂,我稱為「技術升級狂熱者」。這一類的人可以算是技術焦慮的加強版本,他們不僅存有追求新技術的焦慮,而且時常因為技術能力好,上手速度快,也容易從新技術中發掘專屬的樂趣,所以總是花許多時間學習新技術,盡可能地應用新技術開發所有想做的產品或服務。

保持對新技術學習的熱情,並且還有能力駕馭,絕對是一件好事。可是,典型的「技術升級狂熱者」時常會陷入只用新技術的迷思。所以,要開發新的產品前,只挑選最新的技術,甚至會持續把舊有的產品,全部以最新流行的技術翻新。這樣的做法其實會遇上兩個問題。

首先,從生產力的觀點來看,舊有、已完成的產品已經是成熟穩定的,而且滿足一定品質標準的。新的技術,倘若不能提供額外的好處,或者不能提供足夠多的好處時,貿然更換成新技術,也只是弊多於利。

例如,你已經有一套利用EJB存取資料的系統,運行一陣子穩定下來了。不能因為近來流行Hibernate,就決定把系統更換成Hibernate。即使Hibernate或許真能帶來一些好處,但是仍得付出探索新技術、以新技術實作、除錯解決問題,以及重新讓產品穩定下來等代價。除非使用新技術的好處十分明顯而且重大,否則輕易更動品質已經穩定的程式碼,通常都是不智之舉。

使用新技術還有另一個問題,就是新技術通常相對較不成熟。成熟技術最大的優點,是使用上所有可能遭遇的問題,多半都有人碰過,而且也都有相對應的對策出現。風險不在於新技術不好,而是當你遇上問題時,有可能是全世界少數幾個、甚至是唯一一個遇上這個問題的人,沒有前人或很難找到前人的經驗可供參考以解決問題。

撰寫一段程式碼也許很快,但是,當程式碼遇上百思不得其解的問題時,恐怕就得花上幾十倍甚至上百倍的時間才能解決它。

待技術有能力存活下來再進場
不論是對新技術焦慮或是熱衷於技術升級,其實都應該明白,雖然資訊科技萬變不離其宗,但是總會有人不斷搭配新的觀念,嘗試推出各種新技術。技術都有一定的生命周期,從被發明、快速成長、成熟穩定,到最後過時。有些甚至撐不到成熟穩定的階段,就會被淘汰。

有時這是因為技術不夠好,不能提供較舊有技術明顯的利益,有時也可能是因為市場因素,讓好技術無法廣為眾人接受。即使各項新技術如過江之鯽,令人看得眼花撩亂,但真的能進入快速發展甚至成熟穩定階段的技術,卻又只是眾多新技術中的少數。

就好比前文所提及,針對某一項需求,不斷有A、B、C、D等技術推出。在這幾項技術裡,也許B、C都只過渡到快速成長的階段,就已經被淘汰。如果只是因為焦慮,就得在每個新技術推出後,耗費相當大的心力去探索、研究,那麼也許就花費太多時間在不需要了解的議題上,最後也只是鏡花水月一場。

不夠好以致於被淘汰的技術,就算了解透澈也是一點用也沒有。不能廣為接受而被眾人忽視的技術,使用起來風險也高。事實上,必須要待技術本身證明有能力存活下來,而且足夠成熟,你再進場。

熟悉關鍵知識,效益更大
我的觀點是對初發明的技術保有適度的關心,摘要性、重點性地了解它的核心精神就好,這是為了日後在需要新技術時能更快上手而作的基礎功課。絕對不需要過度投入,除非只是把這項技術當做一項個人的娛樂。

對於快速發展中的技術,則可以利用小型的實驗性專案練習與實驗。經過多次的練習後,對於常見的錯誤或問題,已經能夠掌握。等到該技術逐漸成長,快進入成熟穩定的階段時,便可嘗試導入到更大型產品的開發。

最後,我想提供一個忠告,與其焦慮快速變化的表面技術,不如花更多的心力在更本質性的學問上。就程式設計來說,有更多更核心的原則與理論可供鑽研。例如物件導向的設計方法、設計模式、軟體架構設計等,不僅博大精深,而且經得起時間考驗,在這些學問上的投資更為值得,也不用擔心會快速過期。能夠掌握核心,對於快速變化的技術,通常也就能夠一以貫之,一法通萬法通了。

作者簡介:
王建興
清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是Internet應用系統的開發。曾參與過的開發專案性質十分廣泛而且不同,從ERP、PC Game到P2P網路電話都在他的涉獵範圍之內。

熱門新聞

Advertisement