第一篇:如何做一個(gè)程序員)
怎樣成為一名程序員的四個(gè)階段!!
怎樣成為一名程序員
通過(guò)以下4個(gè)階段的訓(xùn)練, 沒(méi)有任何編程基礎(chǔ)人就可以成為一名普通的程序員。
第一階段:掌握一種編程語(yǔ)言
學(xué)習(xí)內(nèi)容:學(xué)習(xí)任意一種主流的編程語(yǔ)言。例如C++語(yǔ)言。
學(xué)習(xí)目標(biāo):熟練掌握一種語(yǔ)言的語(yǔ)法和基本的編程技巧。
學(xué)習(xí)時(shí)間:3個(gè)月左右
注意事項(xiàng):編程語(yǔ)言和編程工具是兩回事情,編程語(yǔ)言是指C++、Basic、Object Pascal等
程序設(shè)計(jì)語(yǔ)言,它們是像漢語(yǔ)、英語(yǔ)一樣的抽象的語(yǔ)法規(guī)則,編程工具是指
Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代碼編輯器、程序編譯器在內(nèi)的集成化、可視化的軟件開(kāi)發(fā)工具。C++源程序可以在Visual C++ 6.0里編寫(xiě),也可以在記事本里編寫(xiě),而同一個(gè)C++源程序可以用Visual C++ 6.0編譯、執(zhí)行,也可以用C++ Builder 5.0
編譯、執(zhí)行,所以: C++ 不等于 Visual C++ 6.0
第二階段:掌握一種編程工具
學(xué)習(xí)內(nèi)容:學(xué)習(xí)任意一種主流的編程工具。注意編程工具要和第一階段學(xué)習(xí)的編程語(yǔ)言一致,例如你學(xué)習(xí)的編程語(yǔ)言是C++,那么編程工具要選Visual C++ 6.0或者C++ Builder 5.0。
學(xué)習(xí)目標(biāo):熟練掌握這種編程工具基本用法,例如:菜單、組件、程序跟蹤調(diào)試、編寫(xiě)Windows程序等。
學(xué)習(xí)時(shí)間:3個(gè)月左右
注意事項(xiàng):這個(gè)階段側(cè)重編程工具的使用,同時(shí)進(jìn)一步熟習(xí)編程語(yǔ)言,最后達(dá)到能熟練編寫(xiě)各種基本的Windows程序。
第三階段:掌握“算法與數(shù)據(jù)結(jié)構(gòu)”這門(mén)課程
學(xué)習(xí)內(nèi)容:算法與數(shù)據(jù)結(jié)構(gòu),推薦許卓群的《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社出版。
學(xué)習(xí)目標(biāo):熟練掌握各種常用的算法與數(shù)據(jù)結(jié)構(gòu)
學(xué)習(xí)時(shí)間:4個(gè)月左右
注意事項(xiàng):這是一門(mén)不可或缺的軟件開(kāi)發(fā)課程,曾經(jīng)有一本經(jīng)典計(jì)算機(jī)專業(yè)書(shū)籍叫做《數(shù)據(jù)結(jié)構(gòu)+算法=程序》,這說(shuō)明了數(shù)據(jù)結(jié)構(gòu)和算法的重要性。它能幫我們建立良好的程序分析與設(shè)計(jì)能力。
第四階段:實(shí)現(xiàn)一個(gè)模擬的小型軟件項(xiàng)目
學(xué)習(xí)內(nèi)容:軟件項(xiàng)目的開(kāi)發(fā)過(guò)程
學(xué)習(xí)目標(biāo):掌握軟件項(xiàng)目的基本開(kāi)發(fā)過(guò)程和方法
學(xué)習(xí)時(shí)間:4個(gè)月左右
注意事項(xiàng):自己完成一個(gè)模擬的小型軟件項(xiàng)目,強(qiáng)烈推薦做一個(gè)MIS(管理信息系統(tǒng))軟件,參考用書(shū)推薦
“中小型信息管理系統(tǒng)開(kāi)發(fā)實(shí)例系列叢書(shū)”,人民郵電出版社,它的例子詳實(shí)有效,以它為基礎(chǔ)再加以擴(kuò)展,就可以做出實(shí)用的MIS軟件來(lái)。
此叢書(shū)包括多種開(kāi)發(fā)工具,大家可以選擇適合自己的:《VISUAL FOXPRO6.0 數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》
《JAVA數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》 《VISUAL BASIC數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》《VISUAL C++6.0數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》 《ASP.NET數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》
《DELPHI數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》 《POWERBUILDER 8.0數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》。
最后將完成的模擬軟件刻成光盤(pán),作為自己的作品去面試,以此踏上自己光輝的職業(yè)程序員之路!
祝大家一路順風(fēng)!
第二篇:做一個(gè)好程序員
成為一個(gè)好程序員
有些人想成為一個(gè)程序員,總是在網(wǎng)絡(luò)上問(wèn)或者求助大家如何做,怎么做,其實(shí)也有些東西是實(shí)踐中才會(huì)得到真正意義上的知識(shí),而不是一味談什么理論,當(dāng)然理論也重要
1.做出個(gè)東西
找個(gè)東西/項(xiàng)目,直接開(kāi)始做。
想進(jìn)入編程這一行業(yè)的人開(kāi)始時(shí)總是試圖先學(xué)會(huì)一門(mén)語(yǔ)言。這種方法是 低效的。找一個(gè)項(xiàng)目或一個(gè)小功能軟件去做,針對(duì)性的學(xué)習(xí)那些需要完成這個(gè)任務(wù)必須具備的知識(shí)技能。這種學(xué)法讓你有了一個(gè)學(xué)習(xí)的環(huán)境和目標(biāo),逼迫你去具有創(chuàng) 造力。有些最有價(jià)值的知識(shí)會(huì)來(lái)自解決那些之前沒(méi)有人解決過(guò)的獨(dú)特問(wèn)題。這個(gè)過(guò)程是辛苦的,但要的就是你的堅(jiān)持。
2.傳教
傳教,這能激發(fā)你去深入研究某項(xiàng)知識(shí)技能,會(huì)讓你發(fā)現(xiàn)自己在某些知識(shí)上其實(shí)很爛。
因?yàn)槲蚁雽W(xué)習(xí)AngularJS,于是我就是做了一個(gè)Twitter游戲教程。傳教能夠讓你幫助他人,同時(shí)滿足你求知欲,并提升你的價(jià)值。
3.結(jié)伴
結(jié)伴編程是最快的學(xué)習(xí)別人分享的知識(shí)的方法。你吸取他們的知識(shí),工作方式,以及問(wèn)題解決策略,無(wú)需費(fèi)力用自己的親身體驗(yàn)去獲取它們。
通過(guò)和其他程序員一起編程,我的技能有了快速的提高,但你不能就此而止。通過(guò)做一些個(gè)人項(xiàng)目,你能擴(kuò)展那些分享到的知識(shí),并能給你的團(tuán)隊(duì)帶來(lái)新鮮的思想。
來(lái)源于http:///news/39463/3-ways-to-become-a-better-developer?from=20130414
第三篇:做一個(gè)真正合格的程序員
作為一個(gè)真正合格的程序員,或者說(shuō)就是可以真正合格完成一些代碼工作的程序員,應(yīng)該具有的素質(zhì)。
1:團(tuán)隊(duì)精神和協(xié)作能力
把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過(guò)組成強(qiáng)大的團(tuán)隊(duì)來(lái)創(chuàng)造奇跡,那些遍布全球的為linux寫(xiě)核心的高手們,沒(méi)有協(xié)作精神是不可想象的。一旦進(jìn)入系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),缺乏這種素質(zhì)的人是不合格的。
2:文檔習(xí)慣
說(shuō)高水平程序員從來(lái)不寫(xiě)文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫(xiě)技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來(lái)的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫(xiě)習(xí)慣
代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫(xiě)習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。有些coding fans叫囂高水平程序員寫(xiě)的代碼旁人從來(lái)看不懂,這種叫囂只能證明他們自己?根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。沒(méi)有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,研發(fā)之間的協(xié)作是絕對(duì)不可想的。
4:需求理解能力
程序員需要理解一個(gè)模塊的需求,很多程序員寫(xiě)程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開(kāi)發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營(yíng)中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。5:復(fù)用性,模塊化思維能力
經(jīng)??梢月?tīng)到一些程序員有這樣的抱怨,寫(xiě)了幾年程序,變成了熟練工,每天都是重復(fù)寫(xiě)一些沒(méi)有任何新意的代碼,這其實(shí)是中國(guó)軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡(jiǎn)單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過(guò)簡(jiǎn)單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開(kāi)發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過(guò)程中都考慮到這些問(wèn)題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。一些好的程序模塊代碼,即便是70年代寫(xiě)成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在很多軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫(xiě),大部分重復(fù)性工作無(wú)謂的浪費(fèi)了時(shí)間和精力,這是我們應(yīng)當(dāng)刻意克服的弊病。
6:測(cè)試習(xí)慣
作為一些正規(guī)化的開(kāi)發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說(shuō)有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè);軟件研發(fā)作為一項(xiàng)工程而言,一個(gè)很重要的特點(diǎn)就是問(wèn)題發(fā)現(xiàn)的越早,解決的代價(jià)就越低,程序員在每段代碼,每個(gè)子模塊完成后進(jìn)行認(rèn)真的測(cè)試,就可以盡量將一些潛在的問(wèn)題最早的發(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)和解決問(wè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ǎng)起來(lái)。
具備以上全部素質(zhì)的人,應(yīng)當(dāng)說(shuō)是夠格的程序員了,請(qǐng)注意以上的各種素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問(wèn)題。
高級(jí)程序員,以至于系統(tǒng)分析員,也就是對(duì)于一個(gè)程序項(xiàng)目的設(shè)計(jì)者而言,除了應(yīng)該具備上述全部素質(zhì)之外,需具備以下素質(zhì):
第一,需求分析能力
對(duì)于程序員而言,理解需求就可以完成合格的代碼,但是對(duì)于研發(fā)項(xiàng)目的組織和管理者,他們不但要理解客戶需求,更多時(shí)候還要自行制定一些需求,為什么這么說(shuō)呢?一般而言,進(jìn)行研發(fā)任務(wù),也許是客戶提出需求,也許是市場(chǎng)和營(yíng)銷(xiāo)部門(mén)提出的需求,這時(shí)候?qū)τ谘邪l(fā)部門(mén),他們看到的不是一個(gè)完整的需求,通常而言,該需求僅僅是一些功能上的要求,或者更正規(guī)些,可能獲得一個(gè)完整的用戶視圖;但是這都不夠,因?yàn)榭蛻粲捎诜羌夹g(shù)因素多一些,他們可能很難提出完整和清晰,或者說(shuō)專業(yè)性的性能需求,但是對(duì)于項(xiàng)目組織者和規(guī)劃者,他必須能夠清醒認(rèn)識(shí)到這些需求的存在并在完成需求分析報(bào)告的時(shí)候適當(dāng)?shù)奶岢?,同時(shí)要完整和清晰的體現(xiàn)在設(shè)計(jì)說(shuō)明書(shū)里面,以便于程序員編碼時(shí)不會(huì)失去這些準(zhǔn)則。程序設(shè)計(jì)者必須正確理解用戶需求所處的環(huán)境,并針對(duì)性做出需求的分析,舉例而言,同樣一個(gè)軟件通過(guò)ASP租用方式發(fā)布和通過(guò)License方式發(fā)布,性能需求可能就是有區(qū)別的,前者強(qiáng)調(diào)的是更好的支撐能力和穩(wěn)定性,而后者則可能更強(qiáng)調(diào)在各種平臺(tái)下的普適性和安裝使用的簡(jiǎn)捷性。第二,項(xiàng)目設(shè)計(jì)方法和流程處理能力
程序設(shè)計(jì)者必須能夠掌握不少于兩到三種的項(xiàng)目設(shè)計(jì)方法(比如自頂至下的設(shè)計(jì)方法,比如快速原型法等等),并能夠根據(jù)項(xiàng)目需求和資源搭配來(lái)選擇合適的設(shè)計(jì)方法進(jìn)行項(xiàng)目的整體設(shè)計(jì)。設(shè)計(jì)方法上選擇不當(dāng),就會(huì)耽誤研發(fā)周期,浪費(fèi)研發(fā)資源,甚至影響研發(fā)效果。一個(gè)程序設(shè)計(jì)者還需要把很多功夫用在流程圖的設(shè)計(jì)和處理上,他需要做數(shù)據(jù)流圖以確立數(shù)據(jù)詞典;他需要加工邏輯流圖以形成整體的系統(tǒng)處理流程。一個(gè)流程有問(wèn)題的系統(tǒng),就算代碼多漂亮,每個(gè)模塊多精致,也不會(huì)成為一個(gè)好的系統(tǒng)。當(dāng)然,做好流程分析并選擇好項(xiàng)目設(shè)計(jì)方法,都需要在需求分析能力上具有足夠的把握。
第三,復(fù)用設(shè)計(jì)和模塊化分解能力
這個(gè)似乎又是老調(diào)重談,前面基本素質(zhì)上不是已經(jīng)說(shuō)明了這個(gè)問(wèn)題嗎?作為一個(gè)從事模塊任務(wù)的程序員,他需要對(duì)他所面對(duì)的特定功能模塊的復(fù)用性進(jìn)行考慮,而作為一個(gè)系統(tǒng)分析人員,他要面對(duì)的問(wèn)題復(fù)雜的多,需要對(duì)整體系統(tǒng)按照一種模塊化的分析能力分解為很多
可復(fù)用的功能模塊和函數(shù),并針對(duì)每一模塊形成一個(gè)獨(dú)立的設(shè)計(jì)需求。舉個(gè)例子,好比是汽車(chē)生產(chǎn),最早每輛汽車(chē)都是獨(dú)立安裝的,每個(gè)部件都是量身定做的,但是后來(lái)不一樣了,機(jī)器化大生產(chǎn)了,一個(gè)汽車(chē)廠開(kāi)始通過(guò)流水線來(lái)生產(chǎn)汽車(chē),獨(dú)立部件開(kāi)始具有一定的復(fù)用性,在后來(lái)標(biāo)準(zhǔn)化成為大趨勢(shì),不同型號(hào),品牌甚至不同廠商的汽車(chē)部件也可以進(jìn)行方便的換裝和升級(jí),這時(shí)候,汽車(chē)生產(chǎn)的效率達(dá)到最大化。軟件工程也是同樣的道理,一個(gè)成熟的軟件行業(yè),在一些相關(guān)項(xiàng)目和系統(tǒng)中,不同的部件是可以隨意換裝的,比如微軟的許多桌面軟件,在很多操作模塊(如打開(kāi)文件,保存文件等等)都是復(fù)用的同一套功能模塊,而這些接口又通過(guò)一些類(lèi)庫(kù)提供給了桌面應(yīng)用程序開(kāi)發(fā)者方便掛接,這就是復(fù)用化的模塊設(shè)計(jì)明顯的一個(gè)佐證。將一個(gè)大型的,錯(cuò)綜復(fù)雜的應(yīng)用系統(tǒng)分解成一些相對(duì)獨(dú)立的,具有高度復(fù)用性的,并能僅僅依靠幾個(gè)參數(shù)完成數(shù)據(jù)聯(lián)系的模塊組合,是作為高級(jí)程序員和系統(tǒng)分析員一項(xiàng)最重要的工作,合適的項(xiàng)目設(shè)計(jì)方法,清晰的流程圖,是實(shí)現(xiàn)這一目標(biāo)的重要保證。
第四,整體項(xiàng)目評(píng)估能力
作為系統(tǒng)設(shè)計(jì)人員,必須能夠從全局出發(fā),對(duì)項(xiàng)目又整體的清醒認(rèn)識(shí),比如公司的資源配置
是否合理和到位,比如工程進(jìn)度安排是否能最大化體現(xiàn)效率又不至于無(wú)法按期完成。評(píng)估項(xiàng)目整體和各個(gè)模塊的工作量,評(píng)估項(xiàng)目所需的資源,評(píng)估項(xiàng)目可能遇到的困難,都需要大量的經(jīng)驗(yàn)積累,換言之,這是一種不斷總結(jié)的累計(jì)才能達(dá)到的境界。在西方一些軟件系統(tǒng)設(shè)計(jì)的帶頭人都是很年長(zhǎng)的,比如4,50歲,甚至更老,他們?cè)诰幋a方面已經(jīng)遠(yuǎn)遠(yuǎn)不如年輕人那么活絡(luò),但是就項(xiàng)目評(píng)估而言,他們幾十年的經(jīng)驗(yàn)積累就是最重要和寶貴的財(cái)富。中國(guó)缺這么一代程序員,主要還不是缺那種年紀(jì)的程序員,而是那種年紀(jì)的程序員基本上都是研究單位作出來(lái)的,都不是從專業(yè)的產(chǎn)品化軟件研發(fā)作出來(lái)的,他們沒(méi)有能積累那種產(chǎn)品化研發(fā)的經(jīng)驗(yàn),這也是沒(méi)有辦法的事情。
第五,團(tuán)隊(duì)組織管理能力
完成一個(gè)項(xiàng)目工程,需要團(tuán)隊(duì)的齊心協(xié)力,作為項(xiàng)目設(shè)計(jì)者或研發(fā)的主管人,就應(yīng)當(dāng)有能力最大化發(fā)揮團(tuán)隊(duì)的整體力量,技術(shù)管理由于其專業(yè)性質(zhì),不大同于一般的人事管理,因?yàn)檫@
里面設(shè)計(jì)了一些技術(shù)性的指標(biāo)和因素。首先是工作的量化,沒(méi)有量化就很難做到合適的績(jī)效考核,而程序量化又不是簡(jiǎn)單的代碼行數(shù)可以計(jì)算的,因此要求技術(shù)管理人員需要能真正評(píng)估一個(gè)模塊的復(fù)雜性和工作量。其次是對(duì)團(tuán)隊(duì)協(xié)作模式的調(diào)整,一般而言,程序開(kāi)發(fā)的協(xié)作通常分為小組進(jìn)行,小組有主程序員方式的,也有民主方式的,根據(jù)程序員之間的能力水平差距,以及根據(jù)項(xiàng)目研發(fā)的需求,選擇合適的組隊(duì)方式,并能將責(zé)權(quán)和成員的工作任務(wù)緊密結(jié)合,這樣才能最大發(fā)揮組隊(duì)的效率。一個(gè)代碼水平高的人,未必能成為一個(gè)合格的項(xiàng)目研發(fā)主管,這方面的能力欠缺往往是容易被忽視的。
綜上可以看到,作為一個(gè)主管研發(fā)的負(fù)責(zé)人,一個(gè)項(xiàng)目設(shè)計(jì)者,所需要具備的素質(zhì)和能力并不是程序代碼編寫(xiě)的能力,當(dāng)然一般情況下,一個(gè)程序員通過(guò)不斷的總結(jié)提高達(dá)到了這種素質(zhì)的時(shí)候,他所具有的代碼編寫(xiě)能力也已經(jīng)相當(dāng)不簡(jiǎn)單了,但是請(qǐng)注意這里面的因果關(guān)系,一個(gè)高水平的項(xiàng)目設(shè)計(jì)者通常已經(jīng)是代碼編寫(xiě)相當(dāng)優(yōu)秀的人了,但是并不是一個(gè)代碼相當(dāng)優(yōu)秀的程序員就可以勝任項(xiàng)目設(shè)計(jì)的工作,這里面存在的也不是智商和課本的問(wèn)題,還是在于一個(gè)程序員在積累經(jīng)驗(yàn),逐步提升的時(shí)候沒(méi)有意識(shí)到應(yīng)當(dāng)思考哪方面的東西,沒(méi)有有意識(shí)的就項(xiàng)目的組織和復(fù)用設(shè)計(jì)進(jìn)行揣摩,沒(méi)有經(jīng)常性的文檔習(xí)慣和總結(jié)習(xí)慣,不改變這些,我們的合格的項(xiàng)目設(shè)計(jì)者還是非常欠缺。
第四篇:java程序員應(yīng)該如何做一個(gè)合格的程序員
致剛?cè)腴T(mén)的程序員五點(diǎn)建議
每個(gè)IT企業(yè),尤其是初創(chuàng)企業(yè),非??鄲溃赫也坏胶玫某绦騿T?,F(xiàn)在大學(xué)、軟件學(xué)院及各種培訓(xùn)機(jī)構(gòu),每年培養(yǎng)幾十萬(wàn)的程序員,畢業(yè)的每個(gè)人都有同樣困惱:找不到好的工作。問(wèn)題出在哪里呢?其實(shí),企業(yè)需要的是不是剛會(huì)寫(xiě)程序的人,需要來(lái)了就能干活的人,尤其能把活干好的人。而剛畢業(yè)的大學(xué)生多半剛學(xué)會(huì)如何寫(xiě)程序,的確很難企業(yè)需求。
企業(yè)到底需要什么樣的程序員,一個(gè)剛?cè)腴T(mén)的程序員如何成為企業(yè)需要的高手呢?還有很多程序員問(wèn)我,“我需要具備什么樣的能力就可以去創(chuàng)業(yè)?”我一直在琢磨類(lèi)似的問(wèn)題。我自己寫(xiě)過(guò)十年程序,也在金山管理過(guò)一千多人的研發(fā)隊(duì)伍,最近也在做天使投資,仔細(xì)總結(jié)了如下五點(diǎn)建議與所有程序員分享。
建議
一、只有真正喜歡才能寫(xiě)好程序
喜歡寫(xiě)程序,做程序員就是上天堂;
不喜歡寫(xiě)程序,做程序員就是下地獄。
程序員需要整天趴在電腦前,經(jīng)常沒(méi)日沒(méi)夜的,非常辛苦,而且工作來(lái)不得半點(diǎn)虛假,少寫(xiě)一個(gè)標(biāo)點(diǎn)符號(hào)都不行。喜歡的人,日子過(guò)得非常開(kāi)心,每寫(xiě)一行代碼,都會(huì)有新的成就,尤其當(dāng)自己的作品被廣泛應(yīng)用的時(shí)候,那種自豪感油然而起。不喜歡的人,坐在電腦前極端無(wú)聊,被進(jìn)度壓得喘不過(guò)氣來(lái),天天為找bug改bug生氣。
只有喜歡,只有熱愛(ài),才能把程序?qū)懞茫?/p>
我建議不喜歡寫(xiě)程序的人早點(diǎn)轉(zhuǎn)行,不要勉強(qiáng)自己,免得誤人誤己。
建議
二、把程序當(dāng)藝術(shù)品,象寫(xiě)詩(shī)一樣來(lái)寫(xiě)代碼
現(xiàn)在很少有公司做 codeview
(對(duì)寫(xiě)好的程序做代碼級(jí)檢查),于是很多人在進(jìn)度的壓力下潦草應(yīng)付,只要測(cè)試通過(guò)就算搞定。表面上看,開(kāi)發(fā)速度很快,進(jìn)度有保障;但實(shí)際上,這樣的程序連開(kāi)發(fā)者自己都很難讀懂,一旦有bug,很難調(diào)試,將來(lái)維護(hù)升級(jí)都非常困難。這樣的代碼多半只能重寫(xiě),浪費(fèi)自然嚴(yán)重。
如果每個(gè)人寫(xiě)程序的時(shí)候當(dāng)藝術(shù)品來(lái)寫(xiě),寫(xiě)每行都認(rèn)認(rèn)真真、干干凈凈的,雖然速度略微慢了一點(diǎn),但綜合的開(kāi)發(fā)成本會(huì)低很多。
如何寫(xiě)象詩(shī)一樣美的代碼呢?方法也很簡(jiǎn)單。
一、買(mǎi)幾本經(jīng)典的編程書(shū),把書(shū)上所有例程全部重新寫(xiě)一遍,逐個(gè)比較和書(shū)上范例的差距,一步一步改善自己編程的風(fēng)格和技巧。時(shí)間長(zhǎng)了,自然就能寫(xiě)出象書(shū)上例程一樣的代碼,甚至可以比書(shū)上寫(xiě)得好。
二、基礎(chǔ)扎實(shí)后,多看看Linux
等系統(tǒng)級(jí)的源代碼,看看高手是如何寫(xiě)的,就有感覺(jué)了。
三、通讀一下MSDN中所有的資料,這樣,“讀書(shū)破萬(wàn)卷,下筆如有神”。
還有,一定要牢記軟件工程的鐵律:可能出錯(cuò)的地方一定會(huì)出錯(cuò)。每個(gè)變量都做初始化,引用每個(gè)參數(shù)都會(huì)做有效性檢查,在可能出錯(cuò)的每個(gè)地方都會(huì)做邊界條件檢查,這樣開(kāi)發(fā)出來(lái)的程序一定會(huì)穩(wěn)固很多,就是出錯(cuò)也會(huì)很容易修改。野路子出來(lái)的高手,一般開(kāi)發(fā)速度很快,但做完后bug很多,經(jīng)常需要很長(zhǎng)時(shí)間修改。而真正的高手,追求的境界是
bugfree code(零缺陷代碼)。
建議
三、必須寫(xiě)夠十萬(wàn)行代碼,不要心存僥幸
程序員象木工一樣,熟能生巧。程序員必須寫(xiě)足夠代碼量的程序,才會(huì)有感覺(jué),這是一個(gè)苦力活,沒(méi)有任何捷徑可走。
計(jì)算機(jī)是一門(mén)實(shí)踐性的科學(xué),沒(méi)有動(dòng)手能力做支撐,很難做出好的科研成果。我的一個(gè)學(xué)長(zhǎng)是美國(guó)卡內(nèi)基梅隆大學(xué)的博士,卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)系在全世界非常出名,他說(shuō)每個(gè)博士生必須寫(xiě)十萬(wàn)行代碼才能畢業(yè),卡內(nèi)基梅隆大學(xué)博士進(jìn)任何一個(gè)大企業(yè)基本不用面試。而國(guó)內(nèi)培養(yǎng)大部分的研究生、博士生,動(dòng)手能力都偏弱。
沒(méi)有寫(xiě)過(guò)足夠代碼量的,想成為高手是不可能的,只能紙上談兵!
建議
四、時(shí)刻保持好奇心
計(jì)算機(jī)技術(shù)更新?lián)Q代非???,每年都有各種各樣的新技術(shù)出現(xiàn)。在我過(guò)去的職業(yè)生涯中,僅編程語(yǔ)言,我就用過(guò) basic, masm,pascal, c++, vba, Delphi, java
等。需要時(shí)刻保持好奇心,不斷學(xué)習(xí)各種新的東西,才能在未來(lái)的幾十年職業(yè)生涯中不落伍。你要理解為什么 iPhone
出來(lái)很多高手用iPhone,現(xiàn)在一天到晚惦記著換部 gPhone 玩玩。
人的精力有效,高手往往工作壓力也比較大,如何在有限的時(shí)間內(nèi)掌握整個(gè)行業(yè)動(dòng)態(tài),的確是一個(gè)不簡(jiǎn)單的事情。我的經(jīng)驗(yàn)是經(jīng)常看業(yè)內(nèi)的各種技術(shù)雜志,參加各種聚會(huì),可以節(jié)約很多時(shí)間。最重要的是,交幾個(gè)博學(xué)的技術(shù)高手,多和他們交流,一定獲益匪淺!
建議
五、不要局限在技術(shù)本身,多花點(diǎn)精力關(guān)注用戶
做到前面幾條,就已經(jīng)是千金難求的高手了。但一個(gè)真正的高手需要知道用戶需要什么,如何做出讓用戶滿意的產(chǎn)品。
現(xiàn)在的軟件研發(fā)越來(lái)越強(qiáng)烈團(tuán)隊(duì)協(xié)作,不少團(tuán)隊(duì)都配置了專門(mén)的需求分析的工程師、用戶界面及用戶體驗(yàn)的設(shè)計(jì)師,軟件研發(fā)的分工越來(lái)越細(xì)。很多程序員以為只要把技術(shù)搞好,不用管用戶需求和用戶體驗(yàn)。實(shí)際上,需求方案及界面方案不可能寫(xiě)得非常細(xì),具體的實(shí)施還是程序員自己來(lái)實(shí)現(xiàn)的。這個(gè)時(shí)候,好壞的差距很快就體現(xiàn)出來(lái)了。
我們寫(xiě)程序的最終目的是滿足用戶需求,不是簡(jiǎn)單完成需求規(guī)劃方案中的功能。所以,程序員一定要認(rèn)真揣摩用戶心理,能明白用戶的真實(shí)需求。
其次,怎么設(shè)計(jì)交互界面,讓用戶覺(jué)得好用,用起來(lái)舒服,這里面學(xué)問(wèn)很大。我舉一個(gè)小例子,每個(gè)程序窗口右上角都有三個(gè)按鈕,如最小化、關(guān)閉等。喬布斯覺(jué)得不好看,不易用,他提出改用紅綠藍(lán)的交通燈。這樣修改后,果然
Mac OS 漂亮和易用了很多。
目前互聯(lián)網(wǎng)和手機(jī)上的應(yīng)用開(kāi)發(fā),都非常強(qiáng)調(diào)小團(tuán)隊(duì)研發(fā)。這樣研發(fā)模式速度會(huì)快很多,但對(duì)程序員的綜合素質(zhì)的要求也就更高了。
我強(qiáng)烈建議程序員不要僅僅局限在技術(shù)本事,還需要多點(diǎn)精力考慮和用戶相關(guān)的問(wèn)題,學(xué)會(huì)洞察用戶的需求,并努力設(shè)計(jì)好用易用的產(chǎn)品。做著這點(diǎn)的程序高手,創(chuàng)業(yè)成算就很大了。
這些就是我說(shuō)的《創(chuàng)業(yè)十大標(biāo)準(zhǔn)》中提到的“技術(shù)過(guò)硬”要求。
這樣的技術(shù)高手,如果捕捉到合適的產(chǎn)品方向,并且具備一定帶團(tuán)隊(duì)的能力,創(chuàng)業(yè)成功機(jī)會(huì)很大!事實(shí)上,絕大部分創(chuàng)業(yè)的技術(shù)公司,創(chuàng)始人都是這樣的人!比如迅雷的鄒勝龍和程浩,UCWEB的何小鵬和梁捷等。
第五篇:程序員(范文模版)
作業(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證書(shū)/資格證書(shū)
v工作條件:環(huán)境、壓力、工作時(shí)間、是否出差?
v聘用機(jī)構(gòu)
v對(duì)生活方式的影響
v性別構(gòu)成v聘用過(guò)程
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)是從事程序開(kāi)發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計(jì)人員和程序編碼員,但兩者的界限并不非常清楚,特別是在中國(guó)。軟件從業(yè)人員分為初級(jí)程序員、高級(jí)程序員、系統(tǒng)分析員和項(xiàng)目經(jīng)理四大類(lèi)的方法。
崗位職責(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、熟悉并熟練掌握交付軟件部開(kāi)發(fā)的軟件項(xiàng)目的相關(guān)軟件技術(shù)。
5、負(fù)責(zé)向項(xiàng)目經(jīng)理及時(shí)反饋軟件開(kāi)發(fā)中的情況,并根據(jù)實(shí)際情況提出改進(jìn)建議。
6、參與軟件開(kāi)發(fā)和維護(hù)過(guò)程中重大技術(shù)問(wèn)題的解決,參與軟件首次安裝調(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)。
一、通過(guò)國(guó)家統(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í)水平考試者無(wú)學(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這樣的天才,也需要通過(guò)組成強(qiáng)大的團(tuán)隊(duì)來(lái)創(chuàng)造奇跡,那些遍布全球的為linux寫(xiě)核心的高手們,沒(méi)有協(xié)作精神是不可想象的。一旦進(jìn)入系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),缺乏這種素質(zhì)的人是不合格的。
2:文檔習(xí)慣
說(shuō)高水平程序員從來(lái)不寫(xiě)文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫(xiě)技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來(lái)的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫(xiě)習(xí)慣
代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫(xiě)習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。有些codingfans叫囂高水平程序員寫(xiě)的代碼旁人從來(lái)看不懂,這種叫囂只能證明他們自己?根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。沒(méi)有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,研發(fā)之間的協(xié)作是絕對(duì)不可想的。
4:需求理解能力
程序員需要理解一個(gè)模塊的需求,很多程序員寫(xiě)程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開(kāi)發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營(yíng)中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。
5:復(fù)用性,模塊化思維能力
經(jīng)??梢月?tīng)到一些程序員有這樣的抱怨,寫(xiě)了幾年程序,變成了熟練工,每天都是重復(fù)寫(xiě)一些沒(méi)有任何新意的代碼,這其實(shí)是中國(guó)軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡(jiǎn)單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過(guò)簡(jiǎn)單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開(kāi)發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過(guò)程中都考慮到這些問(wèn)題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。
一些好的程序模塊代碼,即便是70年代寫(xiě)成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在很多軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫(xiě),大部分重復(fù)性工作無(wú)謂的浪費(fèi)了時(shí)間和精力,這是我們應(yīng)當(dāng)刻意克服的弊病。
6:測(cè)試習(xí)慣
作為一些正規(guī)化的開(kāi)發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說(shuō)有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè);軟件研發(fā)作為一項(xiàng)工程而言,一個(gè)很重要的特點(diǎn)就是問(wèn)題發(fā)現(xiàn)的越早,解決的代價(jià)就越低,程序員在每段代碼,每個(gè)子模塊完成后進(jìn)行認(rèn)真的測(cè)試,就可以盡量將一些潛在的問(wèn)題最早的發(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)和解決問(wè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ǎng)起來(lái)。
具備以上全部素質(zhì)的人,應(yīng)當(dāng)說(shuō)是夠格的程序員了,請(qǐng)注意以上的各種素質(zhì)都不是由IQ決定的,也不是大學(xué)某些課本里可以學(xué)習(xí)到的,需要的僅僅是程序員對(duì)自己工作的認(rèn)識(shí),是一種意識(shí)上的問(wèn)題。
作為高級(jí)程序員,乃至于設(shè)計(jì)師而言,除了應(yīng)該具備上述全部素質(zhì)之外,還需要具備以下素質(zhì):
1、需求分析能力
2、整體框架能力
3、流程處理能力
4、模塊分解能力
5、整體項(xiàng)目評(píng)估能力
6、團(tuán)隊(duì)組織管理能力
世界上第一位程序員是英國(guó)著名詩(shī)人拜倫的女兒AdaLovelace曾設(shè)計(jì)了巴貝奇分析機(jī)上解伯努利方程的一個(gè)程序。她甚至還建立了循環(huán)和子程序的概念。由于她在程序設(shè)計(jì)上的開(kāi)創(chuàng)性工作,AdaLovelace被稱為世界上第一位程序員。美國(guó)國(guó)防部開(kāi)發(fā)的ADA語(yǔ)言就是為紀(jì)念這位世界上的第一位程序員而命名的。
計(jì)算機(jī)科學(xué)發(fā)展到今天(21世紀(jì)初期),程序員從事的人群很多,分工也不相同,從大的方面可以分為以下幾類(lèi):
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é)可以提供,但是也需要一些別的途徑來(lái)提供相關(guān)的人才。盡管學(xué)歷是比較重要的,但是公司經(jīng)常把重點(diǎn)放在應(yīng)聘者的工作經(jīng)驗(yàn)上,很多剛從大學(xué)畢業(yè)的大學(xué)生雖然有引人注目的學(xué)位證書(shū),但是他們找不到工作是因?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)。
必備技能
熟練開(kāi)發(fā)工具
做為一名程序員至少熟練掌握兩到三種開(kāi)發(fā)工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點(diǎn)推薦的開(kāi)發(fā)工具,C/C++以其高效率和高度的靈活性成為開(kāi)發(fā)工具中的利器,很多系統(tǒng)級(jí)的軟件還是用C/C編寫(xiě)。而JAVA的跨平臺(tái)和與WEB很好的結(jié)合是JAVA的優(yōu)勢(shì)所在,而JAVA即其相關(guān)的技術(shù)集JAVAOne很可能會(huì)成為未來(lái)的主流開(kāi)發(fā)工具之一。其次,能掌握一種簡(jiǎn)便的可視化開(kāi)發(fā)工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開(kāi)發(fā)工具減小了開(kāi)發(fā)難度,并能夠強(qiáng)化程序員對(duì)象模型的概念。另外,需要掌握基本的腳本語(yǔ)言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知數(shù)據(jù)庫(kù)
為什么數(shù)據(jù)庫(kù)是如此重要?作為程序員,他們自然有自己的理由:很多應(yīng)用程序都是以數(shù)據(jù)庫(kù)的數(shù)據(jù)為中心,而數(shù)據(jù)庫(kù)的產(chǎn)品也有不少,其中關(guān)系型數(shù)據(jù)庫(kù)仍是主流形式,所以程序員至少熟練掌握一兩種數(shù)據(jù)庫(kù),對(duì)關(guān)系型數(shù)據(jù)庫(kù)的關(guān)鍵元素要非常清楚,要熟練掌握SQL的基本語(yǔ)法。雖然很多數(shù)據(jù)庫(kù)產(chǎn)品提供了可視化的數(shù)據(jù)庫(kù)管理工具,但SQL是基礎(chǔ),是通用的數(shù)據(jù)庫(kù)操作方法。如果沒(méi)有機(jī)會(huì)接觸商業(yè)數(shù)據(jù)庫(kù)系統(tǒng),可以使用免費(fèi)的數(shù)據(jù)庫(kù)產(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作為開(kāi)發(fā)源碼的操作系統(tǒng),是一個(gè)很好的學(xué)習(xí)的平臺(tái),Linux幾乎具備了所有現(xiàn)代操作系統(tǒng)的特征。雖然Windows系統(tǒng)的內(nèi)核實(shí)現(xiàn)機(jī)制的資料較少,但通過(guò)互聯(lián)網(wǎng)還是能獲取不少資料。懂得網(wǎng)絡(luò)協(xié)議TCP/IP。
在互聯(lián)網(wǎng)如此普及的今天,如果您還沒(méi)有對(duì)互聯(lián)網(wǎng)的支撐協(xié)議TCP/IP協(xié)議棧有很好的掌握,就需要迅速補(bǔ)上這一課,網(wǎng)絡(luò)技術(shù)已改變了軟件運(yùn)行的模式,從最早的客戶/服務(wù)器結(jié)構(gòu),到今天的WEBServices,再到未來(lái)的網(wǎng)格計(jì)算,這一切都離不開(kāi)以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ò)的無(wú)縫結(jié)合是必然趨勢(shì),軟件系統(tǒng)的位置無(wú)關(guān)性是未來(lái)計(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)上的“世界語(yǔ)”,是分布式計(jì)算的基石之一。
不要將軟件工程與CMM分開(kāi)
大型軟件系統(tǒng)的開(kāi)發(fā)中,工程化的開(kāi)發(fā)控制取代個(gè)人英雄主義,成為軟件系統(tǒng)成功的保證,一個(gè)編程高手并不一定是一個(gè)優(yōu)秀的程序員,一個(gè)優(yōu)秀的程序員是將出色的編程能力和開(kāi)發(fā)技巧同嚴(yán)格的軟件工程思想有機(jī)結(jié)合,編程只是軟件生命周期中的其中一環(huán),優(yōu)秀的程序員應(yīng)該掌握軟件開(kāi)發(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)沒(méi)有體會(huì)的話,只能說(shuō)明他或許是認(rèn)真工作過(guò),但是沒(méi)有用心工作。
模塊化思維能力
作為一個(gè)優(yōu)秀的程序員,他的思想不能在局限當(dāng)前的工作任務(wù)里面,要想想看自己寫(xiě)的模塊是否可以脫離當(dāng)前系統(tǒng)存在,通過(guò)簡(jiǎn)單的封裝在其他系統(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)今的軟件開(kāi)發(fā)已經(jīng)不是編程了,而是工程。獨(dú)行俠可以寫(xiě)一些程序也能賺錢(qián)發(fā)財(cái),但是進(jìn)入研發(fā)團(tuán)隊(duì),從事商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),就必須具備這種素質(zhì)??梢院敛豢鋸埖恼f(shuō)這種素質(zhì)是一個(gè)程序員乃至一個(gè)團(tuán)隊(duì)的安身立命之本。
文檔習(xí)慣
文檔是一個(gè)軟件系統(tǒng)的生命力。一個(gè)公司的產(chǎn)品再好、技術(shù)含量再高,如果沒(méi)有缺乏文檔,知識(shí)就沒(méi)有繼承,公司還是一個(gè)來(lái)料加工的軟件作坊。作為代碼程序員,必須將30%的工作時(shí)間寫(xiě)用于技術(shù)文檔。沒(méi)有文檔的程序員勢(shì)必會(huì)被淘汰。
規(guī)范化的代碼編寫(xiě)習(xí)慣
知名軟件公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫(xiě)習(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ù)人員無(wú)論學(xué)了多少語(yǔ)言,代碼寫(xiě)起來(lái)多熟練,只能說(shuō)他是一名熟練的代碼民工,他永遠(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í)精神。沒(méi)有比強(qiáng)烈的好奇心和學(xué)習(xí)精神更好的武器了,它是程序員們永攀高峰的源泉和動(dòng)力所在。
行業(yè)現(xiàn)狀
由CSDN、《程序員》主辦的2007年開(kāi)發(fā)者大調(diào)查2007年底已收到15000多份有效問(wèn)卷,已經(jīng)是中國(guó)調(diào)查樣本最多的開(kāi)發(fā)者調(diào)查。在這次調(diào)查中,詳細(xì)的分析了樣本空間的分布狀況,發(fā)
現(xiàn)在龐大數(shù)目的有效問(wèn)卷的參與者中有70%也就是接近一萬(wàn)一千名的參與調(diào)查者是IT的全職人員,14%的參與者是有過(guò)開(kāi)發(fā)工作經(jīng)驗(yàn)的學(xué)生,從這樣的分布就可以看出來(lái)IT從業(yè)人員對(duì)專業(yè)知識(shí)的需求是巨大而迫切的,CSDN作為專業(yè)的軟件開(kāi)發(fā)技術(shù)門(mén)戶網(wǎng)站,已經(jīng)是大家獲取這些技術(shù)知識(shí)的主要手段。
一、選擇數(shù)據(jù)庫(kù)技術(shù)和互聯(lián)網(wǎng)技術(shù)的人數(shù)總和占到了總?cè)藬?shù)的一半
2007年火熱的SOA和動(dòng)態(tài)語(yǔ)言各占13%和12%。其實(shí)這幾大塊技術(shù)分布他們之間都是有一定的聯(lián)系的,互聯(lián)網(wǎng)的發(fā)展近兩年呈爆炸式的增長(zhǎng)態(tài)勢(shì),中國(guó)的網(wǎng)民總數(shù)已經(jīng)超過(guò)了1.4億這樣一個(gè)巨大的數(shù)字。
企業(yè)中業(yè)務(wù)的復(fù)雜程度越來(lái)越高,商業(yè)競(jìng)爭(zhēng)不斷增加企業(yè)的IT系統(tǒng),使企業(yè)的商業(yè)數(shù)據(jù)呈幾何數(shù)量級(jí)不斷增長(zhǎng),在后臺(tái)海量的數(shù)據(jù)中數(shù)據(jù)的管理由之前的單一型數(shù)據(jù)變成了多緯度的復(fù)雜數(shù)據(jù),所以可以同時(shí)管理關(guān)系型數(shù)據(jù)庫(kù)和XML數(shù)據(jù)的混合型數(shù)據(jù)庫(kù)已經(jīng)成為主流。
面對(duì)企業(yè)不斷增加新的IT信息系統(tǒng),整合已經(jīng)迫在眉睫,SOA成為必然的趨勢(shì),企業(yè)對(duì)人才的需求從單一型技術(shù)人才、業(yè)務(wù)人才跳躍到了業(yè)務(wù)技術(shù)的復(fù)合型人才,這次的開(kāi)發(fā)人員大調(diào)查令《 程序員》雜志的調(diào)查者看到了這些技術(shù)焦點(diǎn)背后千絲萬(wàn)縷的關(guān)聯(lián)。
二、幾乎一半的.NET用戶不參與開(kāi)源項(xiàng)目RedHat+Ubuntu占有率超過(guò)70%
應(yīng)用到.NET平臺(tái)上的開(kāi)源項(xiàng)目,“大量使用”的比例數(shù)僅為8.68%,尚不足一成;“少量應(yīng)用”的開(kāi)發(fā)者人數(shù)比例為42.78%?!盎静挥谩钡谋壤哌_(dá)48.54%,與前二者之和幾乎不相上下。
雖然開(kāi)源的出現(xiàn)和發(fā)展,讓軟件沒(méi)有壟斷的未來(lái)日漸明朗;雖然開(kāi)源運(yùn)動(dòng)經(jīng)過(guò)多年的高速發(fā)展,現(xiàn)在已經(jīng)聚集了相當(dāng)?shù)牧α?,開(kāi)源的自由和給予理念逐漸深入到了企業(yè)的技術(shù)核心層面。但微軟以商業(yè)軟件為生,畢竟在微軟技術(shù)領(lǐng)域中,開(kāi)源項(xiàng)目通常都被看作是二等公民。很多開(kāi)源項(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)頁(yè)中搜索得到7,090,000條結(jié)果,RedHatFedora在調(diào)查中占據(jù)Linux版本的半壁江山符合整個(gè)Linux版本的分布情況。
排在第二位的是Ubuntu,受支持?jǐn)?shù)占到總數(shù)的23.92%;第三位的是SuSE占9.09%,接下來(lái)是Debian,使用率為5.92%。
在這里面令人期待的中國(guó)本土Linux的讓人大失所望。使用率僅占5.16%,幾乎只
有RedHatFedora的十分之一。
三、揭示八成技術(shù)人員數(shù)據(jù)庫(kù)選型標(biāo)準(zhǔn)SQLServer用戶接近50%
使用率占據(jù)榜首的數(shù)據(jù)庫(kù)產(chǎn)品是微軟的SQLServer,比例數(shù)達(dá)到了47.92%。與其余所有的數(shù)據(jù)庫(kù)之和分庭抗衡,大有一覽眾山小之勢(shì)。
從調(diào)查得到的使用率來(lái)看,MySQL仍處于望MSSQLServer項(xiàng)背的階段。調(diào)查顯示,MySQL的使用數(shù)為1651,占總數(shù)的13.80%,不過(guò)排名第三。
使用率排在第二位的是Oracle,比例達(dá)到24.21%。在前有SQLServer,后有MySQL的情況下,Oracle仍能達(dá)到四分之一的占有率,發(fā)展勢(shì)頭不可謂不強(qiáng)勁。
雖然Orcale數(shù)據(jù)庫(kù)的價(jià)格比SQLServer數(shù)據(jù)庫(kù)要高,但Oracle采用開(kāi)放的策略目標(biāo),可在所有主流平臺(tái)上運(yùn)行。而且有開(kāi)發(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ā)展。
四、中國(guó)程序員最?lèi)?ài)的智能手機(jī)平臺(tái)Linux+Java超過(guò)Symbian
“開(kāi)源Linux對(duì)于眾多開(kāi)發(fā)者的吸引力是巨大的,但是,這僅僅是針對(duì)于技術(shù)開(kāi)發(fā)人員來(lái)說(shuō)的,而對(duì)于普通消費(fèi)者就不是如此了。”在眾多開(kāi)發(fā)者心中,主要是對(duì)Linux的青睞。從調(diào)查結(jié)果中也可以直接反應(yīng)這樣的現(xiàn)象。有專家對(duì)此評(píng)論說(shuō):Linux+Java的模式,應(yīng)該是應(yīng)用最多的模式。
開(kāi)源Linux對(duì)于眾多開(kāi)發(fā)者的吸引力是巨大的,但是,這僅僅是針對(duì)于技術(shù)開(kāi)發(fā)人員來(lái)說(shuō)的,而對(duì)于普通消費(fèi)者就不是如此了。針對(duì)此問(wèn)題行業(yè)的專家有自己的觀點(diǎn):“現(xiàn)在Wince和Symbian發(fā)展很快,并且隨著手機(jī)硬件方面性能的提高,很多政府部門(mén)和企業(yè)在采購(gòu)時(shí),很多會(huì)考慮Dopod這樣的手機(jī),或者價(jià)格便Wince和Symbian都主要使用c++開(kāi)發(fā),正是嵌入式開(kāi)發(fā)的潮流?!?/p>
不同人群對(duì)于收集智能操作系統(tǒng)的觀點(diǎn)是不同的,對(duì)于開(kāi)發(fā)者角度,他們更加青睞于微軟和開(kāi)源Linux的產(chǎn)品,而普通大眾他們比較喜歡Wince和Symbian。五、七成程序員不愿意選擇門(mén)戶網(wǎng)站獲取開(kāi)源信息SourceForge占絕對(duì)優(yōu)勢(shì)
30%的技術(shù)人員從門(mén)戶網(wǎng)站獲取開(kāi)源技術(shù)信息,剩下的70%的技術(shù)人員都是從專業(yè)的開(kāi)源社區(qū)和開(kāi)源廠商的技術(shù)網(wǎng)站上獲取信息,包括有SourceForge、LinuxToday、OpenOffice和IBMdW等。
在這70%當(dāng)中,比例占有絕對(duì)優(yōu)勢(shì)的就是SourceForge了,這里是開(kāi)源軟件的開(kāi)發(fā)者進(jìn)行開(kāi)發(fā)管理的集中式場(chǎng)所,也是全球最大開(kāi)源軟件開(kāi)發(fā)平臺(tái)和倉(cāng)庫(kù)。而LinuxToday里面會(huì)有記錄很多很新的Linux業(yè)界大事,新聞以及出版信息。所以,對(duì)開(kāi)源技術(shù)感興趣的程序員們,不必再為如何獲取開(kāi)源信息而苦惱了,快加入到這70%的人群中來(lái)吧。
互聯(lián)網(wǎng)的發(fā)展已經(jīng)成為大家獲取信息最主要的渠道之一,網(wǎng)民上網(wǎng)的習(xí)慣也從開(kāi)始的上為數(shù)不多的幾個(gè)門(mén)戶網(wǎng)站發(fā)生了變化,大而全的門(mén)戶網(wǎng)站并不能滿足專業(yè)領(lǐng)域人員的信息需求,從2004年開(kāi)始陸續(xù)出現(xiàn)了大量的各個(gè)領(lǐng)域垂直細(xì)分的內(nèi)容網(wǎng)站,一方面有長(zhǎng)尾理論的理論支持,另一方面廠商也建立了相應(yīng)產(chǎn)品的技術(shù)內(nèi)容網(wǎng)站,希望能聚集一批專注于這個(gè)領(lǐng)域?qū)I(yè)人士,做好他們的定向營(yíng)銷(xiāo)。
做細(xì)分領(lǐng)域內(nèi)容的網(wǎng)站對(duì)門(mén)戶已經(jīng)造成了一定的威脅,這些網(wǎng)站的專業(yè)性高,用戶的粘性相對(duì)也比較高,如果細(xì)分領(lǐng)域的內(nèi)容網(wǎng)站能將自己的服務(wù)有所提升,就如同SourceForge一樣,那么未來(lái)門(mén)戶網(wǎng)站的路就變得更加崎嶇了。
六、Java開(kāi)發(fā)框架:6%的JSF欲撼動(dòng)21%的Struts
JSF現(xiàn)在比較有優(yōu)勢(shì)的是對(duì)Ajax的集成,這一點(diǎn)走在了其他框架的前面。未來(lái)兩
年,JSF與Struts將展開(kāi)JavaWeb框架的最終戰(zhàn)爭(zhēng)。經(jīng)過(guò)數(shù)年的“框架大戰(zhàn)”,Java界的各種框架找到了自己應(yīng)有的位置。Spring+Hibernate+Struts已成為Java開(kāi)發(fā)的主流體系。在這個(gè)體系中,Spring+Hibernate的地位應(yīng)該說(shuō)短期內(nèi)是難以撼動(dòng)了。除了新興的JbossSeam作為挑戰(zhàn)者之外,幾乎難有勁敵。
JavaB/S編程中歷來(lái)戰(zhàn)火最激烈的其實(shí)還在Web層,框架的數(shù)量最多,爭(zhēng)議最大。一切由Struts而起,而Struts最終也坐穩(wěn)了第一個(gè)時(shí)代的王座。在技術(shù)層面,Struts1.x已經(jīng)被無(wú)數(shù)人抱怨過(guò)、批評(píng)過(guò),但終于還是穩(wěn)坐王位,這充分說(shuō)明了習(xí)慣的力量。“穩(wěn)定壓倒一切”,這句話在IT技術(shù)領(lǐng)域仍舊適用。
詳細(xì)的分析了Java開(kāi)發(fā)框架的使用狀況,發(fā)現(xiàn)主要使用的開(kāi)發(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%的開(kāi)發(fā)者用到Struts,用到Hibernate的開(kāi)發(fā)者也有17%;在一個(gè)成熟的技術(shù)平臺(tái)上,各個(gè)項(xiàng)目的技術(shù)方案會(huì)在很大程度上趨同——因?yàn)樗形粗I(lǐng)域都已經(jīng)被探明,各種問(wèn)題都有對(duì)應(yīng)的最佳實(shí)踐,架構(gòu)師們可以參考的成功案例越來(lái)越多。就拿JavaEE來(lái)說(shuō),架構(gòu)師們需要考慮的問(wèn)題比之三年前已經(jīng)簡(jiǎn)單多了,這就是成熟的價(jià)值。
有專家評(píng)論:“其實(shí)IT應(yīng)用技術(shù),什么新鮮玩意并不難學(xué),難的是標(biāo)準(zhǔn)化和規(guī)范化。每個(gè)程序員都有自己的思路和習(xí)慣,寫(xiě)出來(lái)的代碼自然是五花八門(mén)。Java何以成為編程界的占重要地位,很重要的一點(diǎn)在于Java的規(guī)范化。這種規(guī)范化很高的語(yǔ)言適用于多人合作的大型項(xiàng)目,便于溝通和理解,也就便于集成和維護(hù)。Java世界為什么會(huì)框架橫飛,說(shuō)到底還是規(guī)范化的需要。純JSP和Struts寫(xiě)Web誰(shuí)快,擺明了是JSP。那為什么用Struts?原因在于100個(gè)人寫(xiě)出來(lái)的JSP,有100種寫(xiě)法;而100個(gè)人寫(xiě)出來(lái)的Struts,基本相似。Struts之成功,正緣于其在JavaWeb層的規(guī)范化方面所做出的貢獻(xiàn)。
然而長(zhǎng)江后浪推前浪,Struts1.x的技術(shù)缺陷畢竟是隱患。Sun力推JSF,打算一雪Web層框架缺失之恥。JSF現(xiàn)在比較有優(yōu)勢(shì)的是對(duì)Ajax的集成,這一點(diǎn)走在了其他框架的前面。未來(lái)兩年,JSF與Struts將展開(kāi)JavaWeb框架的最終戰(zhàn)爭(zhēng)。
JSP經(jīng)過(guò)幾年風(fēng)雨洗禮依然把持頭把交椅,看來(lái)所有的框架表示層都離不開(kāi)JSP而存在,而作為JSP的手足兄弟JSF也是僅次Spring之后又一個(gè)后起之秀。
七、C++開(kāi)發(fā)環(huán)境格局難打破75%的開(kāi)發(fā)人員首選VS系列
BCB正江河日下,2007版本的推出也無(wú)法力挽狂瀾。雖然現(xiàn)在C++Builder已經(jīng)歸于CodeGear,但人們還是習(xí)慣性地與Borland聯(lián)系上。
1998年Borland公司推出的C++Builder這一當(dāng)年全新的32位Windows開(kāi)發(fā)工
具,繼承了Delphi使用簡(jiǎn)便、功能強(qiáng)大、效率高的特點(diǎn),并且結(jié)合了C++語(yǔ)言幾乎所有優(yōu)點(diǎn)。所以開(kāi)始C++Builder迅速風(fēng)靡。它的主要競(jìng)爭(zhēng)對(duì)象——Microsoft開(kāi)發(fā)的VisualC++也是不甘示弱,迅速出擊,突出了Visual可視化強(qiáng)的特點(diǎn),加上Platform、SDK部分以及Microsoft產(chǎn)品與Windows的天然默契,逐漸成為了技術(shù)人員的首選。隨著VisualC++版本的不段升級(jí),以及功能、風(fēng)格等諸多原因,BCB漸現(xiàn)頹勢(shì),許多Builder使用者也開(kāi)始轉(zhuǎn)而使用Visual了。
在2007年CSDN、《程序員》主辦的開(kāi)發(fā)者大調(diào)查中,詳細(xì)的分析了C++方面大家主要使用什么IDE的狀況,在目前已收到的15000多份有效問(wèn)卷中,發(fā)現(xiàn)主要使用VS系列的占了75%,BorlandC++Builder/CBuilderX只占6%,EclipseCDT占6%,DevC++占2%,其他IDE占3%,不使用IDE占8%。對(duì)于.NET開(kāi)發(fā),VisualC++2005有了一套新的語(yǔ)法;新的優(yōu)化技術(shù),可使程序的速度最高提高30%;同時(shí)新的編譯模式,可保證在Microsoft.NETFramework之上生成完全遵從CLI(CommonLanguageInfrastructure)的可驗(yàn)證代碼;新的interop模式,可提供本地與托管代碼的無(wú)縫融合。
相對(duì)于前兩個(gè)版本,新編譯器還包括了一個(gè)增強(qiáng)版本的緩沖區(qū)安全檢查選項(xiàng),而且對(duì)C++程序普遍使用的庫(kù),也有新的注重安全的版本。VisualC++2005對(duì)基于IntelItanium和AMD64的64位平臺(tái),提供了對(duì)OpenMP標(biāo)準(zhǔn)的支持,并且修正了一些混合DLL加載的問(wèn)題,對(duì)DoubleP/Invoke的性能問(wèn)題,提供了自動(dòng)運(yùn)行時(shí)消除。相比之下,C++Builder2007英文版2008年6月初上市。從CodeGear大中華區(qū)技術(shù)總監(jiān)李維的博客,看到CodeGear對(duì)C++Builder2007的期待。雖然說(shuō)對(duì)同一件事情,每個(gè)人都有自己的視角,已有五年C++方面學(xué)習(xí)和開(kāi)發(fā)經(jīng)驗(yàn)的賴勇浩說(shuō)道:“BCB正江河日下,2007版本的推出也無(wú)法力挽狂瀾。雖然現(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)份額超過(guò)IE7.0兩倍
參與調(diào)查的多數(shù)是軟件開(kāi)發(fā)人員或者多數(shù)是IT從業(yè)人員,但是從這一比例不難看出,IE丟失掉了曾經(jīng)在瀏覽器大戰(zhàn)中占據(jù)了的技術(shù)優(yōu)勢(shì),在IE6推出后的5年時(shí)間里,瀏覽器一直在快速發(fā)展,而IE卻一直沒(méi)有更新過(guò),這對(duì)一個(gè)世界上最常用的產(chǎn)品來(lái)說(shuō)絕對(duì)是致命的。Firefox(火狐瀏覽器)以它的小巧、安全,很容易擴(kuò)展和定制的特長(zhǎng)獲得了越來(lái)越多的喜愛(ài)。
更重要的是,它是是一個(gè)自由的瀏覽器,所有的源代碼都是開(kāi)放的,任何人可以為它的成長(zhǎng)貢獻(xiàn)力量。Cookie、頁(yè)面緩存,個(gè)人都可以精確的控制,這些特性都是技術(shù)人員們所崇尚的“我的 地盤(pán)我做主”的精神。如果說(shuō)之前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í)到改變和向國(guó)際標(biāo)準(zhǔn)靠攏的重要性,這就直接導(dǎo)致了大量的技術(shù)人員失去了對(duì)IE的信心,投向FireFox陣營(yíng),不過(guò),微軟到底還是強(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)是要解決兼容問(wèn)題,而基于IE內(nèi)核的Maxthon和TT更主要的是要解決瀏覽器插件、工具的應(yīng)用問(wèn)題,所以,技術(shù)產(chǎn)品的激烈競(jìng)爭(zhēng)帶給用戶的其實(shí)是一種良性循環(huán),使我們可以第一時(shí)間用到最好用的工具,至于商業(yè)效應(yīng),還是留給廠商自己去考慮吧。
九、中國(guó)程序員健康兩成感覺(jué)很虛弱亞健康接近七成
“干得比驢累,吃得比豬差,起得比雞早,看上去比誰(shuí)都好,五年后比誰(shuí)都老。很多程
序員都曾這樣感慨和抱怨過(guò)自己的生活狀態(tài)?!?亞健康狀態(tài)是人體處于健康和疾病之間的過(guò)渡階段,在身體上、心理上沒(méi)有疾病,但主觀上卻有許多不適的癥狀表現(xiàn)和心理體驗(yàn)。
位于調(diào)查結(jié)果第二位的是“很虛弱”——149,比例為19.81%。很虛弱的健康指數(shù)低于亞健康,已接近生病和透支狀態(tài),他們的健康已經(jīng)被亮出了黃牌。
每個(gè)人的理解不一樣,但是“糟透了”這樣的詞如果用來(lái)形容程序員健康的話,相信大多數(shù)人都絕對(duì)認(rèn)同“你已經(jīng)病了”這樣的理解。令人不敢相信的是,竟然有8.24%的程序員用這個(gè)詞來(lái)形容自己的健康狀態(tài)!
調(diào)查結(jié)果中“非常健康”的票數(shù)低得可憐——40,即使算上“沒(méi)感覺(jué)”,二者之和也不過(guò)9.04%,幾乎跟“糟透了”持平。如果將“非常健康”和“沒(méi)感覺(jué)”一起算為健康的話,處于亞健康狀態(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)之無(wú)愧的主流平臺(tái),但JDK1.4仍保有一半以上的占有量??偟膩?lái)說(shuō),Java族群顯然不像.NET族群那樣追新。從另一個(gè)方面看,這也說(shuō)明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已是明日黃花,微軟的更新
換代策略可以說(shuō)是成功的。在Java領(lǐng)域,JDK5.0是當(dāng)之無(wú)愧的主流平臺(tái),但JDK1.4仍保有一半以上的占有量。總的來(lái)說(shuō),Java族群顯然不像.NET族群那樣追新。從另一個(gè)方面看,這也說(shuō)明Java平臺(tái)的成熟,和.NET平臺(tái)的迅速發(fā)展。
B/S已經(jīng)成為中國(guó)軟件業(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、自己,中國(guó)程序員的困境也來(lái)自三個(gè)方面
困境之一:老虎的威脅。程序員要面對(duì)的餓老虎實(shí)在不少,比如說(shuō)老板,好象老板就是程序員的天敵,什么“不懂技術(shù)卻指手畫(huà)腳”、什么“得到與付出不相當(dāng)”似乎是程序員最常見(jiàn)的牢騷,這個(gè)問(wèn)題不可能得到真正的解決。
困境之二:Bill的競(jìng)爭(zhēng)。一般說(shuō)來(lái)中國(guó)的程序員大都是吃“青春飯”的,大部分程序員的黃金時(shí)代是24~28歲。到了30歲左右,一批又一批年輕程序員會(huì)給你帶來(lái)巨大的競(jìng)爭(zhēng)壓力。首先由于軟件行業(yè)的飛速發(fā)展,很多自己以前學(xué)的東西逐漸升級(jí)換代,而許多程序員由于長(zhǎng)期于工作,學(xué)習(xí)新知識(shí)的效率必然下降。其次自己干了幾年,薪水要求自然就高了,而年輕程序員工資又低、干活又快,當(dāng)然會(huì)成為老板的首選;第三,30歲基本都已經(jīng)成家了,要支撐家庭的生活負(fù)擔(dān),幾乎連從頭在來(lái)的勇氣都不會(huì)有了。中國(guó)的老話說(shuō)“長(zhǎng)江后浪推前浪、一代新人換舊人”,這個(gè)歷史的規(guī)律在軟件開(kāi)發(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)能力、分析問(wèn)題解決問(wèn)題的能力以及良好的職業(yè)道德等,而這些素質(zhì)和能力往往只能依靠程序員個(gè)人的學(xué)習(xí)和努力??吹皆絹?lái)越多的程序員開(kāi)始學(xué)習(xí)項(xiàng)目管理的課程,真的有點(diǎn)為他們擔(dān)心,因?yàn)楝F(xiàn)在的項(xiàng)目管理培訓(xùn)只能停留在理論和考證的程度,既沒(méi)有素質(zhì)方面的訓(xùn)練,又缺少實(shí)際軟件開(kāi)發(fā)項(xiàng)目的案例,學(xué)習(xí)的結(jié)果遠(yuǎn)遠(yuǎn)不能達(dá)到預(yù)期的效果。