作為 IT 從業人員,你覺得有什麼工具大大提高了你的工作效率?

昨天在看你用過哪些極其好用的文具? 這個問題的時候,突然想到作為程序猿,我用的這個杯子真他喵的好用啊,問問大夥,你在搞程序的時候,哪些東西讓你覺得大大提高了你的工作效率呢?軟硬體不限。

第一樣:程序猿水杯

第二樣:sublime文本編輯工具,基本上我能寫到的代碼都能高亮顯示出來,打開速度溜溜的

第三樣:碼農必備,我是程序猿,我為自己帶鹽,你好程序,hello word


雙顯示器


寫代碼寫累了,來答個題。 多圖慎入!

1.印象筆記·剪藏。
重點推薦這一個!
我相信:養成良好的記錄習慣,是成為一個偉大程序員的必經之路!雖然我還是個屌絲程序員,哈哈哈。
Chrome插件,一鍵把網頁存到Evernote上,選個記事本打上標籤,查過的東西以後能輕鬆的再翻出來。

2.Chrome收藏頁面

其實就是收藏的時候把名字刪掉,把常用的放在最外面,很方便有木有!

3.Gliffy
Chrome的插件,免費畫UML的東東,存在google drive里,實現公司與家裡的同步,棒極了!

4.SourceTree
很好用的Git界面管理工具。

這個東西還有個好處,就是有一套非常好的幫助文檔,幫助你理解Git,很適合初學者。

而且他還在網上有個Git的教程,感覺很不錯,附送地址:
Git Tutorial: Basics

5.Halo Word
Chrome插件,翻譯工具,按command鍵選詞就能翻譯,上英文網站無壓力。個人感覺比有道好用點。

6.JSON Editor
Chrome插件,驗證json格式是否正確

7.Postman
Chrome插件,專門測試網頁跳轉

先寫這麼多,有空再補充。繼續寫代碼去了...

----------------------------------------------Update----------------------------------------------
有人贊誒,繼續補充幾個吧:

8.XtraFinder
OS X的Finder實在是垃圾啊,各種反人類,用慣了Windows的真的用不習慣。還好發現了XtraFinder,這個Mac下的Finder插件,功能非常強大,支持標籤頁,雙Panel,還能Copy文件的路徑,誰用誰知道!

9.Synergy
一套鍵鼠操作多台電腦的工具。

程序員最大的效率瓶頸是哪裡?哼哼,就是編譯或部署的時候!一開始編譯就去上個知乎啊,刷下微信啊,看下微博啊,編譯好了都不知道....時間就這麼浪費了,思維也被打斷了!

雙顯示好是好,但部署的時候還是會卡吧。反正我是用兩台電腦,有時候一台改BUG一台部署,有時候一台寫C#一台寫Java,還有時候一台PS圖片,一台做粒子效果。哈哈,好像有點裝逼了,Sorry。
附送鏈接:
Synergy - Mouse and keyboard sharing software

10.曲徑
翻牆利器,就是有點貴,貌似最近又漲價了,不過穩定性還是很好的。我最喜歡曲徑的地方其實是它的支付方式,可以支持Paypal。本人有一部分來自國外的收入會被打進Paypal,在國內要取出來手續費實在太貴了,曲徑給了我一個消費的機會哈哈哈哈。


嗯,打地鋪睡覺去,有空再補充····


我也談談自己的一些提高開發體驗經驗,就說軟體工具部分。

這裡的經驗基本上都是沖著一個原則去的:凡是需要重複做的,必須使用自動化工具完成。

1. 版本控制

一般自己的項目使用git,公司開發規定用svn。反正不管怎麼樣,版本控制少不了。有個說法,沒有版本控制的項目,就等於沒有。

版本控制的好處太多了,用過的人都知道。等於歷史版本 + 代碼備份了。這個提到的很多,就不多說了。

2.單元測試工具

寫程序需要驗證,如果快速知道新的代碼和過去的寫的代碼不衝突,這個時候單元測試就能起到作用了。

