監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

合格程序員應(yīng)該具備哪12種能力?

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

文章來(lái)源:泛普軟件

1. 編程語(yǔ)言能力

不用多說(shuō),作為合格的程序員,精通一門語(yǔ)言是必須的。這種精通,不是說(shuō)看了一本《24小時(shí)精通XXX》,抄了幾個(gè)程序就能說(shuō)精通的,要靠長(zhǎng)時(shí)間的積累和浸淫。

2.編碼能力

我曾經(jīng)看多很多程序員寫的代碼,在同一個(gè)jsp或者java源文件里,出現(xiàn)了三種以上的對(duì)方法的命名方式,有下劃線間隔的,有全大寫的,有拼音首字母的。就像一個(gè)菜市場(chǎng),雜亂無(wú)比,估計(jì)10天后,他自己都無(wú)法看的懂。遵守編碼規(guī)范,是一個(gè)程序員最基本的要求,可悲的是,很多程序員根本沒(méi)有意識(shí)到這個(gè)問(wèn)題的嚴(yán)重性。隨意堆砌網(wǎng)上搜來(lái)的代碼,根本不管可讀性和可維護(hù)性,只要能實(shí)現(xiàn)功能就行了,心想做完這個(gè)項(xiàng)目,就拍拍屁股走人了,缺少最基本的職責(zé)素養(yǎng)。我經(jīng)常把代碼必須成程序員的孩子,你就是是孩子他爹,孩子他媽,是有感情的。對(duì)你自己的孩子,你能不仔細(xì)呵護(hù)嗎?你是稱職的父母嗎?

另外一個(gè)就是注釋,要注意不是為了注釋而注釋。對(duì)類,以說(shuō)明職責(zé)為主;對(duì)方法,以說(shuō)明意圖為主;對(duì)方法體,以說(shuō)明實(shí)現(xiàn)思路為主。對(duì)于大段大段的代碼,要分段,使用空行隔開(kāi),并使用行內(nèi)注釋進(jìn)行說(shuō)明。

思維的條理性,寫代碼之前,先簡(jiǎn)單計(jì)劃一下,用自然語(yǔ)言把流程寫下來(lái),用于整理實(shí)現(xiàn)思路。不要看了需求或設(shè)計(jì)之后,馬上就敲代碼了,敲完代碼馬上就debug?;c(diǎn)時(shí)間思考,敲代碼只是最后一個(gè)很簡(jiǎn)單的工作,不要把自己變成一個(gè)代碼打字員,編寫邊想,寫了刪,刪了寫。安安靜靜把實(shí)現(xiàn)過(guò)程想清楚,在腦子里先實(shí)現(xiàn)一遍。再去敲代碼,水到渠成。

3.面向?qū)ο笏季S能力

如今,多數(shù)編程語(yǔ)言都是面向?qū)ο蟮木幊陶Z(yǔ)言。而這些面向?qū)ο蟮木幊陶Z(yǔ)言的共同的精髓就是面向?qū)ο蟮乃枷?。掌握這些比面向?qū)ο笳Z(yǔ)言本身更重要,比如對(duì)繼承,多態(tài),重載的理解。對(duì)面向?qū)ο蠡驹瓌t的理解,比如開(kāi)閉原則,接口隔離原則,單一職責(zé)原則等。在此基礎(chǔ)上,應(yīng)該掌握常用的設(shè)計(jì)模式,比如工廠模式,策略模式,觀察者模式,模板方法模式,命令模式等等。我面試過(guò)很多程序員,沒(méi)有一個(gè)能說(shuō)得上幾句的。

4.利用工具能力

工欲善其事,必先利其器。有了趁手的家伙,工作效率可以提升數(shù)倍。你編程序,有沒(méi)有選擇一個(gè)很好的IDE,以前聽(tīng)說(shuō)編程高手都用記事本寫程序,我覺(jué)得那是一種自虐。就像以前看到的一篇文章,說(shuō)一幫戶外旅行愛(ài)好者,出去旅游,背了重重的旅行包,里面裝著什么壓縮餅干等快速食品。他們寧可就著礦泉水啃壓縮餅干,也不肯去1里路都不到的快餐店,農(nóng)家菜館吃飯。工具是為目的服務(wù)的,好用,提高效率就行,形式無(wú)所謂。

另外一個(gè)常用的工具就是日記本,好聽(tīng)點(diǎn)可以稱為知識(shí)管理工具,我用的是myBase,感覺(jué)非常好用,在之前,我的所有的片段內(nèi)容都是記錄的單獨(dú)的文本文件里的,非常不好找,管理也很混亂。

經(jīng)常上互聯(lián)網(wǎng),看到好多好的資料想保存下來(lái),作為日后查看之用.一開(kāi)始,我用的是firefox自帶的書簽,但是自己分類太累,多了之后不便于查找,很麻煩。后來(lái)用了得樂(lè)書簽(del.icio.us)的firefox插件,非常方便,現(xiàn)在成為了我必備的一個(gè)工具。

還有一個(gè)最重要的工具就是搜索引擎了,我裝了google for firefox插件,感覺(jué)不錯(cuò),還有英文翻譯功能。按照我同事的說(shuō)法,內(nèi)事用baidu,外事用google。很多技術(shù)資料都是英文的,用google搜索效率高一些。搜索引擎用好了,就等于打開(kāi)了一扇通向知識(shí)寶庫(kù)的門,使用搜索引擎,關(guān)鍵字選擇很重要。

經(jīng)常去瀏覽大牛的blog,逐個(gè)網(wǎng)站訪問(wèn)很麻煩,去看了又可能沒(méi)有更新,可以借助于RSS訂閱工具,我是用iGoogle桌面工具,每天早上花半個(gè)小時(shí)掃一下,大牛的最新文章盡收眼底了。

5. 英語(yǔ)能力

新的技術(shù)資料都是英文的,英語(yǔ)國(guó)家的IT技術(shù)走在我們前面至少10年(這是我自己估計(jì)的數(shù)字,可能正在縮小)。就連印度,一個(gè)連基礎(chǔ)設(shè)施建設(shè)都不太完善的國(guó)家,因?yàn)槠溆⒄Z(yǔ)基礎(chǔ)較好,其在軟件外包領(lǐng)域的發(fā)展也非常迅猛,遠(yuǎn)遠(yuǎn)超過(guò)了我們。學(xué)英語(yǔ),首先是有信心,其次就是花時(shí)間。多閱讀英文資料,使用金山詞霸,google的firefox插件等工具配合,貴在堅(jiān)持。

6.學(xué)習(xí)能力

在IT也混飯吃不容易,整個(gè)環(huán)境進(jìn)化的太快,你不學(xué)習(xí),就等于落后了。學(xué)習(xí)要有針對(duì)性,別今天學(xué)ruby,明天學(xué)python,后天php的。首先要認(rèn)清自己的目標(biāo),自己短期目標(biāo)是什么,1年后,3年后,5年后的目標(biāo)是什么。結(jié)合這些目標(biāo),確定自己的學(xué)習(xí)計(jì)劃,人的精力畢竟是有限的。當(dāng)然,多掌握幾門編程語(yǔ)言也是好的,可以擴(kuò)充自己的知識(shí)面,重要的是為自己的目標(biāo)服務(wù)。

要想系統(tǒng)的學(xué)習(xí)一門技術(shù)或工具,看書是最好的方法。看完后,然后上網(wǎng)找相關(guān)資料,進(jìn)行深入學(xué)習(xí)。學(xué)習(xí)要抓緊一切可以利用的時(shí)間,比如電腦啟動(dòng)要花1分多鐘,旁邊放一本書,可以看上幾頁(yè)了。公交車上,地鐵上也可以看。

