在當今的IT就業市場,有人歡喜有人憂。有人對目前的工作和薪水很滿意,有人目前正面臨着下崗,或者已經下崗……
可能你是公司裡唯一谙熟某項關鍵技術的高手,缺了你,公司便玩不轉了;也可能你所在的公司對你現有的專業技能高枕無憂,認為你在任期内足以勝任公司給你的開發任務(當然就不會再花銀子去教育訓練你啦)。
不要告訴我你們公司對原來用VB3開發的業務處理系統很滿意,而你呢,也認為自己除了用C語言開發程式以外,不會再去做别的什麼事情。
你是不是對.NET和Java為争奪開發工具市場撕破臉皮而熟視無睹,你是不是對XML将要取代關系資料庫而無動于衷以及不屑一顧。你是不是認為你能用彙編或C開發任何東西,是以覺得其它開發工具都不再重要……
如果真是這樣,那麼你離失業的日子不遠了
俗話說--未雨綢缪……
想一想如果你現在失業沒有工作會怎麼樣,
想一想現在還有如此之多的弟兄們為了找一個飯碗而四處奔波。
想一想如果現在你們公司為了搶占市場,突然要進行技術轉向,你該怎麼辦?
想一想你現在為了自己的前途,突然需要改變技術領域,你該怎麼辦?或者你不滿足于現在自己的知識結構,想要再充實一下,但又不知選擇那些内容來學習。那麼繼續往下看,并一起參加讨論吧,相信會有收獲的。
在人才招聘市場,人事經理們關注的是實際技能,要求現在和将來從事開發工作所需要的實際技能。作為一個技術開發人員,自己的知識結構是就業和保持自身崗位的關鍵。此外還有一點也很重要,那就是即便你不再從事或者尋求實際的開發工作,也必須盡可能多地了解和熟悉當今你所從事的領域中最前沿的技術和資訊,隻有這樣才能跟上技術發展的步伐。以便使自己始終處于不敗之地。
本文列出了當今計算機軟體開發和應用領域最重要十種關鍵技術排名,如果你想保證你現在以及未來的幾年不失業,那麼你最好跟上這些技術的發展。雖然你不必對這十種技術樣樣精通,但至少應該對它們非常熟悉。
<b>一、XML</b>
在十種技術中,最重要的一種技術我想應該非XML莫屬。這裡不僅僅指XML規範本身,還包括一系列有關的基于XML的語言:主要有XHTML,XSLT,XSL,DTDs,XML Schema(XSD),XPath,XQuery和SOAP。如果你現在還對XML一無所知,那麼趕快狂補吧。XML是包含類似于HTML标簽的一個文本檔案,在這個檔案中定義了一個樹型結構來描述它所儲存的資料。
XML最大的優點是你既可以在這個文本檔案中存儲結構化資料,也可以在其中存儲非結構化資料——也就是說,它能包含和描述"粗糙的"文檔資料,就象它描述"規則的"表格資料一樣。
XHTML是目前編寫HTML的首選方法;因為XHTML本身就是格式良好的XML,與通常畸形的HTML文檔相比, XHTML格式文檔更容易處理。
XSLT和XSL是對XML文檔進行轉換的語言。它們可以将XML文檔轉換成各種格式,比如另一個文本檔案、PDF檔案、HTML檔案、逗号分割的檔案,或者轉換成其它的XML文檔。
DTDs 和XML Schema用來描述XML檔案所包含的資料内容的類型,使你不用編寫定制的代碼就能對XML文檔的内容進行"有效性"檢查,使内容強行遵守給出的規則。
XPath 和 XQuery是查詢語言,用它們可以從XML文檔中吸取單個的資料項或者資料項清單。XQuery的功能特别強大,因為它對XPath查詢進行了擴充。實際上,XQuery和XML的關系就像SQL之于關系資料庫一樣。
SOAP是Web services間進行通訊的标準協定。你不必知道SOAP協定的所有細節,但是你應該熟悉其常用規則及其工作原理,這樣你才能使用它。
<b>二、Web Services</b>
Web服務是XML流行後的直接産物。因為XML可以描述資料和對象,XML大綱可以保證XML文檔資料的有效性,因為XML的基于文本的規範,因而XML文檔極其适合于作為一種跨平台通訊标準的基本格式。如果你還沒有接觸過Web服務,那麼過不了多久你肯定會碰到它,是以必須熟練掌握Web服務,最好是精通它,因為它是迄今為止應用程式間跨不同種類機器、語言、平台和位置通訊的最簡單的一種方式。不管你需不需要它,Web服務都會是将來互用性的主要趨勢。
XML工作組的John Bosak曾說過:"XML使得Java有事可做",那麼,我們也可以說,Web服務使得所有語言都有事可做。Web服務讓運作在大型機上的COBOL應用程式與運作在手持裝置上的應用程式互相溝通;讓Java小應用與.NET伺服器互相通訊,讓桌面應用與Web伺服器進行無縫互動,不但為商業資料處理,同時也為商業功能提供了友善的實作——并且這種實作與語言、平台、和位置無關。
<b>三、面向對象程式設計</b>
許多程式員仍然認為OOP乃技術的象牙之塔,但是細細想一下過去十年裡在面向對象領域裡占據過統治地位的開發語言之後,你就不會這麼認為了,OOP理念從Smalltalk開始,然後蔓延到C++和Pascal(Delphi),到Java成為真正的主流,幾年之後,VB.NET 和 C#的出現可以說是OOP發展到了登峰造極的地步。雖然使用這些語言不必了解OOP的概念,但如果你缺乏一些OOP的基本知識和方法,我想你很難在逐漸疲軟的就業市場中找到工作。
四、Java, C++, C#, VB.NET
如果你熱衷于技術,并且熱愛程式設計,那麼我想你應該輕松玩轉這些進階語言,我說的玩轉并不一定要你成為超級程式設計高手。而是能看懂用這些語言編寫的代碼即可。如果你還有精力用它們編碼那就更好了。其實這種機會甚少。但是看代碼的機會很多,學習程式設計的最有效的一種方式就是看源代碼——浩如煙海的源代碼中很多都不是用你所鐘愛的開發語言編寫的。
在過去的幾年裡,各個語言功能的發展基本上都差不多。現在你完全可以用VB.NET來寫Windows服務、Web應用或者指令行程式。即使你隻用其中的一種語言寫程式。我認為也完全有必要學習另外一種語言,使自己能閱讀和了解它們現有的例子代碼,并且能将一種語言編寫的代碼轉換成你首選的程式設計語言代碼。這裡列出的四種語言可謂是一個強大的開發語言工具箱,如果你掌握了它們,毫無疑問你一定是一個衆人仰慕的高手。這裡我要聲明一下:那就是我并沒有要忽略和排除其它的進階語言,如:FORTRAN、COBOL、APL、ADA、Perl和Lisp等等,根據你所從事的領域不同,應該選擇适合的語言和工具。
<b>五、JavaScript</b>
Java 和JavaScript兩者的名字盡管很類似,但它們之間并沒有什麼關系。為什麼一種腳本語言會如此重要,以至于将它列入十種關鍵技術之一呢?仔細想一下就知道了,目前所有主流的浏覽器都使用JavaScript。如果你要編寫Web應用程式,那麼JavaScript不可或缺。此外,JavaScript還能作為一種伺服器端的腳本語言,如将它嵌入在ASP、ASP.NET中,或者嵌入XSLT來擴充功能。目前JavaScript在Mozilla/Netscape中是激活基于XUL界面的首選語言,它派生出了ActionScript,成為Flash MX應用的程式設計語言。還有就是JavaScript極有可能成為未來新裝置的腳本語言以及主流應用的宏語言。
相比之下,VBScript雖然在微軟的産品中得到很好的支援,但從長遠來看,沒有迹象表明它會有美好前途。微軟自己都趨向于用JavaScript(或者用由JavaScript派生的JScript)來編寫其用戶端腳本代碼。是以,如果你要選擇腳本語言,非JavaScript莫屬。
<b>六、Regular Expressions</b>
從所周知,關系資料庫的查詢使用SQL,搜尋XML文檔用XPath 和XQuery,而正規表達式則用來搜尋純文字。例如,你可以用一個指令來查找或删除HTML格式檔案中的注釋内容。大家都用過"IndexOf"、"InStr"以及"Like"這些内建在JavaScript或VB中的文本搜尋函數,這些函數雖然很容易使用,但是它們的功能卻無法與正規表達式同日而語——現在每一種主流的開發語言都提供對正規表達式的存取。盡管有人認為正規表達式本身的讀寫艱澀難懂,但畢竟它的功能強大,使用它的領域也越來越多。
<b>七、Design Patterns</b>
就像OOP通過建立和分類對象來簡化程式設計一樣,設計模式将普通的對象互動分類成指定的模型,這是一個從一般到具體的過程。OOP的成分使用得越多,設計模式就顯得越有用武之地。是以你必須了解它們,跟上其總體理論的發展。
<b>八、Flash MX</b>
當你需要比HTML和CSS所能提供的更多的用戶端圖形和程式設計能力時,Flash是最佳選擇。在Flash中程式設計比用Java小應用或者.NET代碼來得快得多,也容易得多。
在最新版本中(MX),Flash不僅可以畫圖和進行動畫打包,它還是個高度的可程式設計應用環境。具備強大的與SOAP Web服務溝通的能力,可以調用運作在遠端伺服器上的ColdFusion、Java或.NET代碼。可以說Flash幾乎無處不在,包括手持裝置、置頂盒、甚至是新的平闆電腦,你到處都可以見到它的身影,是以使用它實際上可以擴充和延伸你的應用程式使用領域。
<b>九、Linux/Windows</b>
這是當今PCs機作業系統的兩大陣容,如果你想在計算機行業裡混,就一定要熟悉它們。對于Linux,最好能自己安裝,配置,下載下傳它的圖形使用者界面以及一些應用程式。自己安裝Apache并會編寫Web應用程式。要清醒地認識到這個世界除了Windows之外,還有Linux的存在。并且這種局面将會長期存在。反過來,如果你是一個死忠的Linux開發者,不要再繼續對Windows的憎惡,要互相學習,取長補短,看看Windows有什麼好的東東可以采納。記住Windows仍然是桌面之王。
誰也說不準你們公司什麼時候會決定從Linux轉向Windows,或者從Windows轉向Linux。誰也說不準什麼時候你會跳槽跑到另外一個使用不同平台的公司上班——或者即便不跳槽,也有可能在不同平台上開始另外一個殺手級項目——是以最好在每個平台上都積累一些經驗,而不要在一棵樹上吊死。
<b>十、SQL</b>
盡管SQL在當今衆多的技術中已不是什麼新東西,而且在未來的十年裡它的作用很有可能被削弱,甚至整個被淘汰,但它仍然是一種基本技能——别看它是一種基本技能,至今仍有許多開發人員不懂什麼是SQL或對它了解不多。不要指望基于圖形使用者界面的SQL構造器會幫你的忙,還是自己親手寫SQL查詢吧,确定你掌握了SQL的基本文法。現在了解了SQL,不僅對以後學習XQuery有所裨益,而且可以使你很快找到簡化或改進目前開發項目的途徑。
<b>尾聲:培養對技術的好奇心</b>
其實,不管技術的發展趨勢如何,每個人最重要的一個技能是好奇心。敢于面對挑戰,在你目前或未來的工作中,新語言或新技術可能很重要,也可能不怎麼重要,你所學習的東西并不一定非要針對你的工作。不要怕失敗,任何新的技術對初學者來說都是困難的。大多數的失敗都可以歸咎于本身急功近利,希望速成。俗話說——千裡之行,始于足下,應該腳踏實地,一步一個腳印地往前走。不要讓時間來左右你行動,而是要利用時間來關注、研究、測試新的開發技術和工具。
本文的用意不在于要讓你成為任何一種技術的專家——隻是想借VCKBAE這塊寶地抛磚引玉,和大家暢談現在和未來哪些技術是我們要密切關注的,讨論今後IT行業就業的知識結構,思考自己今後應該在哪些方面需要多花些功夫。因為每一個人的情況各有不同,應該根據具體情況來構築自己的知識層面。但有一點無庸置疑——那就是保持良好的好奇心始終會使你充實和睿智。