當然單元測試的功能不僅僅是這個:

  • 驗證代碼正確性和可靠性
  • 驗證新代碼不和原有代碼衝突
  • 驗證自己代碼不合團隊其他人員代碼有衝突
  • 驗證合併是否有衝突
  • 驗證快速
  • 可以作為API使用實例
  • 跨平台和跨環境測試

這個是現代開發流程的基本模塊之一,沒有單元測試的項目,不是一個合格完整的項目。

有了單元測試,就再也不用擔心在大項目中,自己做的小修改有會有什麼大影響了。開發壓力大大減少

PHP的我用的是PHPunit,JavaScript用過的就多了,Jasmine,Qunit,Mocha等工具(不管哪一個,至少要用到一個)C#一般用nUnit。還有各種mock,faker輔助。

3.功能測試工具

就是交互界面測試,也可以是界面樣式測試。代碼寫的方式大致過程和單元測試差不多,不過單元測試每個單元都是獨立的,理論上不應該有任何依賴關係(只要有依賴關係就叫做集成測試);而功能測試,就是最後成品的測試,必須把所有依賴打開,並且在界面上進行測試。

界面功能測試的優點:

  • 速度比人工快
  • 模擬真人操作
  • 可以錄像後導出測試代碼
  • 可以抓圖

缺點:

  • 依賴多,依賴的環境變化可導致代碼失效
  • 速度相對單元測試慢很多
  • 測試成功率可能不是100%

功能測試,也是自動測試的一種,至少解放了大量重複性勞動,大大提升界面功能開發的速度。


功能測試工具主要有phantomjs和Selenium。我兩個都用,根據不同情況使用不同策略。


4. 依賴管理/程序包管理器

有了依賴管理,從此不用再手動去每個庫的官方網站下載和更新庫了。配置一下,運行一下命令行,然後就下載好了,定時在運行一下命令行,所有庫又更新到最新版本了。開發體驗大大提高。


列舉一下主要好處:

  • 自動安裝依賴庫
  • 自動更新依賴庫
  • 自動安裝/更新依賴庫的依賴
  • 最新庫和現有項目有衝突,可以強制降級依賴庫
  • 開發依賴和項目依賴分開,發布版本時候可以自動刪除所有開發依賴庫
  • 版本控制可以只收入依賴管理配置,無需收入依賴庫的目錄,大大節省版本控制大小
  • 統一團體所有人員依賴庫的版本

依賴管理下載速度快,免除開發人員手動的重複勞動。大大提高開發效率


PHP的依賴管理是composer,js的依賴管理是npm和bower,C#的是nuget,


5. 流程管理/構建工具

這個叫法很多還有叫做任務自動管理工具的,不管是什麼名字,都是一個意思:自動化流程管理。


簡單的說從源代碼到產品之間,中間還有一個複雜的過程,一般大致如下:

  • 代碼清潔
  • 編譯
  • 配置
  • 測試

一般對開發人員來說,凡是重複的,必須使用工具自動完成。開發人員是不願意重複做這些流程,所以需要流程管理,把這些步驟全部用代碼編排好,然後執行一個命令行,讓電腦反覆執行去。沒有流程管理的項目不是一個好項目


JavaScript有grunt和gulp,PHP有Phing,Java有ANT。我用grunt比較多。


6. Live Reload

Live Reload一般是和流程管理一起使用的,(也有獨立使用的版本)。獨立出來說也是為了體現程序員一個終極特質:懶。凡是重複的,必須使用工具完成。Live Reload就是這個體現:按F5是個重複的低效率行為,必須交給工具完成


Live Reload的功能說起來很簡單:

  • 檢查文件是否變動
  • 如果變動刷新頁面

給開發人員帶來的直接好處就是查看頁面變動,只要按ctrl+s保持代碼就行了,連f5都不用按了。就這好處,足以把Live Reload這個工具當作神器了。配合流程管理工具,只要保存代碼(ctrl+s),就馬上進行構建,構建完成自動刷新頁面。


我用的Live Reload是grunt-contrib-watch。

7.代碼質量分析工具

人工檢查代碼的效率是比較低下的,所以質量分析這一塊可以作為開發輔助工具,來提高開發質量


