2012年6月25日 星期一

軟體工程人員應培養的10項技能

(Image from Shatterbox)
  今天看到 Inside 之前的一篇文章,這篇文章是 Leon Lu 參考 Alex Iskold 曾經列舉的『十大高竿開發人員特徵』以及軟工專家 Markus Sprunck 分享的『十大軟體人員需養成的特質』,經過分析撰寫而成的『軟體工程人員應培養的10項技能』,而這 10 項技能跟我個人想法幾乎一樣,因此特地分享出來,並且加上我個人感想,有興趣的一定要去看看原始文章
  1. 訓練情緒智商(Emotional Intelligence)
  2. 釐清根本需求(Business of Customer, Be reasonable and realistic)
    1. 以上兩點就如同我之前所寫的『與行銷做朋友的工程師』,身為一個開發人員,應該要去瞭解產品的最終目的、使用者的需求,不應該盲目的聽從上頭指派下來的任務而不去思考!一個失敗的產品通常都是上下溝通不良,導致設計出來的產品不被使用者所接受,因此身為開發人員的你,更需要多去思考,以減少這種情況發生。
      而 Prototyping 是一個開發人員一開始就要做的事,它有助於釐清整個產品開發以及縮短產品開發週期,因此在正式寫程式之前,嘗試著用 Prototype 與客戶溝通、瞭解客戶需求、確認客戶目標,以避免開發出來的產品客戶無法接受等問題!
  3. 抓住程式設計精髓(Multi-paradigm programming)
    1. 這點實在太重要了!常常聽人說「哪個語言很重要」、「要把這個語言學的很精」,但我個人卻不這麼認為,各種語言雖然寫法不同,但是設計邏輯是一樣的,每種語言被設計出來都有它的意義,因此應該要去瞭解每種語言的特性,針對產品需求去選擇最佳的語言撰寫才是!
  4. 專注易使用性及維護性 (Focuses on Usability and Maintainability)
    1. 最近科技產業趨勢已經從硬體進化成軟體,重點已經不再是硬體跑的有多快,而是你所開發出來的產品,使用者使用起來是否流暢、是否可以非常直覺的操作、不需要花費太多時間來學習,也就是所謂的 User Experience (UX),如此在介面上以及操作上的設計,以漸漸成為了最重要的指標。
  5. 測試是信賴基礎 (Don't Trust Code without Adequate Test)
    1. 這部分筆者尚未涉獵,無法多做說明。
  6. 關注設計模式及演算法 (Uses Design Patterns and Algorithms)
    1. 設計模式及演算法應搭配產品需求及開發週期來考量,在開發週期的限制下,應該要讓產品盡量的去滿足消費者,然後再去追求效率。如果你花了相當長的時間,去改進了一個消費者不會感受到的地方,那麼這個效率的追求就是失敗的!但也並非完全不去追求效率,而是在有限的期間中,應該先把重點放在使用者上,之後再來改進一些細微的部份。
  7. 了解工具或操作工具 (Use and Know your Tools)
    1. 這部分筆者經驗不足,無法瞭解真實意義,但我想應該就是要善加利用工具,來提升整個開發品質。
  8. 善用方法論及衡量指標 (Management Concepts and Key Metrics)
    1. 這部分筆者也是因為經驗不足,無法給予更多解釋。
  9. 持續整合及重構 (Continuous Integration and Refactoring)
    1. 這個部份我想就不用多做解釋了,整合與重構有助於減少下一個產品的開發週期,或許這個步驟會消耗許多時間並且毫無產出,但是以長久來看,絕對是一個好的投資!除非每個產品的關聯性為零。
  10. 完成與完美的迷思 (Get things done than to be perfect)
    1. 這點筆者也相當認同,『世界上永遠沒有完美的事,唯一完美的,就是接受了那不完美』,與其花費相當長的時間去找一個完美的方法去解決問題,還不如在有限時間中,滿足使用者的需求,儘管有不完美的地方,但是只要使用者接受,在這個時間點上,這就是一個完美!
      這個部分以 iPhone 為例最為不過了,儘管 iPhone 有許多不如其它廠牌手機的地方,但是對於大部分使用者來說,iPhone 都滿足了他,因此在這個時間點上,iPhone 的產品就是完美!
      或許你要說還是有使用者不滿意 iPhone,而這就是迷思,『你無法滿足世界上的每一個人,你只要專注於你那 80% 的目標消費者就可以了』,有興趣可以參考 Jamie 寫的這篇『你不需要討好每一個人』。

沒有留言:

張貼留言