1. 程式人生 > >優秀程式設計師應當具備的品質:

優秀程式設計師應當具備的品質:


語言和工具(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)。擴充套件你的興趣。開發只是這個過程的一部分,瞭解使用者和商業實際上是一種藝術,每個人應當以此為目標並努力掌握它。

。。。。與各位共勉。。。。