軟件開(kāi)發(fā)是一個(gè)跨度很大的技術(shù)工作,在語(yǔ)言方面,有C,C++,Java,Ruby等等等等,在環(huán)境方面,又分嵌入式,桌面系統(tǒng),企業(yè)級(jí),WEB,基礎(chǔ)系統(tǒng),或是科學(xué)研究。但是,不管是什么的情況,總是有一些通用的基本職業(yè)技能。
這些最基本的職業(yè)技能通常決定了一個(gè)程序員的級(jí)別,能否用好這些技能,直接關(guān)系到了程序員的職業(yè)生涯。很多程序新手也是因?yàn)槿鄙?、達(dá)不到或是不熟悉在這些基本技能,所以,他們需要有老手帶,需要努力補(bǔ)齊這些技能。而高級(jí)程序員應(yīng)該非常熟悉這些基本技能,而且有能力勝任并帶領(lǐng)其他經(jīng)驗(yàn)不足的程序員。
下面這些基本職業(yè)技術(shù)可以用來(lái)做為對(duì)一個(gè)程序員的評(píng)估,很明顯,下面的這些技能都可以用來(lái)做面試。雖然,還有很多非技術(shù)的因素,但對(duì)于評(píng)估一個(gè)程序員的技術(shù)能力來(lái)說(shuō),其應(yīng)該是足夠的了。
下面是程序員所應(yīng)該具備的基本職業(yè)技能:
基本技能 | 技能描述 |
---|---|
閱讀代碼 | 這個(gè)技能需要程序員能夠具備讀懂已經(jīng)存在的代碼的能力,這樣的能力可以讓程序員分析程序的行為,了解程序,這樣才能和開(kāi)發(fā)團(tuán)隊(duì)一起工作,繼承維護(hù)或是改進(jìn)現(xiàn)有的程序。 |
編寫(xiě)程序 | 編寫(xiě)程序并不包括程序設(shè)計(jì)。不要以為編程是一件很簡(jiǎn)單的事情,很多程序員都認(rèn)為編程只需要懂得程序語(yǔ)言的語(yǔ)法,并把設(shè)計(jì)實(shí)現(xiàn)就可以了。但是這離編 寫(xiě)程序還遠(yuǎn)遠(yuǎn)不夠,使用什么樣的編碼風(fēng)格成為編寫(xiě)程序員最需要具備的基本技能。能否使用非常良好的編程風(fēng)格直接決寫(xiě)了程序員的級(jí)別。 |
軟件設(shè)計(jì) | 這一能力直接決定了需要吏用什么樣的代碼技術(shù)達(dá)到怎么樣的功能,而系統(tǒng)架構(gòu)設(shè)計(jì)直接決定了軟件的質(zhì)量、性能和可維護(hù)性。并不是所有的程序在這一方面都非常優(yōu)秀,但每個(gè)程序員都需要或多或少的明白和掌握這一基本技能。 |
熟悉軟件工程 | 每個(gè)程序員都應(yīng)該明白軟件工程是什么東西,都應(yīng)該知道,需求分析,設(shè)計(jì),編碼,測(cè)試,Release和維護(hù)這幾個(gè)階段。當(dāng)然,幾乎所有的人都知道 這些東西,但并不是每個(gè)人都很清楚這些東西?,F(xiàn)在很多高級(jí)程序員都會(huì)混淆“需求規(guī)格說(shuō)明書(shū)FS”和“概要設(shè)計(jì)HLD”。另外,程序員還需要知道一些軟件開(kāi) 發(fā)的方法論,比如:敏捷開(kāi)發(fā)或瀑布模型。 |
使用程序庫(kù)或框架 | 一個(gè)程序員需要學(xué)會(huì)使用已有的代碼,無(wú)論是標(biāo)論的程序庫(kù),或是第三方的,還是自己公司內(nèi)部的,都需要學(xué)會(huì)做。比如:C++中,需要學(xué)會(huì)使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用這些東西,可以讓你的工作事半功倍。 |
程序調(diào)試 | 程序調(diào)試是分析BUG和解決問(wèn)題最直接的能力。沒(méi)有人能夠保證程序?qū)懗鰜?lái)不用調(diào)試就可以運(yùn)行正常,也沒(méi)有人可以保證程序永遠(yuǎn)不會(huì)出BUG。所以,熟練使用調(diào)試器是一個(gè)程序員需要具備的基本技能。 |
使用IDE | 學(xué)會(huì)使用IDE工具也會(huì)讓你的工作事半功倍。比如,VC++,Emacs,Eclipse等等,并要知道這些IDE的長(zhǎng)處和短處。 |
使用版本控制 | 一定要學(xué)會(huì)使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代碼,怎么reverse,怎么利用版本控制工具維護(hù)不同版本的軟件。這是程序員需要明的的軟件配置管理中最重要的一塊。 |
單元測(cè)試 | 單元測(cè)試是每個(gè)程序都需要做的。很多單元測(cè)試也是需要編碼的。一定要學(xué)會(huì)在xUnit框架下進(jìn)行單元測(cè)試。比如JUnit, NUnit, CppUnit等等。 |
重構(gòu)代碼 | 每個(gè)程序員都需要有最基本的能力去重構(gòu)目前已有的代碼,使代碼達(dá)到最優(yōu)但卻不能影響任何的已有的功能。有一本書(shū)叫《軟件的重構(gòu)》,每個(gè)程序員都應(yīng)該讀一下。 |
自動(dòng)化編譯 | 程序員需要使用一個(gè)腳本,其能自動(dòng)化編程所有的工程和代碼,這樣,整個(gè)開(kāi)發(fā)團(tuán)隊(duì)可以不停地集成代碼,自動(dòng)化測(cè)試,自動(dòng)化部署,以及使用一些工具進(jìn)行靜態(tài)代碼分析或是自動(dòng)化測(cè)試。 |
當(dāng)然,還有很多的基本技術(shù)也是非常重要的,比如,與人的溝通能力,語(yǔ)言的表達(dá)能力,寫(xiě)作能力,團(tuán)隊(duì)協(xié)作能力,適應(yīng)變化的能力,時(shí)間管理能力,多任務(wù)處理能力,自我學(xué)習(xí)能力,故障處理能力,等等,等等,這里只是列舉了和技術(shù)相關(guān)的能力,這些是程序最最最基本的能力,只要是程序員就必需要有的能力。