程式設計師

程式設計師

程式設計師(英文Programmer)是從事程式開發、維護的專業人員。一般將程式設計師分為程式設計人員和程式編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程式設計師、高級程式設計師、系統分析員,系統架構師,測試工程師五大類。程式設計師需要理解一個模組的需求,很多程式設計師寫程式往往只關注一個功能需求,他們把性能指標全部歸結到硬體,作業系統和開發環境上,而忽視了本身代碼的性能考慮,性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程式設計師需要評估該模組在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。

基本信息

崗位職責

日常工作日常工作

1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。

2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關係。

3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。

5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。

6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。

程式設計師程式設計師

7、負責相關技術文檔的擬訂。

8、負責對業務領域內的技術發展動態。

職業認證

考試介紹

軟考程式設計師考試屬於計算機軟體水平考試(簡稱軟考)中的一個初級計算機職稱考試。對於軟考程式設計師考試並無學歷及資歷條件限制,更無論年齡、專業與資歷。一年可報考軟考程式設計師考試兩次,但一次考試只能報考一種資格,因此報考了程式設計師考試則無法再報考軟考其他級別或科目的考試。同時軟考程式設計師考試採用筆試形式,考試實行全國統一大綱、統一試題、統一時間、統一標準、統一證書的考試方式。

通過國家統一組織的考試,資格考試分為:程式設計師級(原初級程式設計師)、軟體設計師(原高級程式設計師)以及更高水準的:信息系統項目管理師、系統分析師(原系統分析員)、系統架構設計師、網路規劃設計師、系統規劃與管理師。

考試目標

通過本考試的合格人員能根據軟體開發項目管理和軟體工程的要求,按照程式設計規格說明書編制並調試程式,寫出程式的相應文檔,產生符合標準規範的、實現設計要求的、能正確可靠運行的程式;具有助理工程師(或技術員)的實際工作能力和業務水平。

1、CVEQC認證持有者已經通過了中國職業教育資格認證指導中心組織的培訓和相應的考試,具有相應的專業技能和知識。

2、CVEQC證書可作為勞動者崗前培訓、在職培訓、提高培訓、繼續教育的培訓認證;也是勞動者“先培訓、後就業,先培訓、後上崗”的憑證。

3、CVEQC證書是中國職業教育資格認證指導中心頒發的專業技能證書。標有證書序列號、證書編號、培訓者及證書持有者身份證號碼,並蓋有全國職業教育管理委員會、中國職業教育資格認證指導中心的證書專用章。

4、 證書證明參加培訓及證書持有者具有系統地接受崗位技能培訓的經歷,證書在全國範圍內有效。

二、報考條件:凡遵守中華人民共和國憲法和各項法律,恪守職業道德,具有一定計算機技術套用能力的人員,均可根據本人情況報名參加相應專業類別、級別的考試。

考試要求

(1)掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的套用數學基礎知識;

(2)理解計算機的組成以及各主要部件的性能指標;

(3)掌握作業系統、程式設計語言的基礎知識;

(4)熟練掌握計算機常用辦公軟體的基本操作方法;

(5)熟練掌握基本數據結構和常用算法;

(6)熟練掌握C程式設計語言,以及C++、Java、Visual Basic中的一種程式設計語言;

(7)熟悉資料庫、網路和多媒體的基礎知識;

(8)掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;

(9)了解常用信息技術標準、安全性,以及有關法律、法規的基本知識;

(10)了解信息化、計算機套用的基礎知識;

(11)正確閱讀和理解計算機領域的簡單英文資料。

相關書籍

很多程式設計師回響,他們在推薦時也寫下自己的評語。 以前就有國區域網路友介紹這個程式設計師書單,不過都是推薦數 Top 9的書。

下面就按照各本書的推薦數排列。

1、《代碼大全》 史蒂夫·邁克康奈爾

2、《程式設計師修煉之道》

3、《電腦程式的構造和解釋》

4、《算法導論》

5、《重構:改善既有代碼的設計》

6、《設計模式》

7、《人月神話》

8、《電腦程式設計藝術》

9、《編譯原理》(龍書)

行業現狀

程式設計師程式設計師

由CSDN、《程式設計師》主辦的2007年開發者大調查2007年底已收到15000多份有效問卷,已經是中國調查樣本最多的開發者調查。在這次調查中,詳細的分析了樣本空間的分布狀況,發現在龐大數目的有效問卷的參與者中有70%也就是接近一萬一千名的參與調查者是IT的全職人員,14%的參與者是有過開發工作經驗的學生,從這樣的分布就可以看出來IT從業人員對專業知識的需求是巨大而迫切的,CSDN作為專業的軟體開發技術入口網站,已經是大家獲取這些技術知識的主要手段。

一、選擇資料庫技術和網際網路技術的人數總和占到了總人數的一半

2007年火熱的SOA和動態語言各占13%和12%。其實這幾大塊技術分布他們之間都是有一定的聯繫的,網際網路的發展近兩年呈爆炸式的增長態勢,中國的網民總數已經超過了1.4億這樣一個巨大的數字。

程式設計師程式設計師

企業中業務的複雜程度越來越高,商業競爭不斷增加企業的IT系統,使企業的商業數據呈幾何數量級不斷增長,在後台海量的數據中數據的管理由之前的單一型數據變成了多緯度的複雜數據,所以可以同時管理關係型資料庫和XML數據的混合型資料庫已經成為主流。

面對企業不斷增加新的IT信息系統,整合已經迫在眉睫,SOA成為必然的趨勢,企業對人才的需求從單一型技術人才、業務人才跳躍到了業務技術的複合型人才,這次的開發人員大調查令《程式設計師》雜誌的調查者看到了這些技術焦點背後千絲萬縷的關聯。

二、幾乎一半的.NET用戶不參與開源項目RedHat+Ubuntu占有率超過70%

程式設計師程式設計師

套用到.NET平台上的開源項目,“大量使用”的比例數僅為8.68%,尚不足一成;“少量套用”的開發者人數比例為42.78%。“基本不用”的比例高達48.54%,與前二者之和幾乎不相上下。

雖然開源的出現和發展,讓軟體沒有壟斷的未來日漸明朗;雖然開源運動經過多年的高速發展,現在已經聚集了相當的力量,開源的自由和給予理念逐漸深入到了企業的技術核心層面。但微軟以商業軟體為生,畢竟在微軟技術領域中,開源項目通常都被看作是二等公民。很多開源項目對.NET社區產生了巨大的推動作用,微軟公司很難提供任何實質性質的支持。

Linux版本

當前安裝有Linux作業系統,數據中RedHatFedora占據絕對優勢——Linux使用者使用該版本占總數的49.49%。Fedora是RedHat推出的重要的一款Linux版本,在每個fedora版本中都是集成最新的Linux軟體,特別是服務端軟體。

使用“Red Hat Fedora”關鍵字在百度網頁中搜尋得到7,090,000條結果,Red Hat Fedora在調查中占據Linux版本的半壁江山符合整個Linux版本的分布情況。

程式設計師程式設計師

排在第二位的是Ubuntu,受支持數占到總數的23.92%;第三位的是SuSE占9.09%,接下來是Debian,使用率為5.92%。在這裡面令人期待的中國本土Linux的讓人大失所望。使用率僅占5.16%,幾乎只有Red Hat Fedora的十分之一。

三、揭示八成技術人員資料庫選型標準SQL Server用戶接近50%

使用率占據榜首的資料庫產品是微軟的SQL Server,比例數達到了47.92%。與其餘所有的資料庫之和分庭抗衡,大有一覽眾山小之勢。

從調查得到的使用率來看,MySQL仍處於對MSSQL Server望塵莫及的階段。調查顯示,MySQL的使用數為1651,占總數的13.80%,不過排名第三。

使用率排在第二位的是Oracle,比例達到24.21%。在前有SQLServer,後有MySQL的情況下,Oracle仍能達到四分之一的占有率,發展勢頭不可謂不強勁。

雖然Orcale資料庫的價格比SQLServer資料庫要高,但Oracle採用開放的策略目標,可在所有主流平台上運行。而且有開發者認為Oracle的安全認證是獲得最高認證級別的ISO標準認證,因此安全性高於SQLServer。

排在第四位的是Access——5.59%;接著是DB2UDB,占總數的2.75%;至於FoxPro、Informix、PostgreSQL、Sybase得票數均僅在一百左右,還有待進一步的發展。

四、中國程式設計師最愛的智慧型手機平台Linux+Java超過Symbian

