第一篇:程序員必備的素質(zhì)
程序員必備的素質(zhì)
作為一個(gè)真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應(yīng)該具有的素質(zhì)。
1:團(tuán)隊(duì)精神和協(xié)作能力
把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強(qiáng)大的團(tuán)隊(duì)來創(chuàng)造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協(xié)作精神是不可想象的。一旦進(jìn)入系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開發(fā)任務(wù),缺乏這種素質(zhì)的人是不合格的。
2:文檔習(xí)慣
說高水平程序員從來不寫文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫習(xí)慣
代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。有些codingfans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己?根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。沒有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,研發(fā)之間的協(xié)作是絕對(duì)不可想的。
4:需求理解能力
程序員需要理解一個(gè)模塊的需求,很多程序員寫程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。
5:復(fù)用性,模塊化思維能力
經(jīng)??梢月牭揭恍┏绦騿T有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復(fù)寫一些沒有任何新意的代碼,這其實(shí)是中國軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過程中都考慮到這些問題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。
一些好的程序模塊代碼,即便是70年代寫成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在很多軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫,大部分重復(fù)性工作無謂的浪費(fèi)了時(shí)間和精力,這是我們應(yīng)當(dāng)刻意克服的弊病。
6:測(cè)試習(xí)慣
作為一些正規(guī)化的開發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè);軟件研發(fā)作為一項(xiàng)工程而言,一個(gè)很重要的特點(diǎn)就是問題發(fā)現(xiàn)的越早,解決的代價(jià)就越低,程序員在每段代碼,每個(gè)子模塊完成后進(jìn)行認(rèn)真的測(cè)試,就可以盡量將一些潛在的問題最早的發(fā)現(xiàn)和解決,這樣對(duì)整體系統(tǒng)建設(shè)的效率和可靠性就有了最大的保證。
測(cè)試工作實(shí)際上需要考慮兩方面,一方面是正常調(diào)用的測(cè)試,也就是看程序是否能在正常調(diào)用下完成基本功能,這是最基本的測(cè)試職責(zé),可惜在很多公司這成了唯一的測(cè)試任務(wù),實(shí)際上還差的遠(yuǎn)那;第二方面就是異常調(diào)用的測(cè)試,比如高壓力負(fù)荷下的穩(wěn)定性測(cè)試,用戶潛在的異常輸入情況下的測(cè)試,整體系統(tǒng)局部故障情況下該模塊受影響狀況的測(cè)試,頻發(fā)的異常請(qǐng)求阻塞資源時(shí)的模塊穩(wěn)定測(cè)試等等。
當(dāng)然并不是程序員要對(duì)自己的每段代碼都需要進(jìn)行這種完整測(cè)試,但是程序員必須清醒認(rèn)識(shí)自己的代碼任務(wù)在整體項(xiàng)目中的地位和各種性能需求,有針對(duì)性的進(jìn)行相關(guān)測(cè)試并盡早發(fā)現(xiàn)和解決問題,當(dāng)然這需要上面提到的需求理解能力。
7:學(xué)習(xí)和總結(jié)的能力
程序員是人才很容易被淘汰,很容易落伍的職業(yè),因?yàn)橐环N技術(shù)可能僅僅在三兩年內(nèi)具有領(lǐng)先性,程序員如果想安身立命,就必須不斷跟進(jìn)新的技術(shù),學(xué)習(xí)新的技能。善于學(xué)習(xí),對(duì)于任何職業(yè)而言,都是前進(jìn)所必需的動(dòng)力,對(duì)于程序員,這種要求就更加高了。
但是學(xué)習(xí)也要找對(duì)目標(biāo),善于總結(jié),也是學(xué)習(xí)能力的一種體現(xiàn),每次完成一個(gè)研發(fā)任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況和用戶反饋,隨時(shí)總結(jié),找到自己的不足,這樣逐步提高,一個(gè)程序員才可能成長起來。
具備以上全部素質(zhì)的人,應(yīng)當(dāng)說是夠格的程序員了,請(qǐng)注意以上的各種素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問題。
一個(gè)中心:
一切以健康為中心。
兩個(gè)基本點(diǎn):
遇事瀟灑一點(diǎn),看世糊涂一點(diǎn)。
三個(gè)忘記:
忘記年齡,忘記過去,忘記恩怨。
四個(gè)擁有:
無論你有多弱或多強(qiáng),一定要擁有真正愛你的人,擁有知心朋友,擁有向上的事業(yè),擁有溫暖的住所。
五個(gè)要:
要唱,要跳,要俏,要笑,要苗條。
六個(gè)不能:
不能餓了才吃,不能渴了才喝,不能困了才睡,不能累了才歇,不能病了才檢查,不能老了再后悔!
第二篇:學(xué)php需要哪些基礎(chǔ)?程序員需要哪些素質(zhì)呢?
004km.cn
學(xué)php需要哪些基礎(chǔ)?程序員需要哪些素質(zhì)呢?
中國每年有大量的計(jì)算機(jī)類畢業(yè)生進(jìn)入企業(yè),企業(yè)會(huì)把那些程序員列入優(yōu)秀人才加以重視呢?斬獲高薪的程序員需要哪些素質(zhì)呢?
團(tuán)隊(duì)精神和協(xié)作能力
團(tuán)隊(duì)精神是程序員應(yīng)該具備的基本素質(zhì),任何個(gè)人的力量都是有限的。即便如Linus這樣的天才,也需要通過組成強(qiáng)大的團(tuán)隊(duì)來創(chuàng)造奇跡。那些遍布全球的為Linux寫核心的高手們,沒有協(xié)作精神是不可想象的。獨(dú)行俠可以作一些賺錢的小軟件發(fā)點(diǎn)小財(cái),但是一旦進(jìn)入一些大系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開發(fā)任務(wù),缺乏團(tuán)隊(duì)精神的人就完全不合格了。
文檔習(xí)慣
說高水平程序員從來不寫文檔的肯定是乳臭未干的毛孩子,條理清晰的文檔是正規(guī)研發(fā)流程中 非常重要的環(huán)節(jié)。作為代碼程序員,3成的工作時(shí)間寫技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇 到極大的麻煩。
四川地處中國大西南,肥沃的土地,豐富的自然資源,悠久的歷史和絢爛多彩的少數(shù)民族文化,構(gòu)成了多樣性的自然和文化旅游資源。每到中考季,很多初中生總是為自己的未來前途擔(dān)心,尤其是一些學(xué)習(xí)成績不好的初中生,他們不知道中考沒考上怎么辦。同時(shí)許多家長也擔(dān)心,自己的孩子年齡還小,進(jìn)入社會(huì)顯然不合適。這個(gè)時(shí)候職業(yè)培訓(xùn)學(xué)校更加適合,放眼眾多學(xué)院,四川國信安職業(yè)培訓(xùn)學(xué)校無疑是非常合適的。
尋尋覓覓,走馬觀花,你在it培訓(xùn)這條路上看了多久?走了多遠(yuǎn)?你是否還在為它而困擾?你是否發(fā)現(xiàn)找到一個(gè)心儀的實(shí)在太麻煩!其實(shí)選擇也可以很簡單!讓小編帶你走進(jìn)it培訓(xùn),來了解些實(shí)用干貨。接下來就讓小編帶你來看看it培訓(xùn)相關(guān)的情況吧~請(qǐng)看下文~
004km.cn
學(xué)php需要哪些基礎(chǔ)?這是很多人在學(xué)習(xí)php之前想到的一點(diǎn),因?yàn)榇蠹叶加X得這門課程很陌生,也擔(dān)心自己會(huì)學(xué)習(xí)的非常吃力。但同時(shí),php領(lǐng)域的高工資又誘惑著大家,即使是小白都想快速成為高手。
學(xué)php需要哪些基礎(chǔ)?從培訓(xùn)機(jī)構(gòu)的角度來講,大家不需要有任何基礎(chǔ),因?yàn)椴还苣闶切袠I(yè)精英還是初始學(xué)習(xí)者,學(xué)校都會(huì)給大家提供適合自己的課程,有的以基礎(chǔ)班為準(zhǔn),有的以提升班為準(zhǔn),課程方向不同,學(xué)習(xí)的深度就有所差別。知道了培訓(xùn)機(jī)構(gòu)的課程設(shè)置之后,我們就應(yīng)該充分考慮一下自己的現(xiàn)狀了。建議小白人員從最基礎(chǔ)的理論部分開始學(xué)習(xí),先不要忙著去實(shí)踐,先掌握知識(shí)的來龍去脈,等到有了自己的思考和理解之后再去進(jìn)修即可。國信安教育基地給出了循序漸進(jìn)的學(xué)習(xí)方法,只為給大家提供優(yōu)良的學(xué)習(xí)思路,從而讓每個(gè)人成為行業(yè)精英。
學(xué)php需要哪些基礎(chǔ)?因此大家根本不用擔(dān)心基礎(chǔ)問題,國信安教育基地會(huì)給出適合你的學(xué)習(xí)方案和計(jì)劃,大家只需要按部就班的跟著老師的思路執(zhí)行即可。不管你是不是行業(yè)小白,相信在國信安這種培訓(xùn)機(jī)構(gòu)的帶領(lǐng)下,我們會(huì)快速認(rèn)識(shí)到php相關(guān)的概念和知識(shí),從而讓你成為唾手可得的人才,進(jìn)而在求職市場(chǎng)中獲得更多公司的青睞。至于學(xué)習(xí)時(shí)間,需要根據(jù)大家的時(shí)間安排進(jìn)行設(shè)定,如果每天學(xué)習(xí)幾個(gè)小時(shí),不出幾個(gè)月,你就成為php領(lǐng)域的專家了。
國信安IT培訓(xùn)基地指定的官方IT人才培訓(xùn)機(jī)構(gòu)。專注java培訓(xùn)、php培訓(xùn)、UI設(shè)計(jì)培訓(xùn)、IOS培訓(xùn)、安卓培訓(xùn)、嵌入式培訓(xùn)、.NET培訓(xùn)、web前端培訓(xùn)等培訓(xùn)課程。你們準(zhǔn)備好怎么學(xué)習(xí)IT技術(shù)了嗎?來參加國信安IT培訓(xùn)課程,你的選擇不會(huì)有錯(cuò)!
第三篇:PHP程序員等級(jí)素質(zhì)模型
PHP程序員等級(jí)素質(zhì)模型
初級(jí)PHP程序員(T1)
素質(zhì)模型:能夠完成基本的LNMP系統(tǒng)安裝,簡單配置維護(hù);能夠做基本的簡單系統(tǒng)的PHP開發(fā);能夠在PHP中型系統(tǒng)中支持某個(gè)PHP功能模塊的開發(fā)。
1.Linux:
基本命令、操作、啟動(dòng)、基本服務(wù)配置(包括rpm包、源碼包安裝文件,各種服務(wù)配置等)。
2.Nginx:
能夠安裝配置nginx+php,知道基本的nginx核心配置選項(xiàng),知道 server/fastcgi_pass/access_log 等基礎(chǔ)配置信息,能夠讓nginx+php_fpm順利工作。
3.MySQL:
會(huì)自己搭建mysql,知道基本的mysql配置選項(xiàng);知道InnoDB和MyISAM的區(qū)別,知道針對(duì)InnoDB和MyISAM兩個(gè)引擎的不同配置選項(xiàng);知道基本的兩個(gè)引擎的差異和選擇上面的區(qū)別;知道MySQL字段類型,知道如何選擇MySQL的字段類型;能夠純手工編譯搭建一個(gè)MySQL數(shù)據(jù)庫且配置好編碼等正常穩(wěn)定運(yùn)行。
4.PHP:
基本語法數(shù)組、字符串、數(shù)據(jù)庫、XML、Socket、GD/ImageMgk圖片處理等等;熟悉各種跟MySQL操作鏈接的api(mysql/mysqli/PDO),知道各種編碼問題的解決;知道常規(guī)熟練使用的PHP框架(ThinkPHP、Yii、Yaf等);了解基本MVC的運(yùn)行機(jī)制和為什么這么做,了解不同的PHP框架之間的區(qū)別;能夠快速學(xué)習(xí)一個(gè)MVC框架。能夠知道開發(fā)工程中的文件目錄架構(gòu),有基本的良好的代碼結(jié)構(gòu)和風(fēng)格,能夠完成小系統(tǒng)的開發(fā)和中型系統(tǒng)中某個(gè)模塊的開發(fā)工作。
5.前端:
了解 HTML/CSS/JS 等相關(guān)基礎(chǔ)知識(shí),知道什么web標(biāo)準(zhǔn),div+css的web/wap頁面模式,知道HTML5和HTML4的區(qū)別;了解一些基本的前端知識(shí)和JS框架(jQuery之類的);了解一些基本的JavaScript編程知識(shí)。
6.系統(tǒng)設(shè)計(jì):
能夠完成小型系統(tǒng)的基本設(shè)計(jì),包括簡單的數(shù)據(jù)庫設(shè)計(jì),能夠完成基本的:瀏覽器-> Nginx+PHP-> 數(shù)據(jù)庫 架構(gòu)的設(shè)計(jì)開發(fā)工作。中級(jí)PHP程序員(T2)
素質(zhì)模型:能夠隨時(shí)隨地搭建好LNMP環(huán)境,快速完成常規(guī)配置;能夠追查解決大部分遇到的開發(fā)和線上環(huán)境的問題;能夠獨(dú)立承擔(dān)中型系統(tǒng)的構(gòu)架和開發(fā)工作;能夠在大型系統(tǒng)中承擔(dān)某個(gè)中型模塊的開發(fā)工作。
1.Linux: 在第一階段的基礎(chǔ)上面,能夠流暢的使用Shell腳本來完成很多自動(dòng)化的工作(數(shù)據(jù)庫備份等);會(huì)簡單的awk/sed/perl 操作,能夠完成部分文本處理和數(shù)據(jù)統(tǒng)計(jì)等工作;能夠安裝大部分非特殊的Linux程序(包括各種庫、包、第三方依賴等等,比如Memcached/MongoDB/Redis/Sphinx之類的);了解基本的Linux服務(wù),知道如何查看Linux的性能指標(biāo)數(shù)據(jù),知道基本的Linux環(huán)境下的問題跟蹤等。
2.Nginx: 在第一階段的基礎(chǔ)上面,了解復(fù)雜一些的Nginx配置;包括多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超時(shí)等相關(guān)配置和性能影響;知道nginx除了web server,還能夠承擔(dān)代理服務(wù)器、反向靜態(tài)服務(wù)器等配置;知道基本的nginx配置調(diào)優(yōu);知道如何配置權(quán)限、編譯一個(gè)nginx擴(kuò)展到nginx;知道基本的nginx運(yùn)行原理(master/worker機(jī)制,epoll),知道為什么nginx性能比apache性能好等知識(shí)。
3.MySQL/MongoDB:
在第一階段的基礎(chǔ)上面,在MySQL開發(fā)方面,掌握很多小技巧,包括常規(guī)SQL分析、性能優(yōu)化(group by/order by/rand優(yōu)化等)、索引優(yōu)化;除了能夠搭建MySQL,還能夠冷熱備份MySQL數(shù)據(jù),還知道影響InnoDB/MyISAM性能的配置選項(xiàng)(比如key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit等),也知道這些選項(xiàng)配置成為多少值合適;另外也了解一些特殊的配置選項(xiàng),比如 知道如何搭建mysql主從同步的環(huán)境,知道各個(gè)binlog_format的區(qū)別;知道MySQL的性能追查,包括slow_log/explain等,還能夠知道基本的索引建立處理等知識(shí);原理方面了解基本的MySQL的架構(gòu)(Server+存儲(chǔ)引擎),知道基本的InnoDB/MyISAM索引存儲(chǔ)結(jié)構(gòu)和不同(聚簇索引,BTree,B+Tree);知道基本的InnoDB事務(wù)處理機(jī)制;了解大部分MySQL異常情況的處理方案(或者知道哪兒找到處理方案)。
4.Redis/Memcached:
在大部分中型系統(tǒng)里面一定會(huì)涉及到緩存處理,所以一定要了解基本的緩存;知道Memcached和Redis的異同和應(yīng)用場(chǎng)景,能夠獨(dú)立安裝 Redis/Memcached,了解Memcahed的一些基本特性和限制,知道PHP跟他們的使用結(jié)合;Redis了解基本工作原理和使用,了解常規(guī)的數(shù)據(jù)類型,知道什么場(chǎng)景應(yīng)用什么類型,了解Redis的事務(wù)等等。原理部分,能夠大概了解Memcached的內(nèi)存結(jié)構(gòu)(slab機(jī)制),redis了解常用數(shù)據(jù)類型底層實(shí)現(xiàn)存儲(chǔ)結(jié)構(gòu)(SDS/鏈表/SkipList/HashTable)等等,順便了解一下Redis的事務(wù)、RDB、AOF等機(jī)制更好。
5.PHP:
除了第一階段的能力,安裝配置方面能夠隨意安裝PHP和各種第三方擴(kuò)展的編譯安裝配置;了解php-fpm的大部分配置選項(xiàng)和含義(如max_requests/max_children/request_terminate_timeout之類的影響性能的配置),知道m(xù)od_php/fastcgi的區(qū)別;在PHP方面已經(jīng)能夠熟練各種基礎(chǔ)技術(shù),還包括各種深入些的PHP,包括對(duì)PHP面向?qū)ο蟮纳钊肜斫?SPL/語法層面的特殊特性;在框架方面已經(jīng)閱讀過最少一個(gè)以上常規(guī)PHP MVC框架的代碼了,知道基本PHP框架內(nèi)部實(shí)現(xiàn)機(jī)制和設(shè)計(jì)思想;在PHP開發(fā)中已經(jīng)能夠熟練使用常規(guī)的設(shè)計(jì)模式來應(yīng)用開發(fā)(抽象工廠/單例/觀察者/命令鏈/策略/適配器 等模式);建議開發(fā)自己的PHP MVC框架來充分讓開發(fā)自由化,讓自己深入理解MVC模式,也讓自己能夠在業(yè)務(wù)項(xiàng)目開發(fā)里快速升級(jí);熟悉PHP的各種代碼優(yōu)化方法,熟悉大部分PHP安全方面問題的解決處理;熟悉基本的PHP執(zhí)行的機(jī)制原理(Zend引擎/擴(kuò)展基本工作機(jī)制)。
6.C/C++:
開始涉獵一定的C/C++語言,能夠?qū)懟镜腃/C++代碼,對(duì)基本的C/C++語法熟悉(指針、數(shù)組操作、字符串、常規(guī)標(biāo)準(zhǔn)API)和數(shù)據(jù)結(jié)構(gòu)(鏈表、樹、哈希、隊(duì)列)有一定的熟悉下;對(duì)Linux下面的C語言開發(fā)有基本的了解概念,會(huì)簡單的makefile文件編寫,能夠使用簡單的GCC/GDB的程序編譯簡單調(diào)試工作;對(duì)基本的網(wǎng)絡(luò)編程有大概了解。
7.前端:
在第一階段的基礎(chǔ)上面,熟悉基本的HTTP協(xié)議(協(xié)議代碼200/300/400/500,基本的HTTP交互頭);條件允許,可以在深入寫出稍微優(yōu)雅的HTML+CSS+JavaScript,或者能夠大致簡單使用某些前端框架(jQuery/Angular/React/RequireJS/BootStrap之類);如果條件允許,可以深入學(xué)習(xí)JavaScript編程,比如閉包機(jī)制、DOM處理;再深入些可以讀讀jQuery源碼做深入學(xué)習(xí)。
8.系統(tǒng)設(shè)計(jì):
能夠設(shè)計(jì)大部分中型系統(tǒng)的網(wǎng)站架構(gòu)、數(shù)據(jù)庫、基本PHP框架選型;性能測(cè)試排查處理等;能夠完成類似:瀏覽器-> CDN(Squid)-> Nginx+PHP-> 緩存-> 數(shù)據(jù)庫 結(jié)構(gòu)網(wǎng)站的基本設(shè)計(jì)開發(fā)維護(hù);能夠支撐每天數(shù)百萬到千萬流量基本網(wǎng)站的開發(fā)維護(hù)工作。
高級(jí)PHP程序員(T3)
素質(zhì)模型:除了能夠完成基本的PHP業(yè)務(wù)開發(fā),還能夠解決大部分深入復(fù)雜的技術(shù)問題,并且可以獨(dú)立設(shè)計(jì)完成中大型的系統(tǒng)設(shè)計(jì)和開發(fā)工作;自己能夠獨(dú)立hold深入某個(gè)技術(shù)方向,在這塊比較專業(yè)。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)
1.Linux:
除了第二階段的能力,在Linux下面除了常規(guī)的操作和性能監(jiān)控跟蹤,還能夠使用很多高級(jí)復(fù)雜的命令完成工作(watch/tcpdump/starce/ldd/ar/gdb/sar/free等);在shell腳本方面,已經(jīng)能夠編寫比較復(fù)雜的shell腳本來協(xié)助完成很多包括備份、自動(dòng)化處理、監(jiān)控等工作的shell;對(duì)awk/sed/perl 等應(yīng)用很熟練,能夠隨意操作控制處理文本統(tǒng)計(jì)分析各種復(fù)雜格式的數(shù)據(jù);對(duì)Linux內(nèi)部機(jī)制有一些了解,對(duì)內(nèi)核模塊加載,啟動(dòng)錯(cuò)誤處理等等有個(gè)基本的處理;同時(shí)對(duì)一些其他相關(guān)的東西也了解,比如NFS、磁盤管理等等;了解Linux集群、負(fù)載均衡、容災(zāi)、數(shù)據(jù)同步等等。
2.Nginx: 在第二階段的基礎(chǔ)上面,已經(jīng)能夠把Nginx操作的很熟練,能夠?qū)ginx進(jìn)行更深入的運(yùn)維工作,比如監(jiān)控、性能優(yōu)化,復(fù)雜問題處理等等;深入學(xué)習(xí)過Nginx工作原理部分,主要表現(xiàn)在閱讀源碼開始,比如具體的master/worker工作機(jī)制,Nginx內(nèi)部的事件處理,內(nèi)存管理等等;可以進(jìn)行Nginx擴(kuò)展的開發(fā);同時(shí)對(duì)Nginx+Lua有一定程度的了解,使用Nginx+Lua開發(fā)過相關(guān)程序。
3.MySQL/MongoDB:
在第二階段的基礎(chǔ)上面,在MySQL應(yīng)用方面,除了之前的基本SQL優(yōu)化,還能夠在完成一些復(fù)雜操作,比如大批量數(shù)據(jù)的導(dǎo)入導(dǎo)出,線上大批量數(shù)據(jù)的更改表結(jié)構(gòu)或者增刪索引字段等等高危操作;除了安裝配置,已經(jīng)能夠處理更多復(fù)雜的MySQL的問題,比如各種問題的追查,主從同步延遲問題的解決、跨機(jī)房同步數(shù)據(jù)方案、MySQL高可用架構(gòu)等都有涉及了解;對(duì)MySQL應(yīng)用層面,對(duì)MySQL的核心關(guān)鍵技術(shù)比較熟悉,比如事務(wù)機(jī)制(隔離級(jí)別、鎖等)、對(duì)觸發(fā)器、分區(qū)等技術(shù)有一定了解和應(yīng)用;對(duì)MySQL性能方面,有包括磁盤優(yōu)化(SAS遷移到SSD)、服務(wù)器優(yōu)化(內(nèi)存、服務(wù)器本身配置)、除了二階段的其他核心性能優(yōu)化選項(xiàng)(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout等)、連接池軟件選擇應(yīng)用,對(duì)show *(show status/show profile)類的操作語句有深入了解,能夠完成大部分的性能問題追查;MySQL備份技術(shù)的深入熟悉,包括災(zāi)備還原、對(duì)Binlog的深入理解,冷熱備份,多IDC備份等;在MySQL原理方面,有更多了解,閱讀源碼了解MySQL的工作機(jī)制,比如主從同步(復(fù)制)技術(shù)的源碼學(xué)習(xí),或者某個(gè)存儲(chǔ)引擎(MyISAM/Innodb/Memery)的源碼學(xué)習(xí)理解。MongoDB層面,能夠做一些線上的數(shù)據(jù)分析處理的操作,核心是要更好的深入理解RMDBS和NoSQL的不同場(chǎng)景下面的應(yīng)用。
4.Redis/Memcached: 在第二階段的基礎(chǔ)上面,能夠?qū)edis/Memcached進(jìn)行更深入的應(yīng)用。因?yàn)镸emcached不是特別復(fù)雜,需對(duì)內(nèi)存管理部分,閱讀過源碼或熟練掌握其原理;Redis部分,做過一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的應(yīng)用(zset來做排行榜排序操作/事務(wù)處理用來保證原子性在秒殺類場(chǎng)景應(yīng)用之類的使用操作);熟悉aof等同步機(jī)制的原理,可設(shè)計(jì)一個(gè)高可用的Redis應(yīng)用架構(gòu)和集群。
5.PHP:
作為基礎(chǔ)核心技能,需要在第二階段的基礎(chǔ)上,有更深入的學(xué)習(xí)和應(yīng)用。從基本代碼應(yīng)用上面來說,能夠解決在PHP開發(fā)中遇到95%的問題,了解大部分PHP的技巧;對(duì)大部分的PHP框架能夠迅速在一周內(nèi)上手使用,并且了解各個(gè)主流PHP框架的優(yōu)缺點(diǎn),能夠迅速方便項(xiàng)目開發(fā)中做技術(shù)選型;在配置方面,除了常規(guī)第二階段會(huì)的知識(shí),會(huì)了解一些比較偏門的配置選項(xiàng)(php auto_prepend_file/auto_append_file),包括擴(kuò)展中的一些復(fù)雜高級(jí)配置和原理(比如memcached擴(kuò)展配置中的memcache.hash_strategy、apc擴(kuò)展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之類的);對(duì)php的工作機(jī)制比較了解,包括php-fpm工作機(jī)制(比如php-fpm在不同配置機(jī)器下面開啟進(jìn)程數(shù)量計(jì)算以及原理),對(duì)zend引擎有基本熟悉(vm/gc/stream處理),閱讀過基本的PHP內(nèi)核源碼(或者閱讀過相關(guān)文章),對(duì)PHP內(nèi)部機(jī)制的大部分核心數(shù)據(jù)結(jié)構(gòu)(基礎(chǔ)類型/Array/Object)實(shí)現(xiàn)有了解,對(duì)于核心基礎(chǔ)結(jié)構(gòu)(zval/hashtable/gc)有深入學(xué)習(xí)了解;能夠進(jìn)行基本的PHP擴(kuò)展開發(fā),了解一些擴(kuò)展開發(fā)的中高級(jí)知識(shí)(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式細(xì)節(jié)(mod_php/fastcgi)。
6.C/C++:
在第二階段基礎(chǔ)上面,在C/C++語言方面有更深入的了解,能夠完成中小型C/C++系統(tǒng)的開發(fā)工作;除了基本第二階段的基礎(chǔ)C/C++語法和數(shù)據(jù)結(jié)構(gòu),能夠掌握一些特殊數(shù)據(jù)結(jié)構(gòu)(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工作中需求;在系統(tǒng)編程方面,熟悉多進(jìn)程、多線程編程;多進(jìn)程情況下面了解大部分多進(jìn)程之間的通信方式,能夠靈活選擇通信方式(共享內(nèi)存/信號(hào)量/管道等);多線程編程能夠良好的解決鎖沖突問題,并且能夠進(jìn)行多線程程序的開發(fā)調(diào)試工作;同時(shí)對(duì)網(wǎng)絡(luò)編程比較熟悉,了解多進(jìn)程模型/多線程模型/異步網(wǎng)絡(luò)IO模型的差別和選型,熟悉不同異步網(wǎng)絡(luò)IO模型的原理和差異(select/poll/epoll/iocp等),并且熟悉常見的異步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和使用,了解大部分C/C++后端Server開發(fā)中的問題(內(nèi)存管理、日志打印、高并發(fā)、前后端通信協(xié)議、服務(wù)監(jiān)控),知道各個(gè)后端服務(wù)RPC通信問題(struct/http/thirft/protobuf等);能夠更熟絡(luò)的使用GCC和GDB來開發(fā)編譯調(diào)試程序,在線上程序core掉后能夠迅速追查跟蹤解決問題;通用模塊開發(fā)方面,開發(fā)過一些通用的工具或庫(比如異步網(wǎng)絡(luò)框架、日志庫、內(nèi)存池、線程池等)。
7.前端:
深入了解HTTP協(xié)議(包括各個(gè)細(xì)致協(xié)議特殊協(xié)議代碼和背后原因,比如302靜態(tài)文件緩存了,502是nginx后面php掛了之類的);除了之前的前端方面的各種框架應(yīng)用整合能力,前端方面的學(xué)習(xí)如果有興趣可以更深入,表現(xiàn)形式是,可以自己開發(fā)一些類似jQuery的前端框架,或者開發(fā)一個(gè)富文本編輯器之類的比較瑣碎考驗(yàn)JavaScript功力;
8.系統(tǒng)設(shè)計(jì):
系統(tǒng)設(shè)計(jì)在第二階段的基礎(chǔ)之上,能夠應(yīng)用掌握的經(jīng)驗(yàn)技能,設(shè)計(jì)出比較復(fù)雜的中大型系統(tǒng),能夠解決大部分線上的各種復(fù)雜系統(tǒng)的問題,完成類似 瀏覽器-> CDN-> 負(fù)載均衡->接入層-> Nginx+PHP-> 業(yè)務(wù)緩存-> 數(shù)據(jù)庫-> 各路復(fù)雜后端RPC交互(存儲(chǔ)后端、邏輯后端、反作弊后端、外部服務(wù))-> 更多后端的復(fù)雜業(yè)務(wù);能夠支撐每天數(shù)千萬到數(shù)億流量網(wǎng)站的正常開發(fā)維護(hù)工作。
第四篇:Java程序員應(yīng)具備的素質(zhì)
Java程序員應(yīng)具備的素質(zhì)
——?jiǎng)恿?jié)點(diǎn)Java
java程序員是一種技術(shù)工作,在IT的發(fā)展中有相當(dāng)重要的地位,從底層硬件通訊協(xié)議的建立,到數(shù)據(jù)傳輸層的處理,到操作系統(tǒng)的建設(shè),到數(shù)據(jù)庫平臺(tái)的建設(shè),一直到應(yīng)用層上各種數(shù)據(jù)營銷平臺(tái)的搭建,程序員在里面都扮演著舉足輕重的角色并為IT事業(yè)的發(fā)展做出了巨大的貢獻(xiàn)。
中國有很多精于編碼的人,但是中國軟件行業(yè),尤其是網(wǎng)絡(luò)應(yīng)用開發(fā)方面誤區(qū)很大,很難形成有規(guī)模的軟件開發(fā)力量和產(chǎn)品能力,不但比美國差距甚遠(yuǎn),和印度相比也是頗有不如。這些問題不是在于中國程序員的智商和工作努力狀況,也不是在于國家和民間對(duì)開發(fā)的投入程度,而是很大程度上,有一些對(duì)技術(shù),對(duì)程序開發(fā),對(duì)項(xiàng)目設(shè)計(jì)方面的思想誤區(qū),這些誤區(qū),導(dǎo)致了軟件行業(yè)的產(chǎn)品化能力不足,缺乏規(guī)?;痛笮蛷?fù)用系統(tǒng)研發(fā)能力,可以說,改變認(rèn)識(shí)誤區(qū),是解決軟件行業(yè)小作坊模式和個(gè)體英雄模式所帶來的局限性的重要工作。
中國有很多程序員,他們18,9歲或21,2歲,通過自學(xué)也寫了不少代碼,他們有的代碼寫的很漂亮,一些技術(shù)細(xì)節(jié)相當(dāng)出眾,也很有鉆研精神,但是他們被一些錯(cuò)誤的認(rèn)識(shí)和觀點(diǎn)左右,缺乏對(duì)系統(tǒng),對(duì)程序的整體理解能力,參加專業(yè)Java培訓(xùn)機(jī)構(gòu),進(jìn)行Java學(xué)習(xí)是不錯(cuò)的選擇。動(dòng)力節(jié)點(diǎn)專注Java培訓(xùn)多年,在業(yè)界有著良好的口碑,學(xué)生百分百就業(yè)。
作一個(gè)真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應(yīng)該具有的素質(zhì)。
1、團(tuán)隊(duì)精神和協(xié)作能力
把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說成獨(dú)行俠的都是在囈語,任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強(qiáng)大的團(tuán)隊(duì)來創(chuàng)造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協(xié)作精神是不可想象的。獨(dú)行俠可以作一些賺錢的小軟件發(fā)點(diǎn)小財(cái),但是一旦進(jìn)入一些大系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開發(fā)任務(wù),缺乏這種素質(zhì)的人就完全不合格了。
2、文檔習(xí)慣
說高水平程序員從來不寫文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。
缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3、規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫習(xí)慣
作為一些外國知名軟件公司的規(guī)矩,代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。再看看整個(gè)linux的搭建,沒有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,全球的研發(fā)協(xié)作是絕對(duì)不可想象的。
4、需求理解能力
程序員需要理解一個(gè)模塊的需求;很多程序員寫程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,有人曾經(jīng)放言說寫一個(gè)廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數(shù)量級(jí)的訪問情況下的性能指標(biāo)是如何實(shí)現(xiàn)的,對(duì)于這樣的程序員,你給他深藍(lán)那套系統(tǒng),他也做不出太極鏈的并訪能力。性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。
5、復(fù)用性,模塊化思維能力
經(jīng)??梢月牭揭恍┏绦騿T有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復(fù)寫一些沒有任何新意的代碼,這其實(shí)是中國軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過程中都考慮到這些問題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。一些好的程序模塊代碼,即便是70年代寫成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在我看到的是,很多小公司軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫,大部分重復(fù)性工作無謂的浪費(fèi)了時(shí)間和精力。
6、測(cè)試習(xí)慣
作為一些商業(yè)化正規(guī)化的開發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè);軟件研發(fā)作為一項(xiàng)工程而言,一個(gè)很重要的特點(diǎn)就是問題發(fā)現(xiàn)的越早,解決的代價(jià)就越低,程序員在每段代碼,每個(gè)子模塊完成后進(jìn)行認(rèn)真的測(cè)試,就可以盡量將一些潛在的問題最早的發(fā)現(xiàn)和解決,這樣對(duì)整體系統(tǒng)建設(shè)的效率和可靠性就有了最大的保證。
測(cè)試工作實(shí)際上需要考慮兩方面,一方面是正常調(diào)用的測(cè)試,也就是看程序是否能在正常調(diào)用下完成基本功能,這是最基本的測(cè)試職責(zé),可惜在很多公司這成了唯一的測(cè)試任務(wù),實(shí)際上還差的遠(yuǎn)那;第二方面就是異常調(diào)用的測(cè)試,比如高壓力負(fù)荷下的穩(wěn)定性測(cè)試,用戶潛在的異常輸入情況下的測(cè)試,整體系統(tǒng)局部故障情況下該模塊受影響狀況的測(cè)試,頻發(fā)的異常請(qǐng)求阻塞資源時(shí)的模塊穩(wěn)定測(cè)試等等。當(dāng)然并不是程序員要對(duì)自己的每段代碼都需要進(jìn)行這種完整測(cè)試,但是程序員必須清醒認(rèn)識(shí)自己的代碼任務(wù)在整體項(xiàng)目中的地位和各種性能需求,有針對(duì)性的進(jìn)行相關(guān)測(cè)試并盡早發(fā)現(xiàn)和解決問題,當(dāng)然這需要上面提到的需求理解能力。
7、學(xué)習(xí)和總結(jié)的能力
程序員是人才很容易被淘汰,很容易落伍的職業(yè),因?yàn)橐环N技術(shù)可能僅僅在三兩年內(nèi)具有領(lǐng)先性,程序員如果想安身立命,就必須不斷跟進(jìn)新的技術(shù),學(xué)習(xí)新的技能。
善于學(xué)習(xí),對(duì)于任何職業(yè)而言,都是前進(jìn)所必需的動(dòng)力,對(duì)于程序員,這種要求就更加高了。
善于總結(jié),也是學(xué)習(xí)能力的一種體現(xiàn),每次完成一個(gè)研發(fā)任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況和用戶反饋,隨時(shí)總結(jié),找到自己的不足,這樣逐步提高,一個(gè)程序員才可能成長起來。
一個(gè)不具備成長性的程序員,即便眼前看是個(gè)高手,建議也不要選用,因?yàn)樗湮榈臅r(shí)候馬上就到了。
具備以上全部素質(zhì)的人,應(yīng)當(dāng)說是夠格的程序員了,請(qǐng)注意以上的各種素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問題。
所以當(dāng)自己感覺遇到瓶頸的時(shí)候找個(gè)Java培訓(xùn)學(xué)校系統(tǒng)的學(xué)一下,跟有多年工作經(jīng)驗(yàn)的Java老師探討一下,而且在學(xué)生中也有很多的牛人同學(xué)。相互探討才能出現(xiàn)新思路。
第五篇:程序員(范文模版)
作業(yè):研究一個(gè)新或自己感興趣的職業(yè) v介紹:名稱定義
v典型生涯路徑:從新手到最高職位的生涯路徑
v趨勢(shì):技術(shù)、組織結(jié)構(gòu)、培訓(xùn)、經(jīng)濟(jì)趨勢(shì)對(duì)職業(yè)的影響
v薪酬:差別、地域差別
v所需技能
v教育/培訓(xùn):受教育程度
v證書/資格證書
v工作條件:環(huán)境、壓力、工作時(shí)間、是否出差?
v聘用機(jī)構(gòu)
v對(duì)生活方式的影響
v性別構(gòu)成v聘用過程
v專業(yè)知識(shí) 月收入
人數(shù)
<1000元 131 1000-3000元 919 3001-5000元 477 5001-10000元 245 10000元以上 44
最多的部分居然是“1000-3000元”...程序員苦哇,同志們!
程序員
目錄
1作為一個(gè)真正合?
2崗位職責(zé)
3行業(yè)現(xiàn)狀
4職業(yè)要求
5必備技能
6素質(zhì)要求
7職業(yè)困境
程序員(英文Programmer)是從事程序開發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計(jì)人員和程序編碼員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級(jí)程序員、高級(jí)程序員、系統(tǒng)分析員和項(xiàng)目經(jīng)理四大類的方法。
崗位職責(zé)
1、對(duì)項(xiàng)目經(jīng)理負(fù)責(zé),負(fù)責(zé)軟件項(xiàng)目的詳細(xì)設(shè)計(jì)、編碼和內(nèi)部測(cè)試的組織實(shí)施,對(duì)
小型軟件項(xiàng)目兼任系統(tǒng)分析工作,完成分配項(xiàng)目的實(shí)施和技術(shù)支持工作。
2、協(xié)助項(xiàng)目經(jīng)理和相關(guān)人員同客戶進(jìn)行溝通,保持良好的客戶關(guān)系。
3、參與需求調(diào)研、項(xiàng)目可行性分析、技術(shù)可行性分析和需求分析。
4、熟悉并熟練掌握交付軟件部開發(fā)的軟件項(xiàng)目的相關(guān)軟件技術(shù)。
5、負(fù)責(zé)向項(xiàng)目經(jīng)理及時(shí)反饋軟件開發(fā)中的情況,并根據(jù)實(shí)際情況提出改進(jìn)建議。
6、參與軟件開發(fā)和維護(hù)過程中重大技術(shù)問題的解決,參與軟件首次安裝調(diào)試、數(shù)據(jù)割接、用戶培訓(xùn)和項(xiàng)目推廣。
7、負(fù)責(zé)相關(guān)技術(shù)文檔的擬訂。
8、負(fù)責(zé)對(duì)業(yè)務(wù)領(lǐng)域內(nèi)的技術(shù)發(fā)展動(dòng)態(tài)。
一、通過國家統(tǒng)一組織的考試,資格考試分初級(jí)程序員級(jí)(技術(shù)員級(jí))、程序員級(jí)(助
理工程師級(jí))和高級(jí)程序員級(jí)(工程師級(jí));水平考試分初級(jí)程序員級(jí)、程序員級(jí)、高級(jí)程序員級(jí)、系統(tǒng)分析員級(jí)、以及網(wǎng)絡(luò)程序員(初級(jí))、網(wǎng)絡(luò)設(shè)計(jì)師(中級(jí))。
二、報(bào)考條件:報(bào)各級(jí)水平考試者無學(xué)歷、資歷限制;在職人員均可報(bào)初級(jí)程序員資格,其中大學(xué)本科畢業(yè)或任技術(shù)員兩年以上者(含二年),可報(bào)程序員級(jí)資格,研究生畢生或任助工兩年以上者(含二年),可報(bào)高級(jí)程序員級(jí)資格(計(jì)算年限均至本12月31日)。
三、報(bào)名手續(xù):報(bào)名時(shí)須持身份證或?qū)W生證,交本人近期同底一寸免冠半身照兩張及報(bào)名費(fèi)100元(系統(tǒng)分析員報(bào)名費(fèi)150元),其中報(bào)資格還須提交本人工作證及任職證明或相應(yīng)學(xué)歷證明復(fù)印件。
作為一個(gè)真正合格的程序員應(yīng)該具有的素質(zhì) 1:團(tuán)隊(duì)精神和協(xié)作能力
把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強(qiáng)大的團(tuán)隊(duì)來創(chuàng)造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協(xié)作精神是不可想象的。一旦進(jìn)入系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開發(fā)任務(wù),缺乏這種素質(zhì)的人是不合格的。
2:文檔習(xí)慣
說高水平程序員從來不寫文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫習(xí)慣
代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。有些codingfans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己?根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。沒有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,研發(fā)之間的協(xié)作是絕對(duì)不可想的。
4:需求理解能力
程序員需要理解一個(gè)模塊的需求,很多程序員寫程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。
5:復(fù)用性,模塊化思維能力
經(jīng)??梢月牭揭恍┏绦騿T有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復(fù)寫一些沒有任何新意的代碼,這其實(shí)是中國軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過程中都考慮到這些問題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。
一些好的程序模塊代碼,即便是70年代寫成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在很多軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫,大部分重復(fù)性工作無謂的浪費(fèi)了時(shí)間和精力,這是我們應(yīng)當(dāng)刻意克服的弊病。
6:測(cè)試習(xí)慣
作為一些正規(guī)化的開發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè);軟件研發(fā)作為一項(xiàng)工程而言,一個(gè)很重要的特點(diǎn)就是問題發(fā)現(xiàn)的越早,解決的代價(jià)就越低,程序員在每段代碼,每個(gè)子模塊完成后進(jìn)行認(rèn)真的測(cè)試,就可以盡量將一些潛在的問題最早的發(fā)現(xiàn)和解決,這樣對(duì)整體系統(tǒng)建設(shè)的效率和可靠性就有了最大的保證。
測(cè)試工作實(shí)際上需要考慮兩方面,一方面是正常調(diào)用的測(cè)試,也就是看程序是否能在正常調(diào)用下完成基本功能,這是最基本的測(cè)試職責(zé),可惜在很多公司這成了唯一的測(cè)試任務(wù),實(shí)際上還差的遠(yuǎn)那;第二方面就是異常調(diào)用的測(cè)試,比如高壓力負(fù)荷下的穩(wěn)定性測(cè)試,用戶潛在的異常輸入情況下的測(cè)試,整體系統(tǒng)局部故障情況下該模塊受影響狀況的測(cè)試,頻發(fā)的異常請(qǐng)求阻塞資源時(shí)的模塊穩(wěn)定測(cè)試等等。
當(dāng)然并不是程序員要對(duì)自己的每段代碼都需要進(jìn)行這種完整測(cè)試,但是程序員必須清醒認(rèn)識(shí)自己的代碼任務(wù)在整體項(xiàng)目中的地位和各種性能需求,有針對(duì)性的進(jìn)行相關(guān)測(cè)試并盡早發(fā)現(xiàn)和解決問題,當(dāng)然這需要上面提到的需求理解能力。
7:學(xué)習(xí)和總結(jié)的能力
程序員是人才很容易被淘汰,很容易落伍的職業(yè),因?yàn)橐环N技術(shù)可能僅僅在三兩年內(nèi)具有領(lǐng)先性,程序員如果想安身立命,就必須不斷跟進(jìn)新的技術(shù),學(xué)習(xí)新的技能。善于學(xué)習(xí),對(duì)于任何職業(yè)而言,都是前進(jìn)所必需的動(dòng)力,對(duì)于程序員,這種要求就更加高了。
但是學(xué)習(xí)也要找對(duì)目標(biāo),善于總結(jié),也是學(xué)習(xí)能力的一種體現(xiàn),每次完成一個(gè)研發(fā)任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況和用戶反饋,隨時(shí)總結(jié),找到自己的不足,這樣逐步提高,一個(gè)程序員才可能成長起來。
具備以上全部素質(zhì)的人,應(yīng)當(dāng)說是夠格的程序員了,請(qǐng)注意以上的各種素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問題。
作為高級(jí)程序員,乃至于設(shè)計(jì)師而言,除了應(yīng)該具備上述全部素質(zhì)之外,還需要具備以下素質(zhì):
1、需求分析能力
2、整體框架能力
3、流程處理能力
4、模塊分解能力
5、整體項(xiàng)目評(píng)估能力
6、團(tuán)隊(duì)組織管理能力
世界上第一位程序員是英國著名詩人拜倫的女兒AdaLovelace曾設(shè)計(jì)了巴貝奇分析機(jī)上解伯努利方程的一個(gè)程序。她甚至還建立了循環(huán)和子程序的概念。由于她在程序設(shè)計(jì)上的開創(chuàng)性工作,AdaLovelace被稱為世界上第一位程序員。美國國防部開發(fā)的ADA語言就是為紀(jì)念這位世界上的第一位程序員而命名的。
計(jì)算機(jī)科學(xué)發(fā)展到今天(21世紀(jì)初期),程序員從事的人群很多,分工也不相同,從大的方面可以分為以下幾類:
asp程序員 jsp程序員 delphi程序員 php程序員 powerbuilder程序員.net程序員 vb序員 java程序員 javascript程序員 C++程序員
職業(yè)要求
一般的程序員都有四年的在專業(yè)領(lǐng)域的學(xué)習(xí),需要一個(gè)在程序領(lǐng)域的學(xué)士學(xué)位獲得者,不論是數(shù)學(xué)方面的還是工程方面的都是可以的。
大約有20%的人在這一領(lǐng)域的計(jì)算機(jī)科學(xué)和工程學(xué)擁有更高的學(xué)位。還有很小一部分程序員是自學(xué)的,盡管一些專業(yè)性的學(xué)?;蛘呔C合大學(xué)可以提供,但是也需要一些別的途徑來提供相關(guān)的人才。盡管學(xué)歷是比較重要的,但是公司經(jīng)常把重點(diǎn)放在應(yīng)聘者的工作經(jīng)驗(yàn)上,很多剛從大學(xué)畢業(yè)的大學(xué)生雖然有引人注目的學(xué)位證書,但是他們找不到工作是因?yàn)樗麄內(nèi)狈?jīng)驗(yàn)。一個(gè)程序員雖然有正規(guī)的學(xué)歷,但是如果一個(gè)人擁有程序設(shè)計(jì)的深厚知識(shí)背景或者豐富的工作經(jīng)驗(yàn)的話,那么他的機(jī)會(huì)要比有學(xué)歷的應(yīng)屆畢業(yè)生大得多。所以要盡量抓住有用的工作和實(shí)習(xí)機(jī)會(huì),這樣的話在畢業(yè)后你就會(huì)發(fā)現(xiàn),多實(shí)習(xí)讓你有更多的經(jīng)驗(yàn),在找工作的時(shí)候就有更多的機(jī)會(huì)。
對(duì)于職業(yè)程序員,另外一個(gè)重要的方面就是,程序員需要不斷提升自己的業(yè)務(wù)技術(shù),他的技術(shù)必須一直保持在一個(gè)較高的水平,并且要不斷發(fā)展,程序員也要尋找貿(mào)易的機(jī)會(huì),要參加研討會(huì),在周刊上發(fā)表文章和接受職業(yè)教育,這些使程序員在自己的領(lǐng)域中分級(jí)或者不斷并排前進(jìn)。
必備技能
熟練開發(fā)工具
做為一名程序員至少熟練掌握兩到三種開發(fā)工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點(diǎn)推薦的開發(fā)工具,C/C++以其高效率和高度的靈活性成為開發(fā)工具中的利器,很多系統(tǒng)級(jí)的軟件還是用C/C編寫。而JAVA的跨平臺(tái)和與WEB很好的結(jié)合是JAVA的優(yōu)勢(shì)所在,而JAVA即其相關(guān)的技術(shù)集JAVAOne很可能會(huì)成為未來的主流開發(fā)工具之一。其次,能掌握一種簡便的可視化開發(fā)工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發(fā)工具減小了開發(fā)難度,并能夠強(qiáng)化程序員對(duì)象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知數(shù)據(jù)庫
為什么數(shù)據(jù)庫是如此重要?作為程序員,他們自然有自己的理由:很多應(yīng)用程序都是以數(shù)據(jù)庫的數(shù)據(jù)為中心,而數(shù)據(jù)庫的產(chǎn)品也有不少,其中關(guān)系型數(shù)據(jù)庫仍是主流形式,所以程序員至少熟練掌握一兩種數(shù)據(jù)庫,對(duì)關(guān)系型數(shù)據(jù)庫的關(guān)鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多數(shù)據(jù)庫產(chǎn)品提供了可視化的數(shù)據(jù)庫管理工具,但SQL是基礎(chǔ),是通用的數(shù)據(jù)庫操作方法。如果沒有機(jī)會(huì)接觸商業(yè)數(shù)據(jù)庫系統(tǒng),可以使用免費(fèi)的數(shù)據(jù)庫產(chǎn)品是一個(gè)不錯(cuò)的選擇,如mySQL,Postgres等。
了解操作系統(tǒng)
當(dāng)前主流的操作系統(tǒng)是Windows,Linux/Unix,熟練地使用這些操作系統(tǒng)是必須的,但只有這些還遠(yuǎn)遠(yuǎn)不夠。要想成為一個(gè)真正的編程高手,需要深入了解操作系統(tǒng),了解它的內(nèi)存管理機(jī)制、進(jìn)程/線程調(diào)度、信號(hào)、內(nèi)核對(duì)象、系統(tǒng)調(diào)用、協(xié)議棧實(shí)現(xiàn)等。Linux作為開發(fā)源碼的操作系統(tǒng),是一個(gè)很好的學(xué)習(xí)的平臺(tái),Linux幾乎具備了所有現(xiàn)代操作系統(tǒng)的特征。雖然Windows系統(tǒng)的內(nèi)核實(shí)現(xiàn)機(jī)制的資料較少,但通過互聯(lián)網(wǎng)還是能獲取不少資料。懂得網(wǎng)絡(luò)協(xié)議TCP/IP。
在互聯(lián)網(wǎng)如此普及的今天,如果您還沒有對(duì)互聯(lián)網(wǎng)的支撐協(xié)議TCP/IP協(xié)議棧有很好的掌握,就需要迅速補(bǔ)上這一課,網(wǎng)絡(luò)技術(shù)已改變了軟件運(yùn)行的模式,從最早的客戶/服務(wù)器結(jié)構(gòu),到今天的WEBServices,再到未來的網(wǎng)格計(jì)算,這一切都離不開以TCP/IP協(xié)議棧為基礎(chǔ)的網(wǎng)絡(luò)協(xié)議支持,深入掌握TCP/IP協(xié)議是非常必要的。至少,需要了解ISO七層協(xié)議模型,IP/UDP/TCP/HTTP等常用協(xié)議的原理和三次握手機(jī)制。明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術(shù)的發(fā)展,軟件與網(wǎng)絡(luò)的無縫結(jié)合是必然趨勢(shì),軟件系統(tǒng)的位置無關(guān)性是未來計(jì)算模式的重要特征之一,DCOM/CORBA是當(dāng)前兩大主流的分布計(jì)算的中間平臺(tái),DCOM是微軟COM(組件對(duì)象模型)的擴(kuò)展,而CORBA是OMG支持的規(guī)范。XML/WebServices重要性不言而喻,XML以其結(jié)構(gòu)化的表示方法和超強(qiáng)的表達(dá)能力被喻為互聯(lián)網(wǎng)上的“世界語”,是分布式計(jì)算的基石之一。
不要將軟件工程與CMM分開
大型軟件系統(tǒng)的開發(fā)中,工程化的開發(fā)控制取代個(gè)人英雄主義,成為軟件系統(tǒng)成功的保證,一個(gè)編程高手并不一定是一個(gè)優(yōu)秀的程序員,一個(gè)優(yōu)秀的程序員是將出色的編程能力和開發(fā)技巧同嚴(yán)格的軟件工程思想有機(jī)結(jié)合,編程只是軟件生命周期中的其中一環(huán),優(yōu)秀的程序員應(yīng)該掌握軟件開發(fā)各個(gè)階段的基本技能,如市場(chǎng)分析,可行性分析,需求分析,結(jié)構(gòu)設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件測(cè)試等。
需求理解能力
程序員要能正確理解任務(wù)單中描述的需求。在這里要明確一點(diǎn),程序員不僅僅要注意到軟件的功能需求,還應(yīng)注意軟件的性能需求,要能正確評(píng)估自己的模塊對(duì)整個(gè)項(xiàng)目中的影響及潛在的威脅,如果有著兩到三年項(xiàng)目經(jīng)驗(yàn)的熟練程序員對(duì)這一點(diǎn)沒有體會(huì)的話,只能說明他或許是認(rèn)真工作過,但是沒有用心工作。
模塊化思維能力
作為一個(gè)優(yōu)秀的程序員,他的思想不能在局限當(dāng)前的工作任務(wù)里面,要想想看自己寫的模塊是否可以脫離當(dāng)前系統(tǒng)存在,通過簡單的封裝在其他系統(tǒng)中或其他模塊中直接使用。這樣做可以使代碼能重復(fù)利用,減少重復(fù)的勞動(dòng),也能是系統(tǒng)結(jié)構(gòu)越趨合理。模塊化思維能力的提高是一個(gè)程序員的技術(shù)水平提高的一項(xiàng)重要指標(biāo)。
素質(zhì)要求
團(tuán)隊(duì)精神和協(xié)作能力
團(tuán)隊(duì)精神和協(xié)作能力是作為一個(gè)程序員應(yīng)具備的最基本的素質(zhì)。軟件工程已經(jīng)提了將近三十年了,當(dāng)今的軟件開發(fā)已經(jīng)不是編程了,而是工程。獨(dú)行俠可以寫一些程序也能賺錢發(fā)財(cái),但是進(jìn)入研發(fā)團(tuán)隊(duì),從事商業(yè)化和產(chǎn)品化的開發(fā)任務(wù),就必須具備這種素質(zhì)??梢院敛豢鋸埖恼f這種素質(zhì)是一個(gè)程序員乃至一個(gè)團(tuán)隊(duì)的安身立命之本。
文檔習(xí)慣
文檔是一個(gè)軟件系統(tǒng)的生命力。一個(gè)公司的產(chǎn)品再好、技術(shù)含量再高,如果沒有缺乏文檔,知識(shí)就沒有繼承,公司還是一個(gè)來料加工的軟件作坊。作為代碼程序員,必須將30%的工作時(shí)間寫用于技術(shù)文檔。沒有文檔的程序員勢(shì)必會(huì)被淘汰。
規(guī)范化的代碼編寫習(xí)慣
知名軟件公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進(jìn)的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。
測(cè)試習(xí)慣
測(cè)試是軟件工程質(zhì)量保證的重要環(huán)節(jié),但是測(cè)試不僅僅是測(cè)試工程師的工作,而是每個(gè)程序員的一種基本職責(zé)。程序員要認(rèn)識(shí)測(cè)試不僅是正常的程序調(diào)試,而要是要進(jìn)行有目的有針對(duì)性的異常調(diào)用測(cè)試,這一點(diǎn)要結(jié)合需求理解能力。
學(xué)習(xí)和總結(jié)的能力
程序員是很容易被淘汰的職業(yè),所以要善于學(xué)習(xí)總結(jié)。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術(shù)人員無論學(xué)了多少語言,代碼寫起來多熟練,只能說他是一名熟練的代碼民工,他永遠(yuǎn)都不會(huì)有質(zhì)的提高。一個(gè)善于學(xué)習(xí)的程序員會(huì)經(jīng)??偨Y(jié)自己的技術(shù)水平,對(duì)自己的技術(shù)層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級(jí)為軟件設(shè)計(jì)師、系統(tǒng)分析員。
擁有強(qiáng)烈的好奇心
什么才是一個(gè)程序員的終極武器呢,那就是強(qiáng)烈的好奇心和學(xué)習(xí)精神。沒有比強(qiáng)烈的好奇心和學(xué)習(xí)精神更好的武器了,它是程序員們永攀高峰的源泉和動(dòng)力所在。
行業(yè)現(xiàn)狀
由CSDN、《程序員》主辦的2007年開發(fā)者大調(diào)查2007年底已收到15000多份有效問卷,已經(jīng)是中國調(diào)查樣本最多的開發(fā)者調(diào)查。在這次調(diào)查中,詳細(xì)的分析了樣本空間的分布狀況,發(fā)
現(xiàn)在龐大數(shù)目的有效問卷的參與者中有70%也就是接近一萬一千名的參與調(diào)查者是IT的全職人員,14%的參與者是有過開發(fā)工作經(jīng)驗(yàn)的學(xué)生,從這樣的分布就可以看出來IT從業(yè)人員對(duì)專業(yè)知識(shí)的需求是巨大而迫切的,CSDN作為專業(yè)的軟件開發(fā)技術(shù)門戶網(wǎng)站,已經(jīng)是大家獲取這些技術(shù)知識(shí)的主要手段。
一、選擇數(shù)據(jù)庫技術(shù)和互聯(lián)網(wǎng)技術(shù)的人數(shù)總和占到了總?cè)藬?shù)的一半
2007年火熱的SOA和動(dòng)態(tài)語言各占13%和12%。其實(shí)這幾大塊技術(shù)分布他們之間都是有一定的聯(lián)系的,互聯(lián)網(wǎng)的發(fā)展近兩年呈爆炸式的增長態(tài)勢(shì),中國的網(wǎng)民總數(shù)已經(jīng)超過了1.4億這樣一個(gè)巨大的數(shù)字。
企業(yè)中業(yè)務(wù)的復(fù)雜程度越來越高,商業(yè)競爭不斷增加企業(yè)的IT系統(tǒng),使企業(yè)的商業(yè)數(shù)據(jù)呈幾何數(shù)量級(jí)不斷增長,在后臺(tái)海量的數(shù)據(jù)中數(shù)據(jù)的管理由之前的單一型數(shù)據(jù)變成了多緯度的復(fù)雜數(shù)據(jù),所以可以同時(shí)管理關(guān)系型數(shù)據(jù)庫和XML數(shù)據(jù)的混合型數(shù)據(jù)庫已經(jīng)成為主流。
面對(duì)企業(yè)不斷增加新的IT信息系統(tǒng),整合已經(jīng)迫在眉睫,SOA成為必然的趨勢(shì),企業(yè)對(duì)人才的需求從單一型技術(shù)人才、業(yè)務(wù)人才跳躍到了業(yè)務(wù)技術(shù)的復(fù)合型人才,這次的開發(fā)人員大調(diào)查令《 程序員》雜志的調(diào)查者看到了這些技術(shù)焦點(diǎn)背后千絲萬縷的關(guān)聯(lián)。
二、幾乎一半的.NET用戶不參與開源項(xiàng)目RedHat+Ubuntu占有率超過70%
應(yīng)用到.NET平臺(tái)上的開源項(xiàng)目,“大量使用”的比例數(shù)僅為8.68%,尚不足一成;“少量應(yīng)用”的開發(fā)者人數(shù)比例為42.78%?!盎静挥谩钡谋壤哌_(dá)48.54%,與前二者之和幾乎不相上下。
雖然開源的出現(xiàn)和發(fā)展,讓軟件沒有壟斷的未來日漸明朗;雖然開源運(yùn)動(dòng)經(jīng)過多年的高速發(fā)展,現(xiàn)在已經(jīng)聚集了相當(dāng)?shù)牧α?,開源的自由和給予理念逐漸深入到了企業(yè)的技術(shù)核心層面。但微軟以商業(yè)軟件為生,畢竟在微軟技術(shù)領(lǐng)域中,開源項(xiàng)目通常都被看作是二等公民。很多開源項(xiàng)目對(duì).NET社區(qū)產(chǎn)生了巨大的推動(dòng)作用,微軟公司很難提供任何實(shí)質(zhì)性質(zhì)的支持。
Linu版本
當(dāng)前安裝有Linux操作系統(tǒng),數(shù)據(jù)中RedHatFedora占據(jù)絕對(duì)優(yōu)勢(shì)——Linux使用者使用該版本占總數(shù)的49.49%。Fedora是RedHat推出的重要的一款Linux版本,在每個(gè)fedora版本中都是集成最新的Linux軟件,特別是服務(wù)端軟件。
使用“RedHatFedora”關(guān)鍵詞在百度網(wǎng)頁中搜索得到7,090,000條結(jié)果,RedHatFedora在調(diào)查中占據(jù)Linux版本的半壁江山符合整個(gè)Linux版本的分布情況。
排在第二位的是Ubuntu,受支持?jǐn)?shù)占到總數(shù)的23.92%;第三位的是SuSE占9.09%,接下來是Debian,使用率為5.92%。
在這里面令人期待的中國本土Linux的讓人大失所望。使用率僅占5.16%,幾乎只
有RedHatFedora的十分之一。
三、揭示八成技術(shù)人員數(shù)據(jù)庫選型標(biāo)準(zhǔn)SQLServer用戶接近50%
使用率占據(jù)榜首的數(shù)據(jù)庫產(chǎn)品是微軟的SQLServer,比例數(shù)達(dá)到了47.92%。與其余所有的數(shù)據(jù)庫之和分庭抗衡,大有一覽眾山小之勢(shì)。
從調(diào)查得到的使用率來看,MySQL仍處于望MSSQLServer項(xiàng)背的階段。調(diào)查顯示,MySQL的使用數(shù)為1651,占總數(shù)的13.80%,不過排名第三。
使用率排在第二位的是Oracle,比例達(dá)到24.21%。在前有SQLServer,后有MySQL的情況下,Oracle仍能達(dá)到四分之一的占有率,發(fā)展勢(shì)頭不可謂不強(qiáng)勁。
雖然Orcale數(shù)據(jù)庫的價(jià)格比SQLServer數(shù)據(jù)庫要高,但Oracle采用開放的策略目標(biāo),可在所有主流平臺(tái)上運(yùn)行。而且有開發(fā)者認(rèn)為Oracle的安全認(rèn)證是獲得最高認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證,因此安全性高于SQLServer。
排在第四位的是Access——5.59%;接著是DB2UDB,占總數(shù)的2.75%;至于FoxPro、Informix、PostgreSQL、Sybase得票數(shù)均僅在一百左右,還有待進(jìn)一步的發(fā)展。
四、中國程序員最愛的智能手機(jī)平臺(tái)Linux+Java超過Symbian
“開源Linux對(duì)于眾多開發(fā)者的吸引力是巨大的,但是,這僅僅是針對(duì)于技術(shù)開發(fā)人員來說的,而對(duì)于普通消費(fèi)者就不是如此了。”在眾多開發(fā)者心中,主要是對(duì)Linux的青睞。從調(diào)查結(jié)果中也可以直接反應(yīng)這樣的現(xiàn)象。有專家對(duì)此評(píng)論說:Linux+Java的模式,應(yīng)該是應(yīng)用最多的模式。
開源Linux對(duì)于眾多開發(fā)者的吸引力是巨大的,但是,這僅僅是針對(duì)于技術(shù)開發(fā)人員來說的,而對(duì)于普通消費(fèi)者就不是如此了。針對(duì)此問題行業(yè)的專家有自己的觀點(diǎn):“現(xiàn)在Wince和Symbian發(fā)展很快,并且隨著手機(jī)硬件方面性能的提高,很多政府部門和企業(yè)在采購時(shí),很多會(huì)考慮Dopod這樣的手機(jī),或者價(jià)格便Wince和Symbian都主要使用c++開發(fā),正是嵌入式開發(fā)的潮流?!?/p>
不同人群對(duì)于收集智能操作系統(tǒng)的觀點(diǎn)是不同的,對(duì)于開發(fā)者角度,他們更加青睞于微軟和開源Linux的產(chǎn)品,而普通大眾他們比較喜歡Wince和Symbian。五、七成程序員不愿意選擇門戶網(wǎng)站獲取開源信息SourceForge占絕對(duì)優(yōu)勢(shì)
30%的技術(shù)人員從門戶網(wǎng)站獲取開源技術(shù)信息,剩下的70%的技術(shù)人員都是從專業(yè)的開源社區(qū)和開源廠商的技術(shù)網(wǎng)站上獲取信息,包括有SourceForge、LinuxToday、OpenOffice和IBMdW等。
在這70%當(dāng)中,比例占有絕對(duì)優(yōu)勢(shì)的就是SourceForge了,這里是開源軟件的開發(fā)者進(jìn)行開發(fā)管理的集中式場(chǎng)所,也是全球最大開源軟件開發(fā)平臺(tái)和倉庫。而LinuxToday里面會(huì)有記錄很多很新的Linux業(yè)界大事,新聞以及出版信息。所以,對(duì)開源技術(shù)感興趣的程序員們,不必再為如何獲取開源信息而苦惱了,快加入到這70%的人群中來吧。
互聯(lián)網(wǎng)的發(fā)展已經(jīng)成為大家獲取信息最主要的渠道之一,網(wǎng)民上網(wǎng)的習(xí)慣也從開始的上為數(shù)不多的幾個(gè)門戶網(wǎng)站發(fā)生了變化,大而全的門戶網(wǎng)站并不能滿足專業(yè)領(lǐng)域人員的信息需求,從2004年開始陸續(xù)出現(xiàn)了大量的各個(gè)領(lǐng)域垂直細(xì)分的內(nèi)容網(wǎng)站,一方面有長尾理論的理論支持,另一方面廠商也建立了相應(yīng)產(chǎn)品的技術(shù)內(nèi)容網(wǎng)站,希望能聚集一批專注于這個(gè)領(lǐng)域?qū)I(yè)人士,做好他們的定向營銷。
做細(xì)分領(lǐng)域內(nèi)容的網(wǎng)站對(duì)門戶已經(jīng)造成了一定的威脅,這些網(wǎng)站的專業(yè)性高,用戶的粘性相對(duì)也比較高,如果細(xì)分領(lǐng)域的內(nèi)容網(wǎng)站能將自己的服務(wù)有所提升,就如同SourceForge一樣,那么未來門戶網(wǎng)站的路就變得更加崎嶇了。
六、Java開發(fā)框架:6%的JSF欲撼動(dòng)21%的Struts
JSF現(xiàn)在比較有優(yōu)勢(shì)的是對(duì)Ajax的集成,這一點(diǎn)走在了其他框架的前面。未來兩
年,JSF與Struts將展開JavaWeb框架的最終戰(zhàn)爭。經(jīng)過數(shù)年的“框架大戰(zhàn)”,Java界的各種框架找到了自己應(yīng)有的位置。Spring+Hibernate+Struts已成為Java開發(fā)的主流體系。在這個(gè)體系中,Spring+Hibernate的地位應(yīng)該說短期內(nèi)是難以撼動(dòng)了。除了新興的JbossSeam作為挑戰(zhàn)者之外,幾乎難有勁敵。
JavaB/S編程中歷來戰(zhàn)火最激烈的其實(shí)還在Web層,框架的數(shù)量最多,爭議最大。一切由Struts而起,而Struts最終也坐穩(wěn)了第一個(gè)時(shí)代的王座。在技術(shù)層面,Struts1.x已經(jīng)被無數(shù)人抱怨過、批評(píng)過,但終于還是穩(wěn)坐王位,這充分說明了習(xí)慣的力量?!胺€(wěn)定壓倒一切”,這句話在IT技術(shù)領(lǐng)域仍舊適用。
詳細(xì)的分析了Java開發(fā)框架的使用狀況,發(fā)現(xiàn)主要使用的開發(fā)框架JSP占26%,Struts占21%,Hibernate占17%,SpringMVC占11%,EJB占7%,JSF占6%,SpringWebFlow和POJO各占4%,其它占4%。就這一調(diào)查數(shù)據(jù),不難看出,Spring+Hibernate+Struts的優(yōu)勢(shì)地位還是相當(dāng)?shù)拿黠@。
Struts和Hibernate幾乎已經(jīng)成了JavaEE應(yīng)用的常規(guī)配置,21%的開發(fā)者用到Struts,用到Hibernate的開發(fā)者也有17%;在一個(gè)成熟的技術(shù)平臺(tái)上,各個(gè)項(xiàng)目的技術(shù)方案會(huì)在很大程度上趨同——因?yàn)樗形粗I(lǐng)域都已經(jīng)被探明,各種問題都有對(duì)應(yīng)的最佳實(shí)踐,架構(gòu)師們可以參考的成功案例越來越多。就拿JavaEE來說,架構(gòu)師們需要考慮的問題比之三年前已經(jīng)簡單多了,這就是成熟的價(jià)值。
有專家評(píng)論:“其實(shí)IT應(yīng)用技術(shù),什么新鮮玩意并不難學(xué),難的是標(biāo)準(zhǔn)化和規(guī)范化。每個(gè)程序員都有自己的思路和習(xí)慣,寫出來的代碼自然是五花八門。Java何以成為編程界的占重要地位,很重要的一點(diǎn)在于Java的規(guī)范化。這種規(guī)范化很高的語言適用于多人合作的大型項(xiàng)目,便于溝通和理解,也就便于集成和維護(hù)。Java世界為什么會(huì)框架橫飛,說到底還是規(guī)范化的需要。純JSP和Struts寫Web誰快,擺明了是JSP。那為什么用Struts?原因在于100個(gè)人寫出來的JSP,有100種寫法;而100個(gè)人寫出來的Struts,基本相似。Struts之成功,正緣于其在JavaWeb層的規(guī)范化方面所做出的貢獻(xiàn)。
然而長江后浪推前浪,Struts1.x的技術(shù)缺陷畢竟是隱患。Sun力推JSF,打算一雪Web層框架缺失之恥。JSF現(xiàn)在比較有優(yōu)勢(shì)的是對(duì)Ajax的集成,這一點(diǎn)走在了其他框架的前面。未來兩年,JSF與Struts將展開JavaWeb框架的最終戰(zhàn)爭。
JSP經(jīng)過幾年風(fēng)雨洗禮依然把持頭把交椅,看來所有的框架表示層都離不開JSP而存在,而作為JSP的手足兄弟JSF也是僅次Spring之后又一個(gè)后起之秀。
七、C++開發(fā)環(huán)境格局難打破75%的開發(fā)人員首選VS系列
BCB正江河日下,2007版本的推出也無法力挽狂瀾。雖然現(xiàn)在C++Builder已經(jīng)歸于CodeGear,但人們還是習(xí)慣性地與Borland聯(lián)系上。
1998年Borland公司推出的C++Builder這一當(dāng)年全新的32位Windows開發(fā)工
具,繼承了Delphi使用簡便、功能強(qiáng)大、效率高的特點(diǎn),并且結(jié)合了C++語言幾乎所有優(yōu)點(diǎn)。所以開始C++Builder迅速風(fēng)靡。它的主要競爭對(duì)象——Microsoft開發(fā)的VisualC++也是不甘示弱,迅速出擊,突出了Visual可視化強(qiáng)的特點(diǎn),加上Platform、SDK部分以及Microsoft產(chǎn)品與Windows的天然默契,逐漸成為了技術(shù)人員的首選。隨著VisualC++版本的不段升級(jí),以及功能、風(fēng)格等諸多原因,BCB漸現(xiàn)頹勢(shì),許多Builder使用者也開始轉(zhuǎn)而使用Visual了。
在2007年CSDN、《程序員》主辦的開發(fā)者大調(diào)查中,詳細(xì)的分析了C++方面大家主要使用什么IDE的狀況,在目前已收到的15000多份有效問卷中,發(fā)現(xiàn)主要使用VS系列的占了75%,BorlandC++Builder/CBuilderX只占6%,EclipseCDT占6%,DevC++占2%,其他IDE占3%,不使用IDE占8%。對(duì)于.NET開發(fā),VisualC++2005有了一套新的語法;新的優(yōu)化技術(shù),可使程序的速度最高提高30%;同時(shí)新的編譯模式,可保證在Microsoft.NETFramework之上生成完全遵從CLI(CommonLanguageInfrastructure)的可驗(yàn)證代碼;新的interop模式,可提供本地與托管代碼的無縫融合。
相對(duì)于前兩個(gè)版本,新編譯器還包括了一個(gè)增強(qiáng)版本的緩沖區(qū)安全檢查選項(xiàng),而且對(duì)C++程序普遍使用的庫,也有新的注重安全的版本。VisualC++2005對(duì)基于IntelItanium和AMD64的64位平臺(tái),提供了對(duì)OpenMP標(biāo)準(zhǔn)的支持,并且修正了一些混合DLL加載的問題,對(duì)DoubleP/Invoke的性能問題,提供了自動(dòng)運(yùn)行時(shí)消除。相比之下,C++Builder2007英文版2008年6月初上市。從CodeGear大中華區(qū)技術(shù)總監(jiān)李維的博客,看到CodeGear對(duì)C++Builder2007的期待。雖然說對(duì)同一件事情,每個(gè)人都有自己的視角,已有五年C++方面學(xué)習(xí)和開發(fā)經(jīng)驗(yàn)的賴勇浩說道:“BCB正江河日下,2007版本的推出也無法力挽狂瀾。雖然現(xiàn)在C++Builder已經(jīng)歸于CodeGear,但人們還是習(xí)慣性地與Borland聯(lián)系上。
現(xiàn)在的Microsoft及VC勢(shì)頭強(qiáng)勁,產(chǎn)品也具有很高的質(zhì)量性,CodeGear在C++和.Net領(lǐng)域至少三五年內(nèi)會(huì)繼續(xù)望其項(xiàng)背。所以推出CB2007,更多的是基于版本延續(xù)?!?/p>
八、程序員更喜歡Firefox市場(chǎng)份額超過IE7.0兩倍
參與調(diào)查的多數(shù)是軟件開發(fā)人員或者多數(shù)是IT從業(yè)人員,但是從這一比例不難看出,IE丟失掉了曾經(jīng)在瀏覽器大戰(zhàn)中占據(jù)了的技術(shù)優(yōu)勢(shì),在IE6推出后的5年時(shí)間里,瀏覽器一直在快速發(fā)展,而IE卻一直沒有更新過,這對(duì)一個(gè)世界上最常用的產(chǎn)品來說絕對(duì)是致命的。Firefox(火狐瀏覽器)以它的小巧、安全,很容易擴(kuò)展和定制的特長獲得了越來越多的喜愛。
更重要的是,它是是一個(gè)自由的瀏覽器,所有的源代碼都是開放的,任何人可以為它的成長貢獻(xiàn)力量。Cookie、頁面緩存,個(gè)人都可以精確的控制,這些特性都是技術(shù)人員們所崇尚的“我的 地盤我做主”的精神。如果說之前FireFox相對(duì)IE6有50%的優(yōu)勢(shì)的話,那么,F(xiàn)ireFox相對(duì)于現(xiàn)在的IE7的優(yōu)勢(shì)已經(jīng)降低到25%左右了。因?yàn)镮E7從底層已經(jīng)做了很多的修改,已經(jīng)慢慢的向W3C標(biāo)準(zhǔn)靠近了許多,在功能使用方面與FireFox的差距也變得很細(xì)微,Tab功能,CSS和腳本支持功能現(xiàn)在IE7都比之前表現(xiàn)強(qiáng)了,差距僅僅存在于某些小細(xì)節(jié)中了。
IE6在這個(gè)市場(chǎng)中存在了5年之后微軟才意識(shí)到改變和向國際標(biāo)準(zhǔn)靠攏的重要性,這就直接導(dǎo)致了大量的技術(shù)人員失去了對(duì)IE的信心,投向FireFox陣營,不過,微軟到底還是強(qiáng)大的,在全球范圍內(nèi)有很多的“粉絲”,他們會(huì)一直關(guān)注微軟的任何一次動(dòng)作,客觀的評(píng)價(jià)也是對(duì)產(chǎn)品最好的反饋,也是最有價(jià)值的。
關(guān)于Maxthon和騰訊的TT,雖然它們都是基于IE內(nèi)核的瀏覽器,但是Maxthon在這次調(diào)查中僅次于FireFox,力壓IE名列第二的位置,著實(shí)看出了這幾年Maxthon確實(shí)做到了他們的口號(hào)“讓技術(shù)為使用舒適服務(wù)”。
包括了FireFox、Opera這種標(biāo)準(zhǔn)的瀏覽器,也包括了Maxthon和TT這樣基于IE內(nèi)核的瀏覽器,對(duì)于標(biāo)準(zhǔn)的瀏覽器,F(xiàn)ireFox和Opera的重點(diǎn)是要解決兼容問題,而基于IE內(nèi)核的Maxthon和TT更主要的是要解決瀏覽器插件、工具的應(yīng)用問題,所以,技術(shù)產(chǎn)品的激烈競爭帶給用戶的其實(shí)是一種良性循環(huán),使我們可以第一時(shí)間用到最好用的工具,至于商業(yè)效應(yīng),還是留給廠商自己去考慮吧。
九、中國程序員健康兩成感覺很虛弱亞健康接近七成
“干得比驢累,吃得比豬差,起得比雞早,看上去比誰都好,五年后比誰都老。很多程
序員都曾這樣感慨和抱怨過自己的生活狀態(tài)?!?亞健康狀態(tài)是人體處于健康和疾病之間的過渡階段,在身體上、心理上沒有疾病,但主觀上卻有許多不適的癥狀表現(xiàn)和心理體驗(yàn)。
位于調(diào)查結(jié)果第二位的是“很虛弱”——149,比例為19.81%。很虛弱的健康指數(shù)低于亞健康,已接近生病和透支狀態(tài),他們的健康已經(jīng)被亮出了黃牌。
每個(gè)人的理解不一樣,但是“糟透了”這樣的詞如果用來形容程序員健康的話,相信大多數(shù)人都絕對(duì)認(rèn)同“你已經(jīng)病了”這樣的理解。令人不敢相信的是,竟然有8.24%的程序員用這個(gè)詞來形容自己的健康狀態(tài)!
調(diào)查結(jié)果中“非常健康”的票數(shù)低得可憐——40,即使算上“沒感覺”,二者之和也不過9.04%,幾乎跟“糟透了”持平。如果將“非常健康”和“沒感覺”一起算為健康的話,處于亞健康狀態(tài)的程序員是健康狀態(tài)的7倍,自認(rèn)為“很虛弱”的程序員數(shù)目是處于健康狀態(tài)的2.2倍!
十、.NET全面進(jìn)入2.0時(shí)代,AJAX風(fēng)頭正勁“在Java領(lǐng)域,JDK5.0是當(dāng)之無愧的主流平臺(tái),但JDK1.4仍保有一半以上的占有量??偟膩碚f,Java族群顯然不像.NET族群那樣追新。從另一個(gè)方面看,這也說明Java平臺(tái)的成熟,和.NET平臺(tái)的迅速發(fā)展?!?/p>
根據(jù)2007年的調(diào)查數(shù)據(jù)分析,在.NET領(lǐng)域,.NETFramework2.0的采用量已全面超越.NETFramework1.1,成為.NET平臺(tái)的首選框架。2006年調(diào)查結(jié)果,1.1和2.0的采用量基本持平,而2007年2.0的采用量則高達(dá)1.1的三倍之多。.NETFramework1.1已是明日黃花,微軟的更新
換代策略可以說是成功的。在Java領(lǐng)域,JDK5.0是當(dāng)之無愧的主流平臺(tái),但JDK1.4仍保有一半以上的占有量??偟膩碚f,Java族群顯然不像.NET族群那樣追新。從另一個(gè)方面看,這也說明Java平臺(tái)的成熟,和.NET平臺(tái)的迅速發(fā)展。
B/S已經(jīng)成為中國軟件業(yè)普遍接受的軟件結(jié)構(gòu)。在表現(xiàn)層,AJAX技術(shù)采用量較去年有較大提升,有將近一半的Web應(yīng)用采用了AJAX技術(shù),仍采用純HTML+少量腳本的Web應(yīng)用中,也有四分之三打算轉(zhuǎn)向采用AJAX技術(shù)。反觀微軟和Adobe力推的新一代RIA平臺(tái),則響應(yīng)者尚少。分別只有1/20和1/10的人愿意選用SilverLight和Flash/Flex作為Web表現(xiàn)層技術(shù)。
職業(yè)困境
老虎、Bill、自己,中國程序員的困境也來自三個(gè)方面
困境之一:老虎的威脅。程序員要面對(duì)的餓老虎實(shí)在不少,比如說老板,好象老板就是程序員的天敵,什么“不懂技術(shù)卻指手畫腳”、什么“得到與付出不相當(dāng)”似乎是程序員最常見的牢騷,這個(gè)問題不可能得到真正的解決。
困境之二:Bill的競爭。一般說來中國的程序員大都是吃“青春飯”的,大部分程序員的黃金時(shí)代是24~28歲。到了30歲左右,一批又一批年輕程序員會(huì)給你帶來巨大的競爭壓力。首先由于軟件行業(yè)的飛速發(fā)展,很多自己以前學(xué)的東西逐漸升級(jí)換代,而許多程序員由于長期于工作,學(xué)習(xí)新知識(shí)的效率必然下降。其次自己干了幾年,薪水要求自然就高了,而年輕程序員工資又低、干活又快,當(dāng)然會(huì)成為老板的首選;第三,30歲基本都已經(jīng)成家了,要支撐家庭的生活負(fù)擔(dān),幾乎連從頭在來的勇氣都不會(huì)有了。中國的老話說“長江后浪推前浪、一代新人換舊人”,這個(gè)歷史的規(guī)律在軟件開發(fā)行業(yè)體現(xiàn)的尤其明顯和殘酷,很多程序員必然要面對(duì)的結(jié)果就是降薪乃至失業(yè)。
困境之三:自我的實(shí)力。都知道人最難戰(zhàn)勝的是自己,所以自我也就是程序員需要超越的最大障礙。大多程序員都把系統(tǒng)分析員和項(xiàng)目經(jīng)理作為自己的職業(yè)目標(biāo),但這些目標(biāo)的達(dá)成,需要個(gè)人素質(zhì)、市場(chǎng)機(jī)遇等多個(gè)方面的條件,太多的程序員就是在高不成、低不就的狀態(tài)中蹉跎了歲月。對(duì)于系統(tǒng)分析員,特別需要以下幾方面的素質(zhì):客戶需求分析能力、系統(tǒng)架構(gòu)與設(shè)計(jì)能力、模塊分解設(shè)計(jì)能力、項(xiàng)目流程控制能力、項(xiàng)目風(fēng)險(xiǎn)評(píng)估能力等,而對(duì)于項(xiàng)目經(jīng)理則更注重項(xiàng)目管理方面的能力如團(tuán)隊(duì)組織能力、溝通協(xié)調(diào)能力、分析問題解決問題的能力以及良好的職業(yè)道德等,而這些素質(zhì)和能力往往只能依靠程序員個(gè)人的學(xué)習(xí)和努力??吹皆絹碓蕉嗟某绦騿T開始學(xué)習(xí)項(xiàng)目管理的課程,真的有點(diǎn)為他們擔(dān)心,因?yàn)楝F(xiàn)在的項(xiàng)目管理培訓(xùn)只能停留在理論和考證的程度,既沒有素質(zhì)方面的訓(xùn)練,又缺少實(shí)際軟件開發(fā)項(xiàng)目的案例,學(xué)習(xí)的結(jié)果遠(yuǎn)遠(yuǎn)不能達(dá)到預(yù)期的效果。