本文作者 Jakub Chodounsky 任職於 Barclays Investment Bank (《TO》編按:巴克萊投資銀行)擔任資深軟體開發人員,專長是在 .NET Framework platform 上開發商用軟體與網路相關應用。本文是作者以自己開發軟體的經驗,來說明一位程式開發人員所應具備的能力有哪些,其中最重要的能力又是哪一項。

如果你還沒有得到自己個人化的體驗,或是想了解其他程式開發人員的想法,本篇文章就是很好的參考;如果你已經擁有屬於自己個人化的體驗,就可以比對一下是否與作者相同。

接著就來看看作者發表的感想吧。(以下以作者第一人稱撰寫)

  • 程式設計師的價值是什麼?

你是程式設計師嗎?你是否曾經問過自己 —— 對程式設計師而言,最有價值的技能是什麼?要具備什麼樣的條件,或是參與過什麼樣的專案,才稱得上是一名成功的程式設計師呢?

如果你思考過這個問題,有得到具體的答案?或是足以說服自己的結論嗎?你或許會從一些年輕的、或是資歷尚淺的程式設計師那裡得到相關的看法:

成為一位傑出的程式開發人員最重要的技能就是精熟你自己所使用的程式語言。

關於這一點,我的看法是:

當然,你至少必須具備編程的技巧,無論是 C#、 F#、C++、Java、Ruby、Haskell 或是其它任何一種程式語言都好,但是,你必須了解只會 Coding ,並無法讓你順利實踐一個完整的 Desktop / Web 應用。

或許你又會接著問:「那是要具備對平台的理解嗎?」

這句話其實有個陷阱 —— 這是指單一平台或是所有的平台呢?若是單一平台的話,就是像 Windows API 或是 iOS 等開發工具或是函式庫,可是,再進一步思考,如果產業的趨勢有了變化呢?如果專案採用的不是你所熟悉的平台呢?此時,你還能憑藉著過去所學而無往不利嗎?我可不這麼認為。

這時你或許帶點怒氣回應,既然技術能力不是最重要的關鍵,那肯定是解決問題的能力和思維的方式?

事實上,我認同解決問題的能力與思維的方式是非常重要的。好的程式開發人員通常都具備良好的邏輯思維能力。但是,解決問題的能力仍然算不上是你必須具備的最重要的能力。

接著你可能會說:「再不然,就是對程式設計的熱情 —— 你必須精益求精,不能停止學習。」,我必須說,這已經愈來愈接近我的想法了。

  • 技術是基礎,溝通才是王道!

上述說的可能都對,但是,還有一個更具價值的技能,就是「溝通」!

很多時候這項能力是被低估的!而且,你所要互動的對象可不止是客戶而已,還包括你的同事,以及你的主管、老闆,你會與他們分享自己對某些事情的看法,或是用不傷人的方式捍衛自己的立場,或是說服他們採取你的提案等等。

除此之外,你還必須彙整與更新自己的工作日報,對他人解釋自己所處理的問題,以及它們發生的原因等等。

所以,要成為一個頂尖的程式設計師,你必須每天都在與人溝通,而且,要學會如何拿捏互動的分寸,如此才能讓你無往不利。

(資料來源: chodounsky ; 圖片來源:illustir, CC Liscensed)

延伸閱讀:

真正「神級」程式設計師的 7 項特質 — 都與技術無關!

An orange a day, keeps your brain awake!

一天吃一顆橘子,天天擁有聰明的腦子!
快加入《TechOrange》的粉絲團每天啃橘子吧!