作為 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條基本就是持續集成的幾個基礎模塊,學會後,你自然而然就已經會了持續集成了。
持續集成的主要流程如下
- 檢查版本控制庫是否更新
- 如果更新,就下載最新版本的代碼
- 構建
- 測試
- 報告
當你設置好一個持續集成的項目後,以上的步驟應該就是全自動的了。還是那句老話: 凡是重複的步驟,應該用工具來完成。而持續集成就是這個終極工具。
持續集成其實就是流程管理的一個升級版本,或者說一個擴充。它們都是自動流程工具。它們的差別是:
- 流程管理主要在本機(開發人員自己的開發環境)上執行,而持續集成則是在一個獨立設置的環境下執行。
- 流程管理繼續的是本機代碼,而持續集成構建的是版本控制中保存的代碼
- 團隊中任何一個人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
還是錢。
錢才會提高生產力。
錢夠了,買好的人體工學椅子,好的機械鍵盤,大容量的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.如果紙筆用的好,能解決以上問題
推薦閱讀: