寫出能夠解決問題的程式碼,或是能夠運用資料結構或演算法,還不足以成為一位頂尖的程式設計師!

知名顧問公司Conigent的架構師Justin James在美國科技網站 TechRepublic 上發表了 “Seven Traits of Effective Programmers” 這篇文章,列出了能夠成為編程領域中的大師們所具備的七項特質。有趣的是,從James的清單看來,想成為傑出的程式設計師,非技術性的特質反而比起技術性特質更重要。

如果你自認在技術方面已經具備了一定的程度與能力,想要邁向「神」級大師的等級,甚至有一天可以像某些矽谷工程師一樣,帥氣的跟客戶說,「想找我寫程式?請找我的經紀人談!」本文或許可以提供你一些不同的啟發,來看看James的清單,你是否也覺得這是傑出程式設計師的重要特質?

1. 樂在學習,除了關注新的技術發展,也了解非技術知識的重要性

普通的程式設計師,通常是在需要某項技能時才會開始進行學習;傑出的程式設計師,對於各種知識都保持開放的學習心態,他們了解,技術能力只能在初期讓你保持領先,若想成就卓越的能力就必須用實驗、練習與閱讀來灌溉知識的花園。

舉例來說,普通的程式設計師只有在參與 WPF 專案時,才開始學習 XAML,而傑出的程式設計師則老早就開始進行學習 XAML,因為他們覺得這很有趣,而且除了 WPF 的應用之外,還會進一步涉獵相關的延伸知識,因此,他們總是能夠實作出最佳的解決方案。

2. 務實但不固執

遵守「編程規範 (Rules of Programming)」是一件奢侈的事,也很少有開發人員能夠做到這一點,尤其當「編程規範」不是由專業的程式開發人員所撰寫的,或不是由專業的程式開發人員所指導而產出的規範,因為「不專業的規則」是很難讓人接受的。

我也常常遇到一些無法/拒絕執行專案任務的程式設計師,往往只是因為他的想法/建議並沒有被接受成為最好的實踐清單上。

程式設計師應該要注意的是:你的任務,是要實作出一個可以解決問題的方案,而不是產出一個呈現完美技術的藝術品。

3. 真正了解問題之後,再思考解決方案

找問題的答案,可不只是在搜索引擎上輸入幾個關鍵字,或是到 Stack Overflow/MSDN forums 這些論壇上發佈問題帖子詢問其他網友這麼簡單而已。

像我就曾經有過幾次在搜索引擎上搜尋不到想要的答案,或是在 Stack Overflow/MSDN forums 上發佈問題帖子卻沒有人回應我的狀況。

但是,我還是必須設法解決問題,結果也順利都處理完成了。

我並不是魔術師 —— 我只是知道如何尋找答案,以及如何找出問題的根源如此而已。

實務中,有許多的問題是屬於情境式的 (Situational),你必須像剝洋蔥一樣一層一層的往核心探究下去,如果僅僅只是依賴搜索引擎或者論壇,只是浪費時間而已。

所以,你應該學習如何找出問題根源的分析方法,以及學會對問題有了全面性的認識之後,才進行深入的分析與探討,才能尋得相關的線索與解決方案。