“開源Linux對於眾多開發者的吸引力是巨大的,但是,這僅僅是針對於技術開發人員來說的,而對於普通消費者就不是如此了。”在眾多開發者心中,主要是對Linux的青睞。從調查結果中也可以直接反應這樣的現象。有專家對此評論說:Linux+Java的模式,應該是套用最多的模式。

程式設計師程式設計師

針對此問題行業的專家有自己的觀點:“現在Wince和Symbian發展很快,並且隨著手機硬體方面性能的提高,很多政府部門和企業在採購時,很多會考慮Dopod這樣的手機,或者價格便Wince和Symbian都主要使用c++開發,正是嵌入式開發的潮流。”

不同人群對於收集智慧型作業系統的觀點是不同的,對於開發者角度,他們更加青睞於微軟和開源Linux的產品,而普通大眾他們比較喜歡Wince和Symbian。

五、七成程式設計師不願意選擇入口網站獲取開源信息,而更關注Source Forge等

30%的技術人員從入口網站獲取開源技術信息,剩下的70%的技術人員都是從專業的開源社區和開源廠商的技術網站上獲取信息,包括有Source Forge、Linux Today、OpenOffice和IBMdW等。

在這70%當中,比例占有絕對優勢的就是Source Forge了,這裡是開源軟體的開發者進行開發管理的集中式場所,也是全球最大開源軟體開發平台和倉庫。而LinuxToday裡面會有記錄很多很新的Linux業界大事,新聞以及出版信息。所以,對開源技術感興趣的程式設計師們,不必再為如何獲取開源信息而苦惱了,快加入到這70%的人群中來吧。

網際網路的發展已經成為大家獲取信息最主要的渠道之一,網民上網的習慣也從開始的上為數不多的幾個入口網站發生了變化,大而全的入口網站並不能滿足專業領域人員的信息需求,從2004年開始陸續出現了大量的各個領域垂直細分的內容網站,一方面有長尾理論的理論支持,另一方麵廠商也建立了相應產品的技術內容網站,希望能聚集一批專注於這個領域專業人士,做好他們的定向行銷。

做細分領域內容的網站對門戶已經造成了一定的威脅,這些網站的專業性高,用戶的粘性相對也比較高,如果細分領域的內容網站能將自己的服務有所提升,就如同Source Forge一樣,那么未來入口網站的路就變得更加崎嶇了。

六、Java開發框架:6%的JSF欲撼動21%的Struts

程式設計師程式設計師
JSF現在比較有優勢的是對Ajax的集成,這一點走在了其他框架的前面。未來兩年,JSF與Struts將展開JavaWeb框架的最終戰爭。 經過數年的“框架大戰”,Java界的各種框架找到了自己應有的位置。Spring+Hibernate+Struts已成為Java開發的主流體系。在這個體系中,Spring+Hibernate的地位應該說短期內是難以撼動了。除了新興的JbossSeam作為挑戰者之外,幾乎難有勁敵。

JavaB/S編程中歷來戰火最激烈的其實還在Web層,框架的數量最多,爭議最大。一切由Struts而起,而Struts最終也坐穩了第一個時代的王座。在技術層面,Struts1.x已經被無數人抱怨過、批評過,但終於還是穩坐王位,這充分說明了習慣的力量。“穩定壓倒一切”,這句話在IT技術領域仍舊適用。

詳細的分析了Java開發框架的使用狀況,發現主要使用的開發框架JSP占26%,Struts占21%,Hibernate占17%,SpringMVC占11%,EJB占7%,JSF占6%,SpringWebFlow和POJO各占4%,其它占4%。就這一調查數據,不難看出,Spring+Hibernate+Struts的優勢地位還是相當的明顯。

Struts和Hibernate幾乎已經成了JavaEE套用的常規配置,21%的開發者用到Struts,用到Hibernate的開發者也有17%;在一個成熟的技術平台上,各個項目的技術方案會在很大程度上趨同——因為所有未知領域都已經被探明,各種問題都有對應的最佳實踐,架構師們可以參考的成功案例越來越多。就拿JavaEE來說,架構師們需要考慮的問題比之三年前已經簡單多了,這就是成熟的價值。

