審視專業方面的我——從回顧歷史到認知不足

http://download1.csdn.net/down3/20070607/07014826520.jpg

        在網上看了一篇名爲《讓程序員立於不敗之地的七種武器 》 的文章,寫的精粹。本人即將踏入社會,不出以外的話會和程序脫不了干係。在此就對着這篇文章審視一下自己,以便及時發現不足,不斷進步。

原文如下:

程序員們是這場信息化浪潮的見證者之一,更是其中的主要參與者,這是時代賦予每個程序員的機會和責任…… 

  信息技術的發展時間雖然不長,但其爆炸式的發展速度使信息技術迅速覆蓋社會和人類生活的各個角落。程序員們是這場信息化浪潮的見證者之一,更是其中的主要參與者,這是時代賦予每個程序員的機會和責任。 

  信息技術的更新速度是驚人的,程序員的職業生涯則是一個要求不斷學習的過程,永遠不能固步自封。本人在工作期間曾看見過很多程序員只要有閒暇時間就瀏覽一些沒有太大作用的網頁,在網上聊天,打遊戲,浪費了大量的時間,十分不可取。而另外一種情況是,IT技術的日新月異使很多程序員眼花繚亂,什麼都想學,卻又不知從何學起,今天看看這個,明天學學那個,貪多不熟。 

  雖然IT技術發展迅速,但很多技術都是有規律可循,一些基本的概念、原理和方法還很通用,可以舉一反三。本人根據自己的體會和經驗,向那些剛剛踏入IT行業的新程序員們或正在迷茫的程序員們推薦程序員必須掌握的七種武器,有了這七種武器,雖不敢說笑傲江湖,但將自己立於不敗之地還是可以的。 

  第一種武器:開發工具 

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

  第二種武器:數據庫 

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

  第三種武器:操作系統 

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

  第四種武器:網絡協議TCP
/IP 

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


  第五種武器:DCOM
/CORBA/XML/WEB   Services 

  隨着技術的發展,軟件與網絡的無縫結合是必然趨勢,軟件系統的位置無關性是未來計算模式的重要特徵之一,DCOM
/CORBA是當前兩大主流的分佈計算的中間件平臺,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規範。程序員需要做的不僅僅是利用商業的開發平臺來開發軟件,而是要理解這些技術的初衷,即爲什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻爲互聯網上的“世界語”,是分佈計算的基石之一。 

  第六種武器:軟件工程與CMM 

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

  第七種武器:強烈的好奇心 

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

 

第一武器:開發工具

       說實話把編程語言和開發工具真正區分開來還是前兩年的事情。記得上高一的時候,去參加學校的奧林匹克信息學競賽,認識了Basic語言,用的還是QBASIC,當開始學Pascal語言的時候,我以耽誤功課爲由退出奧賽班了,現在想想還後悔不已,誰讓當時對編程不感冒呢。當時還接觸了logo語言,就是海龜語言,只是覺得好玩,並沒太多注意。知道上大學,開了C和C++的課程,才認識到C/C++這兩種語言的博大精深,但是大一的C沒有好好學~編譯C還是勉強使用了TC2.0,後來學習面嚮對象語言C++才嘗試着用VC,但是只是會建個console控制檯程序和一些簡單的windows界面程序。對於BCB(Boland C++ Builder),壓根沒用過,DELPHI據說是Pascal的進化,也沒用過。而powerbuild接觸過,因爲同學的畢業設計用到了,有時也會跟着看看。因爲鍾情C++,一直沒有把心思花在JAVA和.net上,MS和SUN怎麼競爭不關我的事~以後要學習腳本編程了,據說perl特別別緻,希望可以領略到。

第二武器 :數據庫

        以前總是把編程和做數據庫區分開來,覺得做數據庫就類似於財務上面的會計,現在想想當初還真幼稚。隨着網絡的發展,數據做爲信息的載體,越來越多的出現在我們眼前,而隨着急劇增長的網民,網站,軟件,大規模的管理數據就顯得尤爲重要了。用過access,vfp,至於MS SQL Server沒怎麼系統的學過,只是瞭解。Oracle碰都沒有碰過,像IBM和sysbase的產品就更不用提了,沒機會用到。基本的SQL語法還是系統的學過,只是長久不用,生疏許多。幾範式幾範式還是比較清楚的。我想以後接觸的機會會很多的。

第三武器 :操作系統

      曾幾何時,我理解的操作系統就是用的windows,點點鼠標,敲敲鍵盤。而大三那年,學完了《操作系統概念》,我才深深體會到,真正的操作系統裏面包含了很多,內存的管理,分頁,事務處理,互斥,信號量,線程,進程,死鎖,銀行家算法等等。從那以後我覺得真正從事編程行業,不深深的研究OS是肯定不可以的,一般操作系統都是C/C++寫的,裏面的奧妙遠不是一天兩天就能參透的。記得誰說過,不瞭解操作系統的這些原理,誰敢碰C++呢。linux的風行也讓開源家喻戶曉。這將是一個趨勢。

第四武器 :網絡協議TCP/IP

   網絡一直是我興趣的一部分,大三時候整天看關於網絡原理的書都把編程給扔下了,去報了網絡工程師,而不是程序設計師。OSI七層模型,TCP/IP協議族,三次握手,一個又一個神祕的東西出現在我的世界裏,讓我爲只興奮,爲什麼會這麼樣呢,我總是想這想那。大四上學期讀完了CCNA的課程,沒參加考試,一直太忙,沒時間複習。做一名CCIE一直是心中神聖不可攀越的目標,很難,很難。畢業設計選題的時候,我毫不由於的選擇了,網絡監聽程序的設計,將網絡和編程完美的結合一起了。本來監聽可以說是一種黑客手段,當時高中時代,對黑客技術很是崇拜,唯有羨慕的份。從畢業設計的資料收集到程序的開發測試運行等等都是自己做的,不能不說對網絡和編程都有了深一步的認識。有機會一定把網絡界那幾本聖經級的書拿來看一遍。

第五種武器:DCOM/CORBA/XML/WEB   Services 

僅僅知道名詞而已,中間件也好,XML也好,都是最近才流行起來,當初只知道學習HTML語法,後來經歷了幾次擴展和改進,自己的視線漸漸從WEB上移開,因爲當時一度放棄了網頁製作等電腦基本技巧。

第六武器 : 軟件工程和CMM

純粹是大學裏最後一門專業課上接觸的理論,僅僅是理論,看似空洞,虛無飄渺,實際的話還需要我在以後的工作中去體驗。

第七武器 : 強烈的好奇心

這纔是殺手鐗,一些技術動力源泉。不僅要有好奇心,還應當有持之以恆的毅力。而後者正是我所缺乏的。

僅已以上文字自勉~

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