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