使用一種特殊的編程語言、編程很牛,單單靠這個並不能說一名程序員/開發者就是優秀程序員/開發者。 快速發展的開發環境使得這個
行業比我今天看到的任何一個行業都要發展迅速,這既有積極的一面也有消極的一面:今天的程序員/開發者有不少編程語言、開發工具和開發平臺可選,可是創建一個安全、可擴展的環境卻變得難了不少;硬件和軟件正突飛猛進地變得更加複雜,但如今
學習新技術比過去要難太多了。
如下是優秀程序員應當具有的品質:
語言和工具(Languages and Tools:)
任何程序員/開發者須要具有的第一個技能就是,可以用編程語言工做並會使用與之相關的主要開發工具,包括:工具、IDEs, web 框架, messaging APIs。
程序設計方法(Programming Paradigm:)
舉例來講,很好地理解面向對象,這對使用強制式語言(Imperative Language也稱過程式語言)寫出可維護的代碼相當重要。在企業開發中你會遇到各類不一樣的問題,理解多種程序設計方法並知道什麼時候使用,將使這些問題迎刃而解。
領域專長的知識(Domain Specific Knowledge:)
若是想編寫系統來解決特定領域內的問題,那麼擁有該領域的專長知識將很是重要。
儘管許多這樣的知識是由
項目的商業分析員(Business Analyst)來獲悉,但若是開發者也能獲取,那麼跟用戶的交流將會更加容易,並且更可以理解他們的專業詞彙。
人際關係(People Skills:)
軟件開發中最重要的技能之一就是可以與其餘開發者一塊兒高效工做——同事、質量/商業分析員(Quality/Business Analysts),客戶,用戶,不少不少……若是你可以很好地處理這些關係,那麼成功的大路也離你不遠矣。
解決問題(Problem Solving:)
有能力解決那些沒有明顯解決方法的問題,這一點在軟件開發中很重要。當把你的應用配置到JBoss或者經過一個測試找到一個棘手bug的時候,理智地編程將成爲調試一個類路徑(class path)問題。
溝通能力(Good Communication skills:)
在軟件世界中,人們一般認爲好的溝通能力就是流利地說話,事實上這遠不是。這指的是:你可以多麼有效地與其餘人交流。做爲一名優秀的開發者,你應當可以很好地表達你的想法,很好地聽,以及很好地掌控你與他人溝通的過程。
讀書(Read Books:)
讀大量書將瞭解不少不一樣的技術,讀書使你對一種技術有了快速、直接的視角。一般你應當選擇知名學者的書,他們推崇實踐和用技術解決問題的多種方法。在這個過程當中,你將學到不少並逐漸造成本身的方法。沒準哪天你也就能出書了呢。
實踐、實踐再實踐(Practice, Practice and Practice)
許多開發者擁有大量理論知識,他們飽覽書籍和技術資料。然而,怎樣運用這些知識卻讓他們望而卻步。這是由於他們缺少實踐。你工做的效率和效力只能經過你實踐中編寫代碼來得到。惟一能使你成爲優秀開發者的方法就是實踐、實踐再實踐。
遵循範例和最好的實踐(Follow Patterns and Best Practices :)
範例和實踐反映了技術指導、常見技術問題和基於真實事件的實踐。學習的過程是按部就班的,可是一勞永逸。這會節省你很是多的時間和精力,讓你的工做更加有效。遵循一本「代碼編程指南」(Code Design Guideline),常用代碼分析工具將檢測和分析你的代碼。
討論/小組溝通(Discussion/Newsgroup:)
參加開發社區會提升你的領導能力以及貢獻感,兩者都是成功的必需品。在社區內參加一場含量較高的技術討論將使你充滿成就感,並且會增加你的知識,由於其中的智者會查看和評點你的解決方法,你也會查看和評點他們的。並且這個過程教會你接納並感激別人的建議。若是她/他作出了積極的貢獻,不要忘了讚賞和鼓勵('pat someone on the back')。
網絡和數據庫知識(Knowledge of Networking and Databases:)
有人也許不同意這點,可是一個優秀的開發者應當知道網絡和數據庫的基本東西。並且在思考解決方法的時候,不要忘記將兩者考慮在內。擁有兩者的知識,可以幫你寫出更好的代碼並節省你不少時間。
博客、寫文章(Blog/ Write Articles:)
咱們中有誰可以記住每件事?我不能,因此我把他們記下來。當我須要的時候,能夠回頭翻閱參考。除此以外,我能夠藉此從讀者那裏得到反饋,讓我對一樣的問題收穫更多的方法。我已經獲悉了許多與我工做有關的反饋,雖然有好有壞,但我會一一驗證,這個過程也讓我受益不淺。
KISS
不要想歪了,這裏的KISS不是你想的那樣,是指讓應用/方法直短、簡單(Keep Implementations/Approaches Short and Simple的簡寫)。不要使用行話來讓事情更加複雜,由於人們很難理解它們。最好的方法是簡化你的設計並避免過分設計(over-engineering)的東西。
像測試者同樣思考(Think as a Tester:)
開發者和測試者,來自兩個不一樣陣營的兩類人羣,隨時準備同彼此較量。我發現兩者的合做將產生很是好的結果。既不會損害開發者的利益也不會損害測試者的利益。實際上,長期來看,像測試者同樣思考有利於減小你代碼的bug,並且會造成很好的編程習慣和思惟。
堅持一致是遊戲規則(Consistency is the name of the game:)
你是否常常跳槽或者被你的薪水所打擊?若是是,那麼靜坐下來放鬆下並從新規劃。好好想一想不要讓你的決定天馬行空,爲了避免斷向前,你須要一個堅實的決定並堅持不懈。
參加技術研討會/大事件(Attend technology seminars and events:)
若是你所在的城市有技術研討會,必定要抽出時間參加。大部分的研討會是免費的,並且會提供新技術的重要信息。
萬家通吃仍是一門獨大?(Jack of all or Master of One?:)
嗯……這個問題很差回答。在如今的環境下,你必須掌握一種以上的技術。儘管這不容易,可是好的開發者仍是可以作到。其中的關鍵就在於適應性:若是你精於某種技術,那麼給以機會你將較容易地在短時間內掌握一種新技術。你不妨試試,多掌握一種技術可讓你在使用中對比、選擇。
中止抱怨(Stop complaining:) 是否軟件沒有作成,是否測試人員給你檢查出一堆bug?許多開發者的本能反應是抵制情緒進而很是抵制這種狀況。因爲這種情緒是天然反應未經控制,因此它不可取。靜心分析爲何軟件失敗、爲何有如此多bug,這是一個學習的經歷將使你將來的工做受益良多。 最後,請記住你不是要永遠作個程序員。因此一旦你自我知足並以爲本身是個優秀的程序員,你就得從新規劃你本身(re-program yourself)。擴展你的興趣。開發只是這個過程的一部分,瞭解用戶和商業其實是一種藝術,每一個人應當以此爲目標並努力掌握它。