程式設計師程式設計師
有專家評論:“其實IT套用技術,什麼新鮮玩意並不難學,難的是標準化和規範化。每個程式設計師都有自己的思路和習慣,寫出來的代碼自然是五花八門。Java何以成為編程界的占重要地位,很重要的一點在於Java的規範化。這種規範化很高的語言適用於多人合作的大型項目,便於溝通和理解,也就便於集成和維護。 Java世界為什麼會框架橫飛,說到底還是規範化的需要。純JSP和Struts寫Web誰快,擺明了是JSP。那為什麼用Struts?原因在於100個人寫出來的JSP,有100種寫法;而100個人寫出來的Struts,基本相似。Struts之成功,正緣於其在JavaWeb層的規範化方面所做出的貢獻。

然而長江後浪推前浪,Struts1.x的技術缺陷畢竟是隱患。Sun力推JSF,打算一雪Web層框架缺失之恥。未來兩年,JSF與Struts將展開JavaWeb框架的最終戰爭。

JSP經過幾年風雨洗禮依然把持頭把交椅,看來所有的框架表示層都離不開JSP而存在,而作為JSP的手足兄弟JSF也是僅次Spring之後又一個後起之秀。

七、C++開發環境格局難打破75%的開發人員首選VS系列

程式設計師程式設計師

1998年Borland公司推出的C++Builder這一當年全新的32位Windows開發工具,繼承了Delphi使用簡便、功能強大、效率高的特點,並且結合了C++語言幾乎所有優點。所以開始C++Builder迅速風靡。 它的主要競爭對象——Microsoft開發的VisualC++也是不甘示弱,迅速出擊,突出了Visual可視化強的特點,加上Platform、SDK部分以及Microsoft產品與Windows的天然默契,逐漸成為了技術人員的首選。隨著VisualC++版本的不段升級,以及功能、風格等諸多原因,BCB漸現頹勢,許多Builder使用者也開始轉而使用Visual了。

在2007年CSDN、《程式設計師》主辦的開發者大調查中,詳細的分析了C++方面大家主要使用什麼IDE的狀況,在目前已收到的15000多份有效問卷中,發現主要使用VS系列的占了75%,BorlandC++Builder/CBuilderX只占6%,EclipseCDT占6%,DevC++占2%,其他IDE占3%,不使用IDE占8%。對於.NET開發,VisualC++2005有了一套新的語法;新的最佳化技術,可使程式的速度最高提高30%;同時新的編譯模式,可保證在Microsoft.NETFramework之上生成完全遵從CLI(CommonLanguageInfrastructure)的可驗證代碼;新的interop模式,可提供本地與託管代碼的無縫融合。

程式設計師程式設計師

相對於前兩個版本,新編譯器還包括了一個增強版本的緩衝區安全檢查選項,

而且對C++程式普遍使用的庫,也有新的注重安全的版本。VisualC++2005對基於IntelItanium和AMD64的64位平台,提供了對OpenMP標準的支持,並且修正了一些混合DLL載入的問題,對DoubleP/Invoke的性能問題,提供了自動運行時消除。 相比之下,C++Builder2007英文版2008年6月初上市。從CodeGear大中華區技術總監李維的部落格,看到CodeGear對C++Builder2007的期待。雖然說對同一件事情,每個人都有自己的視角,已有五年C++方面學習和開發經驗的賴勇浩說道:“BCB正江河日下,2007版本的推出也無法力挽狂瀾。雖然現在C++Builder已經歸於CodeGear,但人們還是習慣性地與Borland聯繫上。

現在的Microsoft及VC勢頭強勁,產品也具有很高的質量性,CodeGear在C++和.Net領域至少三五年內會繼續望其項背。所以推出CB2007,更多的是基於版本延續。”

高級程式設計師作為計算機技術與軟體專業技術資格(水平)考試中的一科,是國家人事部和信息產業部對中國計算機與軟體專業技術人員進行的職業資格和專業技術資格認定。

九、中國程式設計師健康兩成感覺很虛弱亞健康接近七成

程式設計師程式設計師
“幹得比驢累,吃得比豬差,起得比雞早,睡得比狗晚,看上去比誰都好,五年後比誰都老。很多程式設計師都曾這樣感慨和抱怨過自己的生活狀態。”亞健康狀態是人體處於健康和疾病之間的過渡階段,在身體上、心理上沒有疾病,但主觀上卻有許多不適的症狀表現和心理體驗。

