1. 程式人生 > >優秀程式設計師應該具備的12種能力

優秀程式設計師應該具備的12種能力

1. 程式語言能力

  不用多說,作為合格的計算機程式設計師,精通一門語言是必須的。這種精通,不是說看了一本程式設計寶典,抄了幾個程式就能說精通的,要靠長時間的積累。

  2.編碼能力

  我曾經看很多程式設計師寫的程式碼,在同一個jsp或者java原始檔裡,出現了三種以上的對方法的命名方式,有下劃線間隔的,有全大寫的,有拼音首字母的。就像一個菜市場,雜亂無比,估計10天后,他自己都無法看的懂。遵守編碼規範,是一個程式設計師最基本的要求,可悲的是,很多程式設計師根本沒有意識到這個問題的嚴重性。另外一個就是註釋,要注意不是為了註釋而註釋。對類,以說明職責為主;對方法,以說明意圖為主;對方法體,以說明實現思路為主。對於大段大段的程式碼,要分段,使用空行隔開,並使用行內註釋進行說明

3.面向物件思維能力

  如今,多數程式語言都是面向物件的程式語言。而這些面向物件的程式語言的共同的精髓就是面向物件的思想。掌握這些比面嚮物件語言本身更重要,比如對繼承,多型,過載的理解。對面向物件基本原則的理解,比如開閉原則,介面隔離原則,單一職責原則等。在此基礎上,應該掌握常用的設計模式,比如工廠模式,策略模式,觀察者模式,模板方法模式,命令模式等等。我面試過很多程式設計師,沒有一個能說得上幾句的。

  4.利用工具能力

  工欲善其事,必先利其器。有了趁手的傢伙,工作效率可以提升數倍。你程式設計序,有沒有選擇一個很好的IDE,以前聽說程式設計高手都用記事本寫程式,我覺得那是一種自虐。就像以前看到的一篇文章,說一幫戶外旅行愛好者,出去旅遊,背了重重的旅行包,裡面裝著什麼壓縮餅乾等快速食品。他們寧可就著礦泉水啃壓縮餅乾,也不肯去1里路都不到的快餐店,農家菜館吃飯。工具是為目的服務的,好用,提高效率就行,形式無所謂。

  5. 英語能力

  新的技術資料都是英文的,英語國家的IT技術走在我們前面至少10年(這是我自己估計的數字,可能正在縮小)。就連印度,一個連基礎設施建設都不太完善的國家,因為其英語基礎較好,其在軟體外包領域的發展也非常迅猛,遠遠超過了我們。學英語,首先是有信心,其次就是花時間。多閱讀英文資料,貴在堅持。

6.學習能力

  在IT業混飯吃不容易,整個環境進化的太快,你不學習,就等於落後了。學習要有針對性,別今天學ruby,明天學python,後天php的。首先要認清自己的目標,自己短期目標是什麼,1年後,3年後,5年後的目標是什麼。結合這些目標,確定自己的學習計劃,人的精力畢竟是有限的。當然,多掌握幾門程式語言也是好的,可以擴充自己的知識面,重要的是為自己的目標服務。當然,不能只學習技術,要經常練習自己的軟技能,比如溝通能力,表達能力。

  7.創造能力

  普遍認為,東方人模仿能力很強,但創造能力差。我見過很多這樣的程式設計師,經常說,“這個只能這麼解決了,我想不出有什麼別的方法。”可能他根本都沒想過別的方法,或者懶得去想。對任何一個問題,找出兩種以上的解決辦法都是非常容易的,簡單的google一下,可能就是數十種。悲哀的是,有些程式設計師經常止步於自己構建的狹小領地之內。對待客戶也是這種態度,不是積極的幫助客戶解決問題,而是推脫這只是唯一解決方案。

8.文件能力

  也許有人會質疑,程式設計師跟寫文件有什麼關係。大家開源軟體也用過不少,看看Spring,hibernate,Struts等最流行的開源軟體的文件就知道,他麼的tutorial,他們的getstarted,他們的reference文件寫的多麼的易懂。其實寫程式碼也相當於寫文件,只不過用的是程式語言。同樣,寫文件,用自然語言,也相當於寫程式,簡單明瞭,清晰易懂,這樣的“程式”誰看誰舒服。同樣,對於想進階到設計師或者需求分析員角色的程式設計師,文件能力更是非常重要。

  9.抽象能力

  抽象能力是認識事物從現象到本質的能力。如果你只是停留在“見山是山,見水是水”的層次,客戶說什麼,你就做什麼,設計怎麼做,你就怎麼實現,從來不過問為什麼,也不去想他是滿足了使用者哪些方面的需求呢。這樣可能只解決了表面的問題,可能會引起返工。認識到本質,才能讓你的程式具備更大的靈活性和可擴充套件性。在做企業應用軟體開發中,抽象能力體現為對問題域的理解能力,對領域模型的抽象。合理的抽象也是程式碼重構的前提,每一次重構,都是向更好的抽象邁進了一步。

  10.程式碼評審能力

  程式碼評審和單元測試是保證程式碼質量的兩種常用手段之一。程式碼評審能力,說明了你的審美標準,知道什麼是好的,什麼是不好的,什麼是優雅的程式碼,什麼是糟糕的程式碼,你才能讓自己做的更好。

  11.單元測試能力

  沒有單元測試的程式碼,只能說是半成品。因為沒有什麼能證明你的程式碼是可以執行的。測試驅動開發是一個非常好的敏捷過程的最佳實踐。單元測試還可以作為迴歸測試,在修改程式碼時,起到警戒線標誌的作用。是否具有單元測試的意識是區分程式設計師是否合格的重要標準。寫不寫單元測試是區分平庸程式設計師和優秀程式設計師的重要標杆。

  12.DRY

  DRY是一種原則,就是Don”t Repeat Yourself.這條原則可以用到很多地方,比如你經常要編譯,打包,部署應用程式,供整合測試用。每次你都在重複你自己,寫一個自動化指令碼(比如用ant,批處理命令)來將這些工作自動化,以提高效率。