當(dāng)然,不能只學(xué)習(xí)技術(shù),要經(jīng)常聯(lián)系自己的軟技能,比如溝通能力,表達(dá)能力。你可以把自己學(xué)到的東西,解釋給自己的同事聽(tīng),既加深了理解,又增進(jìn)了同事之間的交流。學(xué)習(xí)的最高境界就是你能夠把學(xué)到的東西解釋給別人聽(tīng),這才說(shuō)明你理解了。在學(xué)習(xí)心理學(xué)上,稱之為構(gòu)成主義。

我學(xué)一樣?xùn)|西,總是先上網(wǎng)了解有沒(méi)有相關(guān)書籍,如果想學(xué),就買一本或者去圖書館找相關(guān)的書來(lái)讀。我買的書,家里快放不下了(到目前位置,我買了1萬(wàn)多塊的書)。我多半是把目錄看完,了解這本書講解的主要內(nèi)容,然后需要的時(shí)候,我就可以立即補(bǔ)充它進(jìn)入到我的知識(shí)結(jié)構(gòu)。每個(gè)人可能都有自己的學(xué)習(xí)方法,意識(shí)到學(xué)習(xí)的重要,并能夠根據(jù)需要補(bǔ)充自己的知識(shí),這種能力更重要。

7.創(chuàng)造能力

普遍認(rèn)為,東方人模仿能力很強(qiáng),但創(chuàng)造能力差。我見(jiàn)過(guò)很多這樣的程序員,經(jīng)常說(shuō),“這個(gè)只能這么解決了,我想不出有什么別的方法?!笨赡芩径紱](méi)想過(guò)別的方法,或者懶得去想。對(duì)任何一個(gè)問(wèn)題,找出兩種以上的解決辦法都是非常容易的,簡(jiǎn)單的google一下,可能就是數(shù)十種。悲哀的是,有些程序員經(jīng)常止步于自己構(gòu)建的狹小領(lǐng)地之內(nèi)。對(duì)待客戶也是這種態(tài)度,不是積極的幫助客戶解決問(wèn)題,而是推脫這只是唯一解決方案。

打破這一思維定勢(shì)的首先的一個(gè)辦法就是在面臨一個(gè)問(wèn)題時(shí),首先想到的是“沒(méi)有不可能”,或是“一切皆有可能”,前面那個(gè)是阿迪的廣告語(yǔ),后面是李寧的。只有這樣去想,才能尋找解決問(wèn)題的別的出路,即使最后我們?cè)嚵撕芏喾N辦法,還是只有著一種解決方案,但我們?cè)谶@種尋找解決方案的過(guò)程中,常常會(huì)產(chǎn)生很多好的想法,這樣才會(huì)使我們真正深刻思考一個(gè)問(wèn)題。建議大家看一看《水平思考》這本書,他提供了一些進(jìn)行創(chuàng)造性思考的方法和工具。

但我認(rèn)為,堅(jiān)持認(rèn)為存在另一種解決方案的信念是第一位的,方法和工具都是其次。

8.文檔能力

也許有人會(huì)質(zhì)疑,程序員跟寫文檔有什么關(guān)系。大家開(kāi)源軟件也用過(guò)不少,看看Spring,hibernate,Struts等最流行的開(kāi)源軟件的文檔就知道,他么的tutorial,他們的getstarted,他們的reference文檔寫的多么的易懂。其實(shí)寫代碼也相當(dāng)于寫文檔,只不過(guò)用的是編程語(yǔ)言。同樣,寫文檔,用自然語(yǔ)言,也相當(dāng)于寫程序,簡(jiǎn)單明了,清晰易懂,這樣的“程序”誰(shuí)看誰(shuí)舒服。同樣,對(duì)于想進(jìn)階到設(shè)計(jì)師或者需求分析員角色的程序員,文檔能力更是非常重要。

word是一個(gè)最實(shí)用的工具,很多程序員,多級(jí)編號(hào)都不會(huì)用,索引目錄也不知道如何生成,更別靈活應(yīng)用樣式了。很多排版都是所謂的dirty work。垃圾樣式一大堆。其實(shí),靜下心來(lái),稍微學(xué)習(xí)一下,就能寫出一篇格式漂亮的文檔。

9.抽象能力

