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