國(guó)際:什麽是程序員的(de)優秀品質?
發布日期:2008-01-29 浏覽量:14090

使用一(yī)種特殊的(de)編程語言、編程很牛,單單靠這個并不能說一(yī)名程序員/開發者就是優秀程序員/開發者。   快速發展的(de)開發環境使得這個行(xíng)業比我今天看到的(de)任何一(yī)個行(xíng)業都要發展迅速,這既有(yǒu)積極的(de)一(yī)面也有(yǒu)消極的(de)一(yī)面:今天的(de)程序員/開發者有(yǒu)很多編程語言、開發工具和(hé)開發平台可(kě)選,但是建立一(yī)個安全、可(kě)擴展的(de)環境卻變得難了很多;硬件和(hé)軟件正日新月異地(dì)變得更加複雜,但現在學(xué)習新技術比過去(qù)要難太多了。

    以下是優秀程序員應當具備的(de)品質:

語言和(hé)工具(Languages and Tools:)

    任何程序員/開發者需要具備的(de)第一(yī)個技能就是,能夠用編程語言工作并會使用與之相關的(de)主要開發工具,包括:工具、IDEs, web 框架, messaging APIs。

程序設計方法(Programming Paradigm:)

舉例來說,很好地(dì)理(lǐ)解面向對象,這對使用強制式語言(Imperative Language也稱過程式語言)寫出可(kě)維護的(de)代碼至關重要。在企業開發中你會遇到各種不同的(de)問題,理(lǐ)解多種程序設計方法并知道(dào)何時使用,将使這些問題迎刃而解。

領域專長(cháng)的(de)知識(Domain Specific Knowledge:)

如(rú)果想編寫系統來解決特定領域內(nèi)的(de)問題,那麽擁有(yǒu)該領域的(de)專長(cháng)知識将非常重要。
盡管許多這樣的(de)知識是由項目的(de)商(shāng)業分析員(Business Analyst)來獲悉,但如(rú)果開發者也能獲取,那麽跟用戶的(de)交流将會更加容易,而且更能夠理(lǐ)解他們的(de)專業詞彙。

人際關系(People Skills:)

    軟件開發中最重要的(de)技能之一(yī)就是能夠與其他開發者一(yī)起高(gāo)效工作——同事、質量/商(shāng)業分析員(Quality/Business Analysts),客戶,用戶,很多很多……如(rú)果你能夠很好地(dì)處理(lǐ)這些關系,那麽成功的(de)大路也離(lí)你不遠矣。

解決問題(Problem Solving:)

    有(yǒu)能力解決那些沒有(yǒu)明顯解決方法的(de)問題,這一(yī)點在軟件開發中很重要。當把你的(de)應用配置到JBoss或者通過一(yī)個測試找到一(yī)個棘手bug的(de)時候,理(lǐ)智地(dì)編程将成為(wèi)調試一(yī)個類路徑(class path)問題。

溝通能力(Good Communication skills:)

    在軟件世界中,人們通常認為(wèi)好的(de)溝通能力就是流利地(dì)說話,事實上這遠不是。這指的(de)是:你能夠多麽有(yǒu)效地(dì)與其他人交流。作為(wèi)一(yī)名優秀的(de)開發者,你應當能夠很好地(dì)表達你的(de)想法,很好地(dì)聽,以及很好地(dì)掌控你與他人溝通的(de)過程。

讀書(Read Books:)

    讀大量書将了解很多不同的(de)技術,讀書使你對一(yī)種技術有(yǒu)了快速、直接的(de)視(shì)角。通常你應當選擇知名學(xué)者的(de)書,他們推崇實踐和(hé)用技術解決問題的(de)多種方法。在這個過程中,你将學(xué)到很多并逐漸形成自(zì)己的(de)方法。沒準哪天你也就能出書了呢(ne)。

實踐、實踐再實踐(Practice, Practice and Practice)

    許多開發者擁有(yǒu)大量理(lǐ)論知識,他們飽覽書籍和(hé)技術資料。然而,怎樣運用這些知識卻讓他們望而卻步。這是因為(wèi)他們缺乏實踐。你工作的(de)效率和(hé)效力隻能通過你實踐中編寫代碼來獲得。唯一(yī)能使你成為(wèi)優秀開發者的(de)方法就是實踐、實踐再實踐。

遵循範例和(hé)最好的(de)實踐(Follow Patterns and Best Practices :)

    範例和(hé)實踐反映了技術指導、常見技術問題和(hé)基于真實事件的(de)實踐。學(xué)習的(de)過程是循序漸進的(de),但是一(yī)勞永逸。這會節省你非常多的(de)時間和(hé)精力,讓你的(de)工作更加有(yǒu)效。遵循一(yī)本“代碼編程指南”(Code Design Guideline),經常使用代碼分析工具将檢測和(hé)分析你的(de)代碼。