抽象能力是認(rèn)識(shí)事物從現(xiàn)象到本質(zhì)的能力。如果你只是停留在“見(jiàn)山是山,見(jiàn)水是水”的層次,客戶說(shuō)什么,你就做什么,設(shè)計(jì)怎么做,你就怎么實(shí)現(xiàn),從來(lái)不過(guò)問(wèn)為什么,也不去想他是滿足了用戶哪些方面的需求呢。這樣可能只解決了表面的問(wèn)題,可能會(huì)引起返工。認(rèn)識(shí)到本質(zhì),才能讓你的程序具備更大的靈活性和可擴(kuò)展性。在做企業(yè)應(yīng)用軟件開(kāi)發(fā)中,抽象能力體現(xiàn)為對(duì)問(wèn)題域的理解能力,對(duì)領(lǐng)域模型的抽象。合理的抽象也是代碼重構(gòu)的前提,每一次重構(gòu),都是向更好的抽象邁進(jìn)了一步。

10.代碼評(píng)審能力

代碼評(píng)審和單元測(cè)試是保證代碼質(zhì)量的兩種常用手段之一。代碼評(píng)審能力,說(shuō)明了你的審美標(biāo)準(zhǔn),知道什么是好的,什么是不好的,什么是優(yōu)雅的代碼,什么是糟糕的代碼,你才能讓自己做的更好。

11.單元測(cè)試能力

沒(méi)有單元測(cè)試的代碼,只能說(shuō)是半成品。因?yàn)闆](méi)有什么能證明你的代碼是可以運(yùn)行的。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是一個(gè)非常好的敏捷過(guò)程的最佳實(shí)踐。單元測(cè)試還可以作為回歸測(cè)試,在修改代碼時(shí),起到警戒線標(biāo)志的作用。是否具有單元測(cè)試的意識(shí)是區(qū)分程序員是否合格的重要標(biāo)準(zhǔn)。寫不寫單元測(cè)試是區(qū)分平庸程序員和優(yōu)秀程序員的重要標(biāo)桿。

12.DRY

DRY是一種原則,就是Don't Repeat Yourself.出自《程序員修煉之道-從小工到專家》。這條原則可以用到很多地方,比如你經(jīng)常要編譯,打包,部署應(yīng)用程序,供集成測(cè)試用。每次你都在重復(fù)你自己,寫一個(gè)自動(dòng)化腳本(比如用ant,批處理命令)來(lái)將這些工作自動(dòng)化,以提高效率。

還有一個(gè)就是我們經(jīng)常在不同的地方切換IP,如果每次手工做,也非常浪費(fèi)時(shí)間,寫一個(gè)bat命令可以解決,找一個(gè)小工具也可以解決。

編碼時(shí),對(duì)代碼的copy復(fù)用也是在重復(fù)你自己,雖然拷貝過(guò)程很爽,但是維護(hù)一致性就要付出巨大的工作量,特別是將來(lái)維護(hù)的人不是你的時(shí)候,使用代碼生成工具可以解決這個(gè)問(wèn)題。類似的例子太多了,如果你發(fā)現(xiàn)你經(jīng)常做一些重復(fù)的工作,就要警惕了,是否違背了這個(gè)原則,想一些辦法將他們自動(dòng)化。(IT專家網(wǎng)論壇)

發(fā)布:2007-04-21 14:06    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:

泛普長(zhǎng)春OA行業(yè)資訊其他應(yīng)用

長(zhǎng)春OA軟件 長(zhǎng)春OA新聞動(dòng)態(tài) 長(zhǎng)春OA信息化 長(zhǎng)春OA快博 長(zhǎng)春OA行業(yè)資訊 長(zhǎng)春軟件開(kāi)發(fā)公司 長(zhǎng)春門禁系統(tǒng) 長(zhǎng)春物業(yè)管理軟件 長(zhǎng)春倉(cāng)庫(kù)管理軟件 長(zhǎng)春餐飲管理軟件 長(zhǎng)春網(wǎng)站建設(shè)公司