程序員必備技能

--必備技能--

熟練開發工具

做爲一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成爲開發工具中的利器,很多系統級的軟件還是用C/C編寫。而JAVA的跨平臺和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成爲未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。

 

熟知數據庫

  爲什麼數據庫是如此重要?作爲程序員,他們自然有自己的理由:很多應用程序都是以數據庫的數據爲中心,而數據庫的產品也有不少,其中關係型數據庫仍是主流形式,所以程序員至少熟練掌握一兩種數據庫,對關係型數據庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多數據庫產品提供了可視化的數據庫管理工具,但SQL是基礎,是通用的數據庫操作方法。如果沒有機會接觸商業數據庫系統,可以使用免費的數據庫產品是一個不錯的選擇,如mySQL,Postgres等

 

瞭解操作系統

當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成爲一個真正的編程高手,需要深入瞭解操作系統,瞭解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作爲開發源碼的操作系統,是一個很好的學習平臺,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。

 

懂得網絡協議TCP/IP。

   在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網絡技術已改變了軟件運行的模式,從最早的客戶/服務器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧爲基礎的網絡協議支持,深入掌握TCP/IP協議是非常必要的。至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。

 

明白DCOM/CORBA/XML/WEBServices存在的意義

  隨着技術的發展,軟件與網絡的無縫結合是必然趨勢,軟件系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分佈計算的中間平臺,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規範。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻爲互聯網上的“世界語”,是分佈式計算的基石之一。

 

不要將軟件工程與CMM分開

  大型軟件系統的開發中,工程化的開發控制取代個人英雄主義,成爲軟件系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟件工程思想有機結合,編程只是軟件生命週期中的其中一環,優秀的程序員應該掌握軟件開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟件測試等。

 

 

 

--素質要求--

 

 

需求理解能力

程序員要能正確理解任務單中描述的需求。在這裏要明確一點,程序員不僅僅要注意到軟件的功能需求,還應注意軟件的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有着兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。

 

模塊化思維能力

  作爲一個優秀的程序員,他的思想不能在侷限當前的工作任務裏面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重複利用,減少重複的勞動,也能是系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。

 

團隊精神和協作能力

  團隊精神和協作能力是作爲一個程序員應具備的最基本的素質。軟件工程已經提了將近三十年了,當今的軟件開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。

 

文檔習慣

  文檔是一個軟件系統的生命力。一個公司的產品再好、技術含量再高,如果沒有缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟件作坊。作爲代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。

 

規範化的代碼編寫習慣

  知名軟件公司的代碼的變量命名、註釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。

 

測試習慣

  測試是軟件工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。

 

學習和總結的能力

  程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣纔能有目的地提高自己。這樣才能逐步提高,從程序員升級爲軟件設計師、系統分析員。

 

擁有強烈的好奇心

  什麼纔是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峯的源泉和動力所在。

 

 

 

--職業困境--

 

 

   老虎、Bill、自己,中國程序員的困境也來自三個方面

   困境之一:老虎的威脅。程序員要面對的餓老虎實在不少,比如說老闆,好象老闆就是程序員的天敵,什麼“不懂技術卻指手畫腳”、什麼“得到與付出不相當”似乎是程序員最常見的牢騷,這個問題不可能得到真正的解決。

   困境之二:Bill的競爭。一般說來中國的程序員大都是喫“青春飯”的,大部分程序員的黃金時代是24~28歲。到了30歲左右,一批又一批年輕程序員會給你帶來巨大的競爭壓力。首先由於軟件行業的飛速發展,很多自己以前學的東西逐漸升級換代,而許多程序員由於長期於工作,學習新知識的效率必然下降。其次自己幹了幾年,薪水要求自然就高了,而年輕程序員工資又低、幹活又快,當然會成爲老闆的首選;第三,30歲基本都已經成家了,要支撐家庭的生活負擔,幾乎連從頭在來的勇氣都不會有了。中國的老話說“長江後浪推前浪、一代新人換舊人”,這個歷史的規律在軟件開發行業體現的尤其明顯和殘酷,很多程序員必然要面對的結果就是降薪乃至失業。

   困境之三:自我的實力。都知道人最難戰勝的是自己,所以自我也就是程序員需要超越的最大障礙。大多程序員都把系統分析員和項目經理作爲自己的職業目標,但這些目標的達成,需要個人素質、市場機遇等多個方面的條件,太多的程序員就是在高不成、低不就的狀態中蹉跎了歲月。對於系統分析員,特別需要以下幾方面的素質:客戶需求分析能力、系統架構與設計能力、模塊分解設計能力、項目流程控制能力、項目風險評估能力等,而對於項目經理則更注重項目管理方面的能力如團隊組織能力、溝通協調能力、分析問題解決問題的能力以及良好的職業道德等,而這些素質和能力往往只能依靠程序員個人的學習和努力。看到越來越多的程序員開始學習項目管理的課程,真的有點爲他們擔心,因爲現在的項目管理培訓只能停留在理論和考證的程度,既沒有素質方面的訓練,又缺少實際軟件開發項目的案例,學習的結果遠遠不能達到預期的效果。

 

 

 

--軟件工程師--

   . 具有紮實的計算機基礎理論知識;

   . 精通C/C++、Java、C#等語言,具有豐富的Unix/Linux/Windows系統下開發經驗;

   . 精通Perl、Python、PHP、Shell等腳本語言;

   . 有一定的算法基礎,具有較強的獨立解決問題能力;

   . 有大容量、高性能、分佈式系統的設計開發經驗;

   . 具有很強的學習能力和對新技術的追求精神;

   . 具有良好的中英文溝通能力,具有項目管理經驗者優先;

   . 認同客戶第一、團隊合作、擁抱變化、誠信、激情、敬業的企業價值觀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章