【IT168 評論】誰是完美程序員?著名博客作家Alex Iskold在《明星軟件工程師的10種特質(zhì)》一文中給出這個問題的答案:
1. 熱愛編程
2. 完成事情
3. 持續(xù)重構(gòu)代碼
4. 使用設(shè)計模式
5. 編寫測試
6. 善用現(xiàn)有代碼
7. 專注可用性
8. 編寫可維護的代碼
9. 能用任何語言編程
10. 知曉基本的計算機科學(xué)
這是一份合理的清單,但是這份清單側(cè)重于次要特征,這些特征只是更深層次品質(zhì)所產(chǎn)生的結(jié)果,并且這是一份理想化的清單。你認為兒童網(wǎng)站的Flash程序員跟B2B財務(wù)交易服務(wù)公司的軟件工程師品質(zhì)會相同嗎?那么,我們該如何從眾多開發(fā)者中甄別出一名完美的程序員呢?
尋找完美程序員的最終標準:完美程序員能開發(fā)出滿足客戶期望的優(yōu)秀軟件。
因此,令人震驚的事實是完美程序員可能只精通一種編程語言,不知道什么是設(shè)計模式,并且不會在地下室里夜夜編程去創(chuàng)造下一個Google。我們不能客觀地衡量程序員的完美程度,就像測量自己胳膊的粗細那樣。完美程序員的完美之處只在于他們按時開發(fā)了一個高質(zhì)量、可用的并且可維護性高的軟件系統(tǒng)(一個優(yōu)秀的系統(tǒng)),并且這個系統(tǒng)達到了用戶的要求。
綜上所述,我們可以得到如下幾個推論:
1.一個完美的程序員應(yīng)該能夠及時解決用戶的問題,或者能在一段合理的時間內(nèi)解決。所有程序員的品質(zhì)都與用戶的問題以及背景有關(guān):
有些問題需要創(chuàng)造力,而有些則需要具體的方向
有些問題通常需要專業(yè)技術(shù),而有些則需要高深的業(yè)務(wù)知識
有些問題需要仔細分析,而有些則需要一些社會技能和直覺
2.一個完美的程序員應(yīng)該明白什么是“完成”,并且關(guān)注產(chǎn)品質(zhì)量。對于一個軟件系統(tǒng),“完成”的意思遠非編碼的結(jié)束。一個完美的程序員會完成所有必要的步驟來開發(fā)這個系統(tǒng):測試,優(yōu)化代碼以使代碼量保持最小、高效以及可讀,使系統(tǒng)可用并且保證顧客和用戶能夠喜歡這個系統(tǒng)。
完美程序員的10種品質(zhì)
完美程序員的每種品質(zhì)都有一個范圍,這個范圍取決于具體的問題和背景。沒有能解決所有問題的完美程序員(至少在我們這個星球上),并且對于特定問題,完美程序員應(yīng)該具有以下品質(zhì):
1. 才智非凡 -能夠理解問題、能夠用清晰可讀的代碼翻譯并表達想法、善于分析并且邏輯思維能力強(范圍:用簡單方式解決復(fù)雜問題)
2. 魅力超群 -優(yōu)秀個性的結(jié)合體(注重細節(jié) VS 富有創(chuàng)造力、靈活多變 VS 恪守典章、善于交際 VS 特立獨行)
3. 術(shù)業(yè)專攻 -具有一定的知識和經(jīng)驗,能在特定條件下利用專業(yè)技能解決用戶問題(范圍:從一個領(lǐng)域內(nèi)的專家,到在不同領(lǐng)域都有豐富經(jīng)驗的程序員)。
4. 積極主動 -關(guān)心工作,對編程表現(xiàn)出了很高的熱情、興致以及熱愛(范圍:從工作只為錢的人,到在業(yè)余時間不計報酬實現(xiàn)有趣的想法的人)。
5. 成熟穩(wěn)重 -精通并且運用合理的軟件開發(fā)原則、敏捷方法和實踐、設(shè)計和體系結(jié)構(gòu)模式、領(lǐng)域驅(qū)動設(shè)計、單元測試、重構(gòu)(范圍:從一個充滿激情的業(yè)余愛好者,到一名能夠不停地發(fā)明新方法的黑帶大師)。
6. 實用主義 -明白什么事是可能的,喜歡簡單實用并且避免過度設(shè)計;明白業(yè)務(wù)目標,貼近現(xiàn)實并且專注于該做的事情(范圍:從自學(xué)成才的藝術(shù)家,到自我激勵的務(wù)實的成功人士)。
7. 通力協(xié)作 -能夠傾聽并且接受有好點子的人,毫無保留地支持團隊的目標,跟別人分享自己的想法和知識,并且愿意指導(dǎo)別人(范圍:從異見者到一個團隊的領(lǐng)導(dǎo))。
8.善于溝通 -能夠高效地與別人交流和交換想法,支持那些對系統(tǒng)具有清楚的解釋、判斷和解答的知識和決定(范圍:從一個安靜內(nèi)向的人,到一個系統(tǒng)解說員)。
9. 潛力無限 -擁有職業(yè)目標、出色的技能、好奇心、較強的適應(yīng)性,并且能夠不斷自省(范圍:從一個達到極限的人,到未來的編程之星)。
10.遠見卓識 -擁有更高的視野,了解相關(guān)的背景、趨勢和人員,為達到團隊和公司的潛在目標采取行動,致力于為軟件系統(tǒng)建立共同愿景(范圍:從對編程僅僅是感興趣的人,到有遠見的企業(yè)家)。
如何為特定問題找到完美的程序員呢?
能夠找到具有最優(yōu)品質(zhì)的程序員當然更好,但是,這些另類都身價不菲,通??捎龆豢汕蠡蛘邥δ愕膯栴}感到厭煩。因此,可以采取以下措施:
1.在雇傭他們之前先理解問題,評估每種品質(zhì)要達到的水平,并且準備好問題甚至測試。
2.組建一個完美的團隊,但不一定用完美的程序員。只要保證團隊成員的部分品質(zhì)達到了應(yīng)有的水平。對每位團隊成員來說,大概只有協(xié)作才是最重要的品質(zhì)。
3.創(chuàng)造必要的環(huán)境,促使這些優(yōu)秀品質(zhì)能夠有效發(fā)揮作用。使用正確的領(lǐng)導(dǎo)風(fēng)格,并且使程序員感到愉快。
擁有優(yōu)秀核心品質(zhì)的人會提出最優(yōu)的方法,包括編寫單元測試和重構(gòu);學(xué)習(xí)設(shè)計模式,并且最重要的是:開發(fā)出眾并實用的軟件。
后話
完美程序員不是天生的,他們只是在解決問題時做了正確的事。如果你對完美程序員還有其他看法和補充,歡迎你在評論和微博中分享