常見的代碼質量工具有:

  • 語法檢查,保證代碼語法正確,可以跨平台,使用最佳實踐
  • 代碼風格檢查,保證團隊代碼風格一致
  • 代碼壓縮,減少尺寸
  • 重複代碼檢查
  • 無用代碼檢查
  • 模塊複雜度分析
  • 模塊連接分析

等等,讓然還有其他的質量分析,這些都是可以整合到流程管理上的。


JavaScript和PHP的用的比較多,Jshint,Jscs,uglifyjs,phpcpd,phpcs,phpdcd,PHPLOC等等工具,可以幫助開發人員提高代碼質量,控制團隊代碼風格。


8.持續集成

有人和我說過,持續集成可以讓你開發水平提高達到到另外一個層級。當我實踐後,終於明白持續集成的魅力所在了。


要會持續集成,你首先必須學會以上6條(live reload除外),以上6條基本就是持續集成的幾個基礎模塊,學會後,你自然而然就已經會了持續集成了。

持續集成的主要流程如下

  1. 檢查版本控制庫是否更新
  2. 如果更新,就下載最新版本的代碼
  3. 構建
  4. 測試
  5. 報告

當你設置好一個持續集成的項目後,以上的步驟應該就是全自動的了。還是那句老話: 凡是重複的步驟,應該用工具來完成。而持續集成就是這個終極工具。


持續集成其實就是流程管理的一個升級版本,或者說一個擴充。它們都是自動流程工具。它們的差別是:

  • 流程管理主要在本機(開發人員自己的開發環境)上執行,而持續集成則是在一個獨立設置的環境下執行。
  • 流程管理繼續的是本機代碼,而持續集成構建的是版本控制中保存的代碼
  • 團隊中任何一個人push代碼到版本控制中,持續集成就開始構建驗證新代碼的可靠性。
  • 項目流程配置完成後,流程管理需要執行命令行,持續集成應該全自動
  • 流程管理是持續集成的一個模塊,屬於持續集成的構建模塊
  • 持續集成會有更多後續的專業功能,比如說產生報告,錯誤通知,構建歷史,測試歷史等開發新型

我們可以設想一下這樣的一個情況,在有20-50個人的團隊在開發一個PHP項目,每個人每天至少往版本控制中push大約10次新代碼,而這個項目你又要保證在3個主流的瀏覽器中功能一致,樣式相同,而這個項目又必須跨平台,可以在mac,window,linux上都可以運行,而且還要保證PHP5.4~5.6都可以運行。這個時候,持續集成系統的優勢就會顯示其真正的威力了。


總之,在一個專業項目中,持續集成服務所提供的自動構建和專業報告,可以把項目開發的專業水準再次提高到一個新的層次當中。


我用過的持續集成是Jenkins。


文章到此算完結了。其實開發中,還有很多優秀的工具,但無法和這些主要的開發工具相比,就不在這裡說了。


Deadline


VPN


Stack Overflow


16GB 內存。從此再也不卡了,舒坦。


單身


IDE精準的intellisense和容易操作的圖形化調試器。Visual Studio現在連線程或者Task之間的拓撲結構都能給你畫出來,client發request給server還能從client直接單步跟進server,顯然在開發業務邏輯的時候,不是那些面向指令集的調試器可以相比的。


固態硬碟,雙屏顯示器,Visual Studio 2013


看到既有人說結對編程,也有人說單身,這讓我想起了 Rubber Ducking(橡皮鴨)。

此概念是參照於一個故事。故事中程序大師隨身攜帶一隻小黃鴨,在調試代碼的時候會在桌上放上這隻小黃鴨,然後詳細地向鴨子解釋每行代碼。


許多程序員都有過向別人(甚至可能向完全不會編程的人)提問及解釋編程問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述代碼的意圖一邊觀察它實際上的意圖並做調試,這兩者之間的任何不協調會變得很明顯,並且更容易發現自己的錯誤。如果沒有玩具小鴨子也可以考慮向其它東西傾訴,比如桌上的盆栽,鍵盤滑鼠。