讨論/小組溝通(Discussion/Newsgroup:)

    參加開發社區會提高(gāo)你的(de)領導能力以及貢獻感,二者都是成功的(de)必需品。在社區內(nèi)參加一(yī)場含量較高(gāo)的(de)技術讨論将使你充滿成就感,而且會增長(cháng)你的(de)知識,因為(wèi)其中的(de)智者會查看和(hé)評點你的(de)解決方法,你也會查看和(hé)評點他們的(de)。而且這個過程教會你接納并感激别人的(de)建議。如(rú)果她/他做(zuò)出了積極的(de)貢獻,不要忘了贊揚和(hé)鼓勵('pat someone on the back')。

網絡和(hé)數據庫知識(Knowledge of Networking and Databases:)

有(yǒu)人也許不贊成這點,但是一(yī)個優秀的(de)開發者應當知道(dào)網絡和(hé)數據庫的(de)基本東西。而且在思考解決方法的(de)時候,不要忘記将二者考慮在內(nèi)。擁有(yǒu)二者的(de)知識,能夠幫你寫出更好的(de)代碼并節省你很多時間。

博客、寫文章(zhāng)(Blog/ Write Articles:)

    我們中有(yǒu)誰能夠記住每件事?我不能,所以我把他們記下來。當我需要的(de)時候,可(kě)以回頭翻閱參考。除此之外,我可(kě)以借此從讀者那裏獲得反饋,讓我對同樣的(de)問題收獲更多的(de)方法。我已經獲悉了許多與我工作有(yǒu)關的(de)反饋,雖然有(yǒu)好有(yǒu)壞,但我會一(yī)一(yī)驗證,這個過程也讓我受益匪淺。

KISS

    不要想歪了,這裏的(de)KISS不是你想的(de)那樣,是指讓應用/方法直短(duǎn)、簡單(Keep Implementations/Approaches Short and Simple的(de)簡寫)。不要使用行(xíng)話來讓事情更加複雜,因為(wèi)人們很難理(lǐ)解它們。最好的(de)方法是簡化你的(de)設計并避免過度設計(over-engineering)的(de)東西。

像測試者一(yī)樣思考(Think as a Tester:)

開發者和(hé)測試者,來自(zì)兩個不同陣營的(de)兩類人群,随時準備同彼此較量。我發現二者的(de)合作将産生非常好的(de)結果。既不會損害開發者的(de)利益也不會損害測試者的(de)利益。實際上,長(cháng)期來看,像測試者一(yī)樣思考有(yǒu)利于減少你代碼的(de)bug,而且會形成很好的(de)編程習慣和(hé)思維。

堅持一(yī)緻是遊戲規則(Consistency is the name of the game:)

    你是否經常跳槽或者被你的(de)薪水所打擊?如(rú)果是,那麽靜坐下來放松下并重新規劃。好好想想不要讓你的(de)決定天馬行(xíng)空,為(wèi)了不斷向前,你需要一(yī)個堅實的(de)決定并堅持不懈。

參加技術研讨會/大事件(Attend technology seminars and events:)

    如(rú)果你所在的(de)城市(shì)有(yǒu)技術研讨會,一(yī)定要抽出時間參加。大部分的(de)研讨會是免費的(de),而且會提供新技術的(de)重要信息。

萬家通吃還是一(yī)門獨大?(Jack of all or Master of One?:)

    嗯……這個問題不好回答。在現在的(de)環境下,你必須掌握一(yī)種以上的(de)技術。盡管這不容易,但是好的(de)開發者還是能夠做(zuò)到。其中的(de)關鍵就在于适應性:如(rú)果你精于某種技術,那麽給以機(jī)會你将較容易地(dì)在短(duǎn)期內(nèi)掌握一(yī)種新技術。你不妨試試,多掌握一(yī)種技術可(kě)以讓你在使用中對比、選擇。

停止抱怨(Stop complaining:)

    是否軟件沒有(yǒu)做(zuò)成,是否測試人員給你檢查出一(yī)堆bug?許多開發者的(de)本能反應是抵制情緒進而非常抵制這種情況。由于這種情緒是自(zì)然反應未經控制,所以它不可(kě)取。靜心分析為(wèi)什麽軟件失敗、為(wèi)什麽有(yǒu)如(rú)此多bug,這是一(yī)個學(xué)習的(de)經曆将使你未來的(de)工作受益良多。

    最後,請記住你不是要永遠做(zuò)個程序員。所以一(yī)旦你自(zì)我滿足并覺得自(zì)己是個優秀的(de)程序員,你就得重新規劃你自(zì)己(re-program yourself)。擴展你的(de)興趣。開發隻是這個過程的(de)一(yī)部分,了解用戶和(hé)商(shāng)業實際上是一(yī)種藝術,每個人應當以此為(wèi)目标并努力掌握它。