天天看點

完美程式員的10種品質 (轉載于校内)

 誰是完美程式員?著名部落格作家Alex Iskold在《明星軟體工程師的10種特質》一文中給出這個問題的答案:

1. 熱愛程式設計

2. 完成事情

3. 持續重構代碼

4. 使用設計模式

5. 編寫測試

6. 善用現有代碼

7. 專注可用性

8. 編寫可維護的代碼

9. 能用任何語言程式設計

10. 知曉基本的計算機科學

這是一份合理的清單,但是這份清單側重于次要特征,這些特征隻是更深層次品質所産生的結果,并且這是一份理想化的清單。你認為兒童網站的Flash程式員跟B2B财務交易服務公司的軟體工程師品質會相同嗎?那麼,我們該如何從衆多開發者中甄别出一名完美的程式員呢?

尋找完美程式員的最終标準:完美程式員能開發出滿足客戶期望的優秀軟體。

是以,令人震驚的事實是完美程式員可能隻精通一種程式設計語言,不知道什麼是設計模式,并且不會在地下室裡夜夜程式設計去創造下一個Google。我們不能客 觀地衡量程式員的完美程度,就像測量自己胳膊的粗細那樣。完美程式員的完美之處隻在于他們按時開發了一個高品質、可用的并且可維護性高的軟體系統(一個優 秀的系統),并且這個系統達到了使用者的要求。

綜上所述,我們可以得到如下幾個推論:

  • 1.一個完美的程式員應該能夠及時解決使用者的問題,或者能在一段合理的時間内解決。所有程式員的品質都與使用者的問題以及背景有關:
    • 有些問題需要創造力,而有些則需要具體的方向
    • 有些問題通常需要專業技術,而有些則需要高深的業務知識
    • 有些問題需要仔細分析,而有些則需要一些社會技能和直覺
  • 2.一個完美的程式員應該明白什麼是“完成”,并且關注産品品質。對于一個軟體系統,“完成”的意思遠非編碼的結束。一個完美的程式員會完成所有必要的步 驟來開發這個系統:測試,優化代碼以使代碼量保持最小、高效以及可讀,使系統可用并且保證顧客和使用者能夠喜歡這個系統。

完美程式員的10種品質

完美程式員的每種品質都有一個範圍,這個範圍取決于具體的問題和背景。沒有能解決所有問題的完美程式員(至少在我們這個星球上),并且對于特定問題,完美程式員應該具有以下品質:

1. 才智非凡- 能夠了解問題、能夠用清晰可讀的代碼翻譯并表達想法、善于分析并且邏輯思維能力強 (範圍:用簡單方式解決複雜問題)

2. 魅力超群- 優秀個性的結合體 ( 注重細節 VS 富有創造力、靈活多變 VS 恪守典章、善于交際 VS 特立獨行)

3. 術業專攻- 具有一定的知識和經驗,能在特定條件下利用專業技能解決使用者問題(範圍:從一個領域内的專家,到在不同領域都有豐富經驗的程式員)。

4. 積極主動- 關心工作,對程式設計表現出了很高的熱情、興緻以及熱愛(範圍:從工作隻為錢的人,到在業餘時間不計報酬實作有趣的想法的人)。

5. 成熟穩重- 精通并且運用合理的軟體開發原則、靈活方法和實踐、設計和體系結構模式、領域驅動設計、單元測試、重構(範圍:從一個充滿激情的業餘愛好者,到一名能夠不停地發明新方法的黑帶大師)。

6. 實用主義- 明白什麼事是可能的,喜歡簡單實用并且避免過度設計;明白業務目标,貼近現實并且專注于該做的事情(範圍:從自學成才的藝術家,到自我激勵的務實的成功人士)。

7. 通力協作- 能夠傾聽并且接受有好點子的人,毫無保留地支援團隊的目标,跟别人分享自己的想法和知識,并且願意指導别人(範圍:從異見者到一個團隊的上司)。

8.善于溝通- 能夠高效地與别人交流和交換想法,支援那些對系統具有清楚的解釋、判斷和解答的知識和決定(範圍:從一個安靜内向的人,到一個系統解說員)。

9. 潛力無限- 擁有職業目标、出色的技能、好奇心、較強的适應性,并且能夠不斷自省(範圍:從一個達到極限的人,到未來的程式設計之星)。

10.遠見卓識- 擁有更高的視野,了解相關的背景、趨勢和人員,為達到團隊和公司的潛在目标采取行動,緻力于為軟體系統建立共同願景(範圍:從對程式設計僅僅是感興趣的人,到有遠見的企業家)。

如何為特定問題找到完美的程式員呢?

能夠找到具有最優品質的程式員當然更好,但是,這些另類都身價不菲,通常可遇而不可求或者會對你的問題感到厭煩。是以,可以采取以下措施:

  • 1.在雇傭他們之前先了解問題,評估每種品質要達到的水準,并且準備好問題甚至測試。
  • 2.組建一個完美的團隊,但不一定用完美的程式員。隻要保證團隊成員的部分品質達到了應有的水準。對每位團隊成員來說,大概隻有協作才是最重要的品質。
  • 3.創造必要的環境,促使這些優秀品質能夠有效發揮作用。使用正确的上司風格,并且使程式員感到愉快。

擁有優秀核心品質的人會提出最優的方法,包括編寫單元測試和重構;學習設計模式,并且最重要的是:開發出衆并實用的軟體。

後話

完美程式員不是天生的,他們隻是在解決問題時做了正确的事。如果你對完美程式員還有其他看法和補充,歡迎你在評論和微網誌中分享。