該方法流行開來後,許多程序員紛紛效仿,由此誕生了 Saber調試法(即使用 Saber 手辦代替小黃鴨),初音調試法(即使用初音未來手辦代替小黃鴨)等。

- a sad story.


Mac下的dash,查閱文檔利器


emacs就不多談了,我的主力工具,詳情見我的"一年成為emacs高手"

其他人介紹的軟體我都用過,有些不錯,這裡推薦幾個小眾的.

vimdiff是vim自帶的工具,可以用來做代碼合併,速度飛快.免費,默認所有伺服器都有安裝,更強大一點可以再裝個fugitive.vim

i3是我非常喜歡的一款Linux下的平鋪式桌面管理器,可以全鍵盤調整窗口的布局.

Firefox下的Keysnail是把firefox模擬成Emacs的軟體.極其強悍,其本身又有一大堆第三方插件(自帶插件的插件一般都是牛的標誌,順便提一下)

scrot是Linux下基於命令行的截圖軟體,可無縫嵌入我的工作流.

aspell是Linux下的命令行拼寫檢查,配置簡單,可以檢查camel case的變數名,函數名.

percol是mooz開發的天才作品,假設說我精通各種商業開發工具後的開發效率是1的話,那麼精通命令行的開發效率是10,但是有了percol後我的效率是100. 舉個例子,我曾經認為Linux的唯一缺陷是沒有一個total commander之類的文件管理器方便我查找文件. 有了percol後我根本不care了.

fasd, clvv/fasd · GitHub ,好像是個華裔寫得,雖然最近不更新了,但是是我每日比用的工具,快速進入你以前進過的目錄,打任意關鍵字匹配.

git, 不要用那些git的圖形前端,都是閹割版git,命令行git彪悍無比了. 比如"git add -p",或者"git checkout -p",可以結合percol.
參考我的git設置.giconfig我的bash關於git的設置 my bash setup

我自己寫的redguardtoo/NinjaWebCoder · GitHub是用鍵盤從網頁提取代碼片段的利器,我用它來寫jira飛快.


Google


還是錢。

錢才會提高生產力。


錢夠了,買好的人體工學椅子,好的機械鍵盤,大容量的SSD,最高配的MacBook Pro,這些讓工作環境更舒服。


錢夠了,操作系統買正版的,不要讓員工把時間放在到處折騰破解版上,什麼VisialAssist,Increbuild,SublimeText都買下來,這才是提高工作效率啊!


---------------2014-09-12增加---------------
早在《論語》裡面就提到了,欲善其事,先利其器。

對IT從業而言,提高工作效率就意味著專註於業務,不必為一些雞毛蒜皮的小事操心。錢多點,可以讓更專業的人來為你做這些事情,讓你把更多的精力和時間放在自己的工作上,豈不是提高工作效率?!


Deadline


yaourt
httpie
i3-gaps
vimium
zsh
ptipython
ssr-redir
socat
wireshark
nethogs
mtr
samba
mycli
pgcli
grep
awk


Everything!!!!!!!!!!


1.clover:把多個資源管理器窗口以標籤頁的形式組織在一起,有著和chrome瀏覽器一樣的外觀,可以添加書籤,可以復用chrome的主題。當你同時開了N個資源管理器窗口,然後需要一個個找你當前需要的那個時,你就知道clover是多麼的方便!
2. mousewithoutborder,一套滑鼠鍵盤控制兩台電腦,傳文件極其方便。
3. ultraedit的列模式、正則表達式搜索替換。
4. grep,和grepwin的。可以迅速查找那些文件包含指定的字元串,速度極快!
5. visual assist:用visual studio的人應該都知道
6. sourceinsight
7. 點個讚唄:)
暫時先想到這麼多.


1. 印象筆記,不管記點子、做規劃、理流程還是開會記錄都極其好用,各種端同步夠爽
2.Evermemo,國內團隊做的可以同步到印象筆記的手機便簽,夠輕便
3. Visio,流程圖利器
4. Mindmanager,思維導圖
5.如果紙筆用的好,能解決以上問題


推薦閱讀:

TAG:程序員 | 工具 | 效率 | IT 行業 |