複製鏈接
請複製以下鏈接發送給好友

程序員

(從事計算機程序設計、開發、測試、維護的基層工作人員)

鎖定
程序員(英文Programmer)是從事程序開發、程序維護的基層工作人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚。隨着互聯網的不斷普及,網絡上把男程序員稱作“程序猿”。或將男女程序員統稱為“工程師(攻城獅)”。
中文名
程序員
外文名
Programmer
拼    音
chéng xù yuán
職    責
程序的設計開發測試維護
分    類
設計人員、編碼人員

程序員崗位職責

1、對項目經理負責,負責軟件項目的詳細設計、編碼和內部測試的組織實施,對小型軟件項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客户進行溝通,保持良好的客户關係
4、熟悉並熟練掌握交付軟件部開發的軟件項目的相關軟件技術。
5、負責向項目經理及時反饋軟件開發中的情況,並根據實際情況提出改進建議。
6、參與軟件開發和維護過程中重大技術問題的解決,參與軟件首次安裝調試、數據割接、用户培訓和項目推廣
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。

程序員行業現狀

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操作系統,數據中RedHatFedora佔據絕對優勢——Linux使用者使用該版本佔總數的49.49%。Fedora是RedHat推出的重要的一款Linux版本,在每個fedora版本中都是集成最新的Linux軟件,特別是服務端軟件。
使用“RedHatFedora”關鍵詞在百度網頁中搜索得到7,090,000條結果,RedHatFedora在調查中佔據Linux版本的半壁江山符合整個Linux版本的分佈情況。
排在第二位的是Ubuntu,受支持數佔到總數的23.92%;第三位的是SuSE佔9.09%,接下來是Debian使用率為5.92%。在這裏面令人期待的中國本土Linux的讓人大失所望。使用率僅佔5.16%,幾乎只有RedHatFedora的十分之一。
三、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之後又一個後起之秀。
如今JbossSeam在2009年之後就退出了歷史舞台,JSF在國內使用者也寥寥無幾了,而大紅大紫的SSH框架也被Spring+SpringMVC+Mybaties主流所代替了。

程序員職業要求

一般的程序員都有在專業領域的學習,還有很小一部分程序員是自學的,儘管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。儘管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要儘量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷髮展,程序員也要尋找貿易的機會,要參加研討會,在週刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。

程序員必備技能

做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中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分開
大型軟件系統的開發中,工程化的開發控制取代個人英雄主義,成為軟件系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟件工程思想有機結合,編程只是軟件生命週期中的其中一環,優秀的程序員應該掌握軟件開發各個階段的基本技能,如市場分析,可行性分析需求分析結構設計詳細設計軟件測試等。
需求理解能力
程序員要能正確理解任務單中描述的需求。在這裏要明確一點,程序員不僅僅要注意到軟件的功能需求,還應注意軟件的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有着兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能説明他或許是認真工作過,但是沒有用心工作。
模塊化思維能力
作為一個優秀的程序員,他的思想不能侷限在當前的工作任務裏面,要想想看自己寫的模塊是否可以脱離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重複利用,減少重複的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。

程序員職業困境

老虎、Bill、自己,中國程序員的困境也來自三個方面
困境之一:老虎的威脅。程序員要面對的餓老虎實在不少,比如説老闆,好像就是程序員的天敵,什麼“不懂技術卻指手畫腳”、什麼“得到與付出不相當”似乎是程序員最常見的牢騷,這個問題不可能得到真正的解決。
困境之二:Bill的競爭。一般説來中國的程序員大都是吃“青春飯”的,大部分程序員的黃金時代是20~35歲。到了35歲左右,一批又一批年輕程序員會給你帶來巨大的競爭壓力。首先由於軟件行業的飛速發展,很多自己以前學的東西逐漸升級換代,而許多程序員由於長期於工作,學習新知識的效率必然下降。其次自己幹了幾年,薪水要求自然就高了,而年輕程序員工資又低、幹活又快,當然會成為老闆的首選;第三,35歲基本都已經成家了,要支撐家庭的生活負擔,幾乎連從頭再來的勇氣都不會有了。中國的老話説“長江後浪推前浪,前浪死在沙灘上”,這個歷史的規律在軟件開發行業體現的尤其明顯和殘酷,很多程序員必然要面對的結果就是降薪乃至失業。
困境之三:自我的實力。都知道人最難戰勝的是自己,所以自我也就是程序員需要超越的最大障礙。大多程序員都把系統分析員和項目經理作為自己的職業目標,但這些目標的達成,需要個人素質、市場機遇等多個方面的條件,太多的程序員就是在高不成、低不就的狀態中蹉跎了歲月。對於系統分析員,特別需要以下幾方面的素質:客户需求分析能力、系統架構與設計能力、模塊分解設計能力、項目流程控制能力、項目風險評估能力等,而對於項目經理則更注重項目管理方面的能力如團隊組織能力、溝通協調能力、分析問題解決問題的能力以及良好的職業道德等,而這些素質和能力往往只能依靠程序員個人的學習和努力。看到越來越多的程序員開始學習項目管理的課程,真的有點為他們擔心,因為現在的項目管理培訓只能停留在理論和考證的程度,既沒有素質方面的訓練,又缺少實際軟件開發項目的案例,學習的結果遠遠不能達到預期的效果。

程序員薪資待遇

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

程序員日常工作

確認通過審查方案的目標,輸入數據分析師,監事,和客户的輸出要求的項目要求。
安排項目要求在編程序列分析要求;準備工作流程圖和使用計算機知識的能力,題材,編程語言邏輯圖
編碼工作流程信息轉換計算機語言的項目要求。
通過輸入編碼信息的計算機程序
確認程序操作進行測試,修改程序序列和/或代碼。
準備寫操作指令供用户參考。
保持歷史記錄,通過記錄方案的制定和修訂。
維護客户的信息和保護保密的業務。
技能/資格:一般的編程技巧,分析信息,解決問題,軟件算法設計,軟件性能優化,注重細節,軟件設計,軟件調試,軟件開發基礎,軟件文檔,軟件測試。程序員其實分為很多種,大家開發的語言可能不盡相同,但是都是有他們的共同點。