1. 程式人生 > >程式設計師必備法寶(漲薪祕籍)

程式設計師必備法寶(漲薪祕籍)

職業要求

一般的程式設計師都有四年的在專業領域的學習,需要一個在程式領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。
程式設計師

​ 大約有20%的人在這一領域的電腦科學和工程學擁有更高的學位。還有很小一部分程式設計師是自學的,儘管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。儘管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程式設計師雖然有正規的學歷,但是如果一個人擁有程式設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要儘量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。

對於職業程式設計師,另外一個重要的方面就是,程式設計師需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷髮展,程式設計師也要尋找貿易的機會,要參加研討會,在週刊上發表文章和接受職業教育,這些使程式設計師在自己的領域中分級或者不斷並排前進。

必備技能

​ 熟練開發工具

做為一名程式設計師至少熟練掌握兩到三種開發工具的使用,這是程式設計師的立身之本,其中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%的工作時間寫用於技術文件。沒有文件的程式設計師勢必會被淘汰。

規範化的程式碼編寫習慣

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

測試習慣

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

學習和總結的能力

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

擁有強烈的好奇心

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