合格程序員應(yīng)該具備的12種能力[3]
7.創(chuàng)造能力
普遍認(rèn)為,東方人模仿能力很強(qiáng),但創(chuàng)造能力差。我見過(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)題。
但我認(rèn)為,堅(jiān)持認(rèn)為存在另一種解決方案的`信念是第一位的,方法和工具都是其次。
8.文檔能力
也許有人會(huì)質(zhì)疑,程序員跟寫文檔有什么關(guān)系。大家開源軟件也用過(guò)不少,看看Spring,hibernate,Struts等最流行的開源軟件的文檔就知道,他么的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ì)的能力。如果你只是停留在“見山是山,見水是水”的層次,客戶說(shuō)什么,你就做什么,設(shè)計(jì)怎么做,你就怎么實(shí)現(xiàn),從來(lái)不過(guò)問(wèn)為什么,也不去想他是滿足了用戶哪些方面的需求呢。這樣可能只解決了表面的問(wèn)題,可能會(huì)引起返工。認(rèn)識(shí)到本質(zhì),才能讓你的程序具備更大的靈活性和可擴(kuò)展性。在做企業(yè)應(yīng)用軟件開發(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)開發(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)化。
【合格程序員應(yīng)該具備的12種能力[3]】相關(guān)文章:
合格Sun認(rèn)證Java程序員(SCJP)具備的能力10-03
CFO應(yīng)該具備哪些能力10-02
創(chuàng)業(yè)應(yīng)該具備哪些能力10-01
創(chuàng)業(yè)應(yīng)該具備哪些能力02-09
領(lǐng)導(dǎo)者應(yīng)該具備的能力10-09
系統(tǒng)架構(gòu)師應(yīng)該具備的能力10-03
優(yōu)秀領(lǐng)導(dǎo)者應(yīng)該具備的能力09-15
中層管理者應(yīng)該具備的能力09-13