要想成爲一個優秀的碼農, 要求具有的能力挺多的, 我這裏根據個人經驗, 列舉幾個我認爲比較重要的。 git
1程序員
養成計算機的思惟方式。github
計算機是個典型的只懂得順序,循環,分支的笨蛋, 它遵循教條主義, 只按特定的指令辦事。 算法
可是人類世界的需求又是如此複雜,更要命的是需求是用天然語言描述的, 這就和計算機之間造成了一個巨大的鴻溝。 編程
很明顯,這個鴻溝須要苦逼的碼農去填充。 數據結構
碼農得理解人類需求, 學會計算機的思考方式, 理解計算機的指令, 而後努力的把翻譯工做作好。 框架
例如: 經理給你一個模塊的需求之後, 你得站在計算機的角度, 把它用現有的數據結構或者自定義數據結構, 再加上通常不那麼複雜的算法,用計算機語言把它描述出來, 這是基本功, 和具體語言無關, 和框架無關。編輯器
這個思惟習慣養不成, 作不了碼農。分佈式
2工具
定位問題的能力
20世紀初福特公司一臺電機出了毛病,幾乎整個車間都不能運轉了,相關的生產工做也被迫停了下來。
公司調來大批檢修工人反覆檢修,又請了許多專家來察看,可怎麼也找不到問題出在哪兒,更談不上維修了。福特公司的領導真是火冒三丈,別說停一天,就是停一分鐘,對福特來說也是巨大的經濟損失。
這時有人提議去請著名的物理學家、電機專家斯坦門茨幫助,你們一聽有理,急忙派專人把斯坦門茨請來。
斯坦門茨仔細檢查了電機,而後用粉筆在電機外殼畫了一條線,對工做人員說:「打開電機,在記號處把裏面的線圈減小16圈。」人們照辦了,使人驚異的是,故障居然排除了!生產馬上恢復了!
福特公司經理問斯坦門茨要多少酬金,斯坦門茨說:「很少,只須要1萬美圓。」1萬美圓?就只簡簡單單畫了一條線!當時福特公司最著名的薪酬口號就是「月薪5美圓」,這在當時是很高的工資待遇。
1條線,1萬美圓,一個普通職員100多年的收入總和!斯坦門茨看你們疑惑不解,轉身開了個清單:畫一條線,1美圓;知道在哪兒畫線,9999美圓。
在軟件開發領域, 也常常會遇到相似的狀況: 軟件出了Bug , 你們花費了巨大的精力,日夜奮戰,最後發現只是有個文件打開後忘記關閉了 。只須要一行代碼就能修復!
因此能迅速定位問題的人才是牛人。
碼農定位問題有這麼幾種辦法, 一是查看錯誤日誌,推斷錯誤的可能, 這是最直觀也是最直接的了。
只不過不少狀況下, 真正的兇手並不在兇殺案的現場, 這時候就須要進行分析了, 能夠一步一步的調試代碼, 找到真兇, 也能夠在代碼中輸出日誌查看運行時行爲, 但不管哪一種方法都是費時費力。
更悲慘的是, 很多問題是生產環境出現的 ,根本無法調試。
好的碼農可以把軟件在腦海裏創建一個運行的模型,設置輸入輸出, 仰起頭在腦海裏模擬運行一下, 很快就能找到問題所在。
3
搜索的能力
一我的不可能掌握全部的知識, 在工做中遇到不懂的地方, 不少時候無法系統的學習, 還好咱們有搜索這個利器可使用。
但是有的人試了好多關鍵詞都不能找到理想的內容。
而有的人幾乎是一擊而中, 無往而不利。
這背後就是對問題本質的理解是否到位。
學會選擇最合適的關鍵字進行搜索, 也是碼農很重要的能力,多多練習吧。
4
熟練使用IDE的能力
我不反對直接使用記事本等文本編輯器進行編程, 我只想說熟練使用IDE,能極大的提升編程的效率。
別的不說, Eclipse IDE至少提供這些功能:
智能提示: 語法上的任何錯誤都馬上給你顯示出來。
自動補全: 能夠省去敲入不少代碼
格式化:瞬間讓代碼好看不少
代碼瀏覽: 輕鬆的打開一個類, 查看類的繼承體系, 方法的調用層次
重構: 對付髒代碼的絕對大殺器。 文本編輯器是絕對沒有的。
因此想編程如飛的話,仍是趕快搞定一個IDE吧。
5
重構代碼的能力
優雅的設計和漂亮的代碼不是一會兒就設計出來 、編寫出來的。
而是在一次次的迭代, 一次次的重構下慢慢的浮現的。
因此重構就顯得很是重要, 若是你沒有掌握這個技能, 趕忙去看看 Martin Flower的那本經典的書吧:《重構:改善既有代碼的設計》
6
寫測試的能力
這裏說的測試主要是單元測試, 這一部分的工做是由程序員,而不是測試人員完成的。
寫單元測試主要是保證本身寫的業務模塊是按照預期來工做的。
此外,這些測試也會成爲一種「文檔」,用來描述軟件的行爲, 永不過期。
更重要的是,這些測試將會成爲負責任的哨兵: 未來你改動代碼的時候, 運行這些測試將會告訴你是否是對原來的邏輯形成的損害,這種迴歸測試的功能是價值無限的。
7
熟練使用SCM的能力
SCM :即源代碼管理系統, 例如SVN, Git, CVS等。
如今的軟件開發都是團隊合做, 甚至是分佈式合做, 因此一個SCM系統幾乎是團隊的必備。
平常的工做都是從SCM中check out 代碼開始, 因此熟練掌握至少一個SCM是碼農的基本能力, 若是還不會的話, 趕忙到github上開個免費帳號,學習一下吧。
8
構建軟件的能力
構建軟件就是把代碼從SCM中下載下來, 編譯、測試 、打包、部署到測試環境或者生產環境。
這個過程若是是手工的, 那就太無趣了。
這個過程固然應該是自動化的,碼農至少應該學會像Ant, Maven這樣的工具和像Jekins這樣的平臺, 幫助咱們完成軟件的構建。