1. 程式人生 > >一個優秀的程式設計師應該具備哪些技能和修養?

一個優秀的程式設計師應該具備哪些技能和修養?

李運華:這個問題就像“1千個人眼中有1千個哈姆雷特”一樣,每個人都有不同的看法。我認為一個優秀的程式設計師應該具備如下技能和修養:

首先是“快速學習能力”。這裡不是說一定要去快速去學習各種各樣的新技術,而是說當有需要時,能夠快速的學習。很多人開始學新的技術和技能時,一開始就一頭扎進去寫樣例、寫Demo、看原始碼,我認為這不是好的方法,而且比較耗費時間,收效也不明顯。

我給大家分享我的4W2H快速學習方法。我在學習新的技術的時候,都是按照這樣的步驟去了解的:1)這個技術能解決什麼問題(why) 2)比較適合在哪些場景應用(where + when) 3)這個技術跟我已經掌握的哪個知識或技能類似,有什麼差別、有什麼特點、 有什麼優點和缺點(what),4)瞭解前面的問題後,我才會開始去嘗試寫寫Demo,或者更進一步去應用(How to use) 5)覺得有興趣或者其實現很牛逼的情況下,我就去研究一下原理機制,看看原始碼等 (How it implements)

其次是“良好的理解能力”。程式設計師需要將產品人員或者使用者用自然語言表述的需求翻譯成程式語言。自然語言有一個特點就是通俗但不嚴謹,而程式語言必須是非常嚴謹的。如果對產品人員或者使用者提出的需求沒有很好的理解,即使程式語言寫的再漂亮,技巧再高,最後做出來也是一個不符合要求的產品。

記得有一個關於“美女”的笑話:人聽到“美女”後的反應是想到“天使面孔魔鬼身材童顏巨乳”,而豬聽到“美女”後的反應是“烏克蘭大白豬”,貓聽到“美女”後的反應是“有著金色光滑皮毛的波斯貓”。如果程式設計師給了貓一個“天使面孔魔鬼身材童顏巨乳”的美女,貓一定會覺得很難看。

第三是“持續不斷的學習”。軟體開發領域設計的知識和技能太多了。從廣度上來說,有作業系統、資料庫、程式語言、網路、設計等,程式語言又有幾十種;從深度上來說,作業系統、資料庫、程式語言等都是可以不斷深入去學習的。無論你是從事對技能廣度要求更高的業務開發,還是從事對技能深度要求更高開發專項系統,都需要不斷的學習,這樣才能不斷的提升自己的能力。

第四是“樂於分享”。如果單純從個人完成工作的能力來看,可能確實也有很多程式設計師不愛分享但確實很厲害。但我認為真正優秀的程式設計師一定是除了自己優秀外,還能讓其他人也變得優秀,或者能夠貢獻優秀的開源專案以降低別人的重複工作。分享的途徑有很多種,可以給公司人員做培訓,可以寫部落格,可以貢獻開源專案等。