位於調查結果第二位的是“很虛弱”——149,比例為19.81%。很虛弱的健康指數低於亞健康,已接近生病和透支狀態,他們的健康已經被亮出了黃牌。

每個人的理解不一樣,但是“糟透了”這樣的詞如果用來形容程式設計師健康的話,相信大多數人都絕對認同“你已經病了”這樣的理解。令人不敢相信的是,竟然有8.24%的程式設計師用這個詞來形容自己的健康狀態!

調查結果中“非常健康”的票數低得可憐——40,即使算上“沒感覺”,二者之和也不過9.04%,幾乎跟“糟透了”持平。如果將“非常健康”和“沒感覺”一起算為健康的話,處於亞健康狀態的程式設計師是健康狀態的7倍,自認為“很虛弱”的程式設計師數目是處於健康狀態的2.2倍!

十、.NET全面進入2.0時代,AJAX風頭正勁“在Java領域,JDK5.0是當之無愧的主流平台,但JDK1.4仍保有一半以上的占有量。總的來說,Java族群顯然不像.NET族群那樣追新。從另一個方面看,這也說明Java平台的成熟,和.NET平台的迅速發展。”

程式設計師程式設計師

根據2007年的調查數據分析,在.NET領域,.NETFramework2.0的採用量已全面超越.NETFramework1.1,成為.NET平台的首選框架。2006年調查結果,1.1和2.0的採用量基本持平,而2007年2.0的採用量則高達1.1的三倍之多。.NETFramework1.1已是明日黃花,微軟的更新、換代策略可以說是成功的。

B/S已經成為中國軟體業普遍接受的軟體結構。在表現層,AJAX技術採用量較去年有較大提升,有將近一半的Web套用採用了AJAX技術,仍採用純HTML+少量腳本的Web套用中,也有四分之三打算轉向採用AJAX技術。反觀微軟和Adobe力推的新一代RIA平台,則回響者尚少。分別只有1/20和1/10的人願意選用SilverLight和Flash/Flex作為Web表現層技術。

職業要求

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

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

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

必備技能

熟練開發工具

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

要有很強的自學技能

作為一個程式設計師,自學能力是必不可少的,開發工具更新得很快,我們必須去掌握了解,以至於我們的語言之類的,也是在不斷的更新,作為一個程式設計師, 若是沒有自學能力,那你最多立場幾年,就會被淘汰。

熟知資料庫

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

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

需求理解能力

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

模組化思維能力

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

素質要求

團隊精神和協作能力

把它作為基本素質,並不是不重要,恰恰相反,這是程式設計師應該具備的最基本的,也是最重要的安身立命之本。任何個人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇蹟,那些遍布全球的為linux寫核心的高手們,沒有協作精神是不可想像的。一旦進入系統的研發團隊,進入商業化和產品化的開發任務,缺乏這種素質的人是不合格的。

文檔習慣

說高水平程式設計師從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中非常重要的環節,作為代碼程式設計師,30%的工作時間寫技術文檔是很正常的,而作為高級程式設計師和系統分析員,這個比例還要高很多。缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模組的復用時就都會遇到極大的麻煩。

規範化,標準化的代碼編寫習慣

代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函式間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。有些codingfans叫囂高水平程式設計師寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己?根不配自稱程式設計師。代碼具有良好的可讀性,是程式設計師基本的素質需求。沒有規範化和標準化的代碼習慣,研發之間的協作是絕對不可想的。

需求理解能力

程式設計師需要理解一個模組的需求,很多程式設計師寫程式往往只關注一個功能需求,他們把性能指標全部歸結到硬體,作業系統和開發環境上,而忽視了本身代碼的性能考慮,性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程式設計師需要評估該模組在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程式設計師至少需要2到3年的項目研發和跟蹤經驗才有可能有心得。

復用性,模組化思維能力

經常可以聽到一些程式設計師有這樣的抱怨,寫了幾年程式,變成了熟練工,每天都是重複寫一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重複性工作變成了熟練程式設計師的主要工作,而這些,其實是完全可以避免的。

