最新、程序員應該具有的12種能力!

    下面是我總結的一個合格程序員應該具有的 12種能力。中國軟件行業的崛起,靠的是合格的程序員。任何華麗的管理制度都不能保證軟件項目的成功交付,合格的程序員就是有力的保證,是項目成功的基 礎。寫下這些,是爲了給剛剛進入程序員這個職業的新同窗們一點參考。我一直覺得,當程序員是很辛苦的,若是不是真正的喜歡,很難堅持下去。若是真的不喜歡 這個職業,也該尊重這個職業,尊重本身,趕忙改行。php

  1. 編程語言能力java

  不用多說,做爲合格的程序員,精通一門語言是必須的。這種精通,不是說看了一本《24小時精通XXX》,抄了幾個程序就能說精通的,要靠長時間的積累和浸淫。python

  2.編碼能力程序員

  我曾經看多不少程序員寫的代碼,在同一個jsp或者java源文件裏,出現了三種以上的對方法的命名方式,有下劃線間隔的,有全大寫的,有拼音首 字母的。就像一個菜市場,雜亂無比,估計10天后,他本身都沒法看的懂。遵照編碼規範,是一個程序員最基本的要求,可悲的是,不少程序員根本沒有意識到這 個問題的嚴重性。隨意堆砌網上搜來的代碼,根本無論可讀性和可維護性,只要能實現功能就好了,心想作完這個項目,就拍拍屁股走人了,缺乏最基本的職責素 養。我常常把代碼必須成程序員的孩子,你就是是孩子他爹,孩子他媽,是有感情的。對你本身的孩子,你能不仔細呵護嗎?你是稱職的父母嗎?這是我編寫的一個 Java編碼規範,供你們參考,這裏能夠下載 http://www.ijiami.cn/newsInfo?id=519&v=2  另一個就是註釋,要注意不是爲了註釋而註釋。對類,以說明職責爲主;對方法,以說明意圖爲主;對方法體,以說明實現思路爲主。對於大段大段的代碼,要分段,使用空行隔開,並使用行內註釋進行說明。面試

  思惟的條理性,寫代碼以前,先簡單計劃一下,用天然語言把流程寫下來,用於整理實現思路。不要看了需求或設計以後,立刻就敲代碼了,敲完代碼立刻 就debug。花點時間思考,敲代碼只是最後一個很簡單的工做,不要把本身變成一個代碼打字員,編寫邊想,寫了刪,刪了寫。安安靜靜把實現過程想清楚,在 腦子裏先實現一遍。再去敲代碼,水到渠成。編程

  3.面向對象思惟能力設計模式

  現在,多數編程語言都是面向對象的編程語言。而這些面向對象的編程語言的共同的精髓就是面向對象的思想。掌握這些比面嚮對象語言自己更重要,好比 對繼承,多態,重載的理解。對面向對象基本原則的理解,好比開閉原則,接口隔離原則,單一職責原則等。在此基礎上,應該掌握經常使用的設計模式,好比工廠模 式,策略模式,觀察者模式,模板方法模式,命令模式等等。我面試過不少程序員,沒有一個能說得上幾句的。ruby

  4.利用工具能力jsp

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

  另一個經常使用的工具就是日記本,好聽點能夠稱爲知識管理工具,我用的是myBase,感受很是好用,在以前,個人全部的片斷內容都是記錄的單獨的文本文件裏的,很是很差找,管理也很混亂。

  常常上互聯網,看到好多好的資料想保存下來,做爲往後查看之用.一開始,我用的是firefox自帶的書籤,可是本身分類太累,多了以後不便於查找,很麻煩。後來用了得樂書籤(del.icio.us)的firefox插件,很是方便,如今成爲了我必備的一個工具。

  還有一個最重要的工具就是搜索引擎了,我裝了google for firefox插件,感受不錯,還有英文翻譯功能。按照我同事的說法,內事用baidu,外事用google。不少技術資料都是英文的,用google搜 索效率高一些。搜索引擎用好了,就等於打開了一扇通向知識寶庫的門,使用搜索引擎,關鍵字選擇很重要。

  常常去瀏覽大牛的blog,逐個網站訪問很麻煩,去看了又可能沒有更新,能夠藉助於RSS訂閱工具,我是用iGoogle桌面工具,天天早上花半個小時掃一下,大牛的最新文章一覽無餘了。

  5. 英語能力

  新的技術資料都是英文的,英語國家的IT技術走在咱們前面至少10年(這是我本身估計的數字,可能正在縮小)。就連印度,一個連基礎設施建設都不 太完善的國家,由於其英語基礎較好,其在軟件外包領域的發展也很是迅猛,遠遠超過了咱們。學英語,首先是有信心,其次就是花時間。多閱讀英文資料,使用金 山詞霸,google的firefox插件等工具配合,貴在堅持。

  6.學習能力

  在IT也混飯吃不容易,整個環境進化的太快,你不學習,就等於落後了。學習要有針對性,別今天學ruby,明天學python,後天php的。首 先要認清本身的目標,本身短時間目標是什麼,1年後,3年後,5年後的目標是什麼。結合這些目標,肯定本身的學習計劃,人的精力畢竟是有限的。固然,多掌握 幾門編程語言也是好的,能夠擴充本身的知識面,重要的是爲本身的目標服務。

  要想系統的學習一門技術或工具,看書是最好的方法。看完後,而後上網找相關資料,進行深刻學習。學習要抓緊一切能夠利用的時間,好比電腦啓動要花1分多鐘,旁邊放一本書,能夠看上幾頁了。公交車上,地鐵上也能夠看。

  固然,不能只學習技術,要常常練習本身的軟技能,好比溝通能力,表達能力。你能夠把本身學到的東西,解釋給本身的同事聽,既加深了理解,又增進了同事之間的交流。學習的最高境界就是你可以把學到的東西解釋給別人聽,這才說明你理解了。在學習心理學上,稱之爲構成主義。

  我學同樣東西,老是先上網瞭解有沒有相關書籍,若是想學,就買一本或者去圖書館找相關的書來讀。我買的書,家裏快放不下了(到目前位置,我買了1 萬多塊的書)。我多半是把目錄看完,瞭解這本書講解的主要內容,而後須要的時候,我就能夠當即補充它進入到個人知識結構。每一個人可能都有本身的學習方法, 意識到學習的重要,並可以根據須要補充本身的知識,這種能力更重要。

  7.創造能力

  廣泛認爲,東方人模仿能力很強,但創造能力差。我見過不少這樣的程序員,常常說,「這個只能這麼解決了,我想不出有什麼別的方法。」可能他根本都 沒想過別的方法,或者懶得去想。對任何一個問題,找出兩種以上的解決辦法都是很是容易的,簡單的google一下,可能就是數十種。悲哀的是,有些程序員 常常止步於本身構建的狹小領地以內。對待客戶也是這種態度,不是積極的幫助客戶解決問題,而是推脫這只是惟一解決方案。

  打破這一思惟定勢的首先的一個辦法就是在面臨一個問題時,首先想到的是「沒有不可能」,或是「一切皆有可能」,前面那個是阿迪的廣告語,後面是李 寧的。只有這樣去想,才能尋找解決問題的別的出路,即便最後咱們試了不少種辦法,仍是隻有着一種解決方案,但咱們在這種尋找解決方案的過程當中,經常會產生 不少好的想法,這樣纔會使咱們真正深入思考一個問題。建議你們看一看《水平思考》這本書,他提供了一些進行創造性思考的方法和工具。

  但我認爲,堅持認爲存在另外一種解決方案的信念是第一位的,方法和工具都是其次。

  8.文檔能力

  也許有人會質疑,程序員跟寫文檔有什麼關係。你們開源軟件也用過很多,看看Spring,hibernate,Struts等最流行的開源軟件的 文檔就知道,他麼的tutorial,他們的getstarted,他們的reference文檔寫的多麼的易懂。其實寫代碼也至關於寫文檔,只不過用的 是編程語言。一樣,寫文檔,用天然語言,也至關於寫程序,簡單明瞭,清晰易懂,這樣的「程序」誰看誰舒服。一樣,對於想進階到設計師或者需求分析員角色的 程序員,文檔能力更是很是重要。

  word是一個最實用的工具,不少程序員,多級編號都不會用,索引目錄也不知道如何生成,更別靈活應用樣式了。不少排版都是所謂的dirty work。垃圾樣式一大堆。其實,靜下心來,稍微學習一下,就能寫出一篇格式漂亮的文檔。

  9.抽象能力

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

  10.代碼評審能力

  代碼評審和單元測試是保證代碼質量的兩種經常使用手段之一。代碼評審能力,說明了你的審美標準,知道什麼是好的,什麼是很差的,什麼是優雅的代碼,什麼是糟糕的代碼,你才能讓本身作的更好。

  11.單元測試能力

  沒有單元測試的代碼,只能說是半成品。由於沒有什麼能證實你的代碼是能夠運行的。測試驅動開發是一個很是好的敏捷過程的最佳實踐。單元測試還能夠 做爲迴歸測試,在修改代碼時,起到警惕線標誌的做用。是否具備單元測試的意識是區分程序員是否合格的重要標準。寫不寫單元測試是區分平庸程序員和優秀程序 員的重要標杆。

  12.DRY

  DRY是一種原則,就是Don't Repeat Yourself.出自《程序員修煉之道-從小工到專家》。這條原則能夠用到不少地方,好比你常常要編譯,打包,部署應用程序,供集成測試用。每次你都在 重複你本身,寫一個自動化腳本(好比用ant,批處理命令)來將這些工做自動化,以提升效率。

  還有一個就是咱們常常在不一樣的地方切換IP,若是每次手工作,也很是浪費時間,寫一個bat命令能夠解決,找一個小工具也能夠解決。

  編碼時,對代碼的copy複用也是在重複你本身,雖然拷貝過程很爽,可是維護一致性就要付出巨大的工做量,特別是未來維護的人不是你的時候,使用 代碼生成工具能夠解決這個問題。相似的例子太多了,若是你發現你常常作一些重複的工做,就要警戒了,是否違背了這個原則,想一些辦法將他們自動化。好東西就是要分享 、qq2102203684歡迎交流!

相關文章
相關標籤/搜索