復用性設計,模組化思維就是要程式設計師在完成任何一個功能模組或函式的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模組是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和套用環境下直接引用,這樣就能極大避免重複性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到這些問題,那么程式設計師就不會在重複性的工作中耽誤太多時間,就會有更多時間和精力投入到創新的代碼工作中去。

一些好的程式模組代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模組都能適合的很好,而現在很多軟體一升級或改進就動輒全部代碼重寫,大部分重複性工作無謂的浪費了時間和精力,這是我們應當刻意克服的弊病。

測試習慣

作為一些正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專職的測試工程師程式設計師就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程式設計師在每段代碼,每個子模組完成後進行認真的測試,就可以儘量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效率和可靠性就有了最大的保證。

測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程式是否能在正常調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務,實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定性測試,用戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模組受影響狀況的測試,頻發的異常請求阻塞資源時的模組穩定測試等等。

當然並不是程式設計師要對自己的每段代碼都需要進行這種完整測試,但是程式設計師必須清醒認識自己的代碼任務在整體項目中的地位和各種性能需求,有針對性的進行相關測試並儘早發現和解決問題,當然這需要上面提到的需求理解能力。

學習和總結的能力

程式設計師是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有領先性,程式設計師如果想安身立命,就必須不斷跟進新的技術,學習新的技能。善於學習,對於任何職業而言,都是前進所必需的動力,對於程式設計師,這種要求就更加高了。

但是學習也要找對目標,善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有目的的跟蹤該程式的套用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高,一個程式設計師才可能成長起來。

具備以上全部素質的人,應當說是夠格的程式設計師了,請注意以上的各種素質都不是由IQ決定的,也不是大學某些課本里可以學習到的,需要的僅僅是程式設計師對自己工作的認識,是一種意識上的問題。

職業困境

老虎、Bill、自己,中國程式設計師的困境也來自三個方面

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

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

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

薪資待遇

從經濟學的層面上來看,軟體人才也是勞動力商品中的一種,是由價值規律決定的,有需求才會有市場,才會有人願意為他們支付更高的工資。當前,包括中國在內,全球都在爭奪IT人才,當IT人才的社會總需求大於總供給時,不可避免就會出現人才升值的現象。

有關軟體業工資的討論還繼續在網上進行著,而這個話題引發了人們更深層次的思考:中國加入WTO了,中國企業與國外企業爭奪人才,除了拼工資還可以拼什麼?IT業的工資一直都在升,會不會有降的一天?頻繁地跳槽,使得IT公司被動地成了沒有商業機密的“透明公司”,是好還是不好?IT業過高的工資,使許多更適合從事其他行業的高中畢業生和大學畢業生盲目地選擇了這個“未來很有前途”的專業,是不是一種社會資源的浪費?

程式設計師日常工作

確認通過審查方案的目標,輸入數據,分析師,監事,和客戶的輸出要求的項目要求。

安排項目要求在編程式列分析要求;準備工作流程圖和使用計算機知識的能力,題材,程式語言和邏輯圖。

編碼工作流程的信息轉換成計算機語言的項目要求。

通過輸入編碼信息的電腦程式。

確認程式操作進行測試,修改程式序列和/或代碼。

準備寫操作指令供用戶參考。

保持歷史記錄,通過記錄方案的制定和修訂。

維護客戶的信心和保護保密的業務。

技能/資格:一般的編程技巧,分析信息,解決問題,軟體算法設計,軟體性能最佳化,注重細節,軟體設計,軟體調試,軟體開發基礎,軟體文檔,軟體測試。程式設計師其實分為很多種,大家開發的語言可能不盡相同,但是都是有他們的共同點。

其他術語

中國社會科學院文獻信息中心主辦的雜誌

基本信息

程式設計師程式設計師
雜誌名 《Programmer》 主編 中國社會科學院
中文名 《程式設計師》 出版 《程式設計師》雜誌社
國際刊號 ISDN 1672-3252 國內刊號 CN11-5038/G2
郵發代號 2-665 零售價(RMB) 15.00元
零售價(新台幣) 390元 零售價(HK) $35.00(港澳)
零售價(US) $9.00(海外) 總編 黃長著

欄目

高端視點

IT名人堂

產品酷覽

CTO視點

坊間人語

架構實踐

每日關注

熱點報導

選題策劃

往期雜誌

雲計算

卷首語

移動專區

相關詞條

相關搜尋

熱門詞條

聯絡我們