程序猿們,如果你感覺到總是在做反復的、機械的工作,你或許可以考慮找些工具幫幫你了。如果你所在的團隊號稱在做「敏捷開發」,但還是有做不完的重復勞動,也許你們還不夠敏捷。
敏捷開發所謂的快指的是「反應快」。敏捷的優勢在于用更短的迭代周期去應對不斷變更的需求,持續地交付可用的軟件。而要在短短的兩周或者一個月內交付可用的軟件,同樣意味著在這個周期內要完成集成、部署、測試等一系列的工作。如果把這些工作都交給開發人員去做,那還有什么時間好好地開發呢?
本文將從溝通、開發、質量這幾個方面來介紹一些常用和可靠的工具和它們的使用場景,它們不僅僅適用于敏捷開發。一起看看到底有哪些「重復勞動」可以被工具干掉。
自動化「溝通」
生命周期管理
Lifecycle Management
如果你的項目的需求、任務都還放在長長的Word、Excel文檔里,那么是時候找一個項目管理工具了。項目管理工具幫助跟蹤和控制項目的整個生命周期:
實時監控項目的進程
不管是項目成員或是客戶,都渴望了解項目的實時進展情況。燃盡圖、缺陷數量、項目成員變動、風險值、當前迭代交付的內容,項目管理工具可以實時統計和跟蹤這些數據。了解每個項目成員的工作
項目管理工具上可以記錄任務、用戶故事、缺陷,并指派給相應的成員。成員可以記錄每項工作所花費的時間、更改工作的狀態。開發人員可以了解需求及變更,及時和管理人員甚至直接與客戶溝通。定制開發流程
多數的項目管理工具提供了定制流程的功能,保證任何團隊都能根據自己的計劃和流程完成工作。隨時隨地的辦公
你會不會在下班時間手癢去查收一下工作郵件呢?或是說你頻繁出差、跟外國友人合作,多數的項目管理工具現在都提供移動端App,保證你隨時隨地的透明化辦公。
常用的項目管理工具有:Jira, Redmine, Trello, Teambition, Visual Studio Team Foundation Server
消滅重復勞動:手工分析和跟蹤項目進度、從長長的文檔中找兩行關于自己工作的需求
預計每周節省時間: 5小時
聊天工具
Communication Tool
很多人可能都會用QQ、微信、Skype for Business來交流工作,他們也許是夠用了,可是就是有這么一個軟件異軍突起,專注于企業級的聊天工具——Slack,連微軟都不得不做了一個仿制品。Slack這類的聊天工具的特別之處在于:
分組通訊
不管是全公司的公用頻道、項目頻道、某項技術交流的頻道還是臨時成立的討論組、私信聊天,Slack都清楚地區分開來。這些頻道和分組都是永久保留的,不用擔心聊天記錄的丟失。Slack也提供@的功能,可以讓同事不會錯過你的發言,他也可以隨時查看所有@他的聊天記錄。出色的搜索和文件管理
Slack提供強大的聊天記錄的功能,可以快速定位到之前的某條記錄。你也可以對某條記錄做星標,保證你不會漏掉BOSS給你布置的任務。Slack也會保存聊天中所有的文件,提供實時的預覽功能,你也可以很輕松地查看某個分組下所有的文件。集成管理工具
Slack可以接收來自項目管理工具、云存儲平臺、版本控制平臺的各類消息通知。讓你專注于工作。跨平臺同步
跟項目管理工具一樣,現代的聊天工具必然是跨各個終端的,保證你隨時隨地的加班(誤)。
不管是Slack還是Microsoft Teams,都讓溝通更加的透明、高效,「邊聊天邊工作」吧。
消滅重復勞動:打開各個工具平臺查看通知、發送一句話郵件
預計每周節省時間: 4小時
自動化「開發」
版本控制
Version Control
版本控制系統是自動化開發的基礎。這里不贅述版本控制的重要性了。
常用的版本控制工具有:SVN, Bitbucket, Gitlab, GitHub, Perforce
消滅重復勞動:集成代碼、版本回溯
預計每周節省時間: 8小時
依賴管理
Dependency Management
開發中很常見的外部依賴,你還在手動下載和導入嗎?如果你不是一個人在開發呢,如果版本更新了呢,這種傳統的方式會變成一種噩夢吧。相信還在這樣做的團隊已經非常少了。
這里介紹一些常用的工具:
編程語言 | 工具 |
---|---|
Java | Maven, Ant |
Node.js | NPM (Node Package Manager) |
JavaScript | Grunt |
iOS | SPM (Swift Package Manager), CocoaPods, Carthage |
拿Maven來說,把各類依賴集中地放在「倉庫」,只需要簡單的配置文件,就可以幫助開發人員自動管理和下載依賴。如果你的工程需要一個集成一些重復利用率很高的依賴的基礎模板,Maven也可以做到。
通常來說,依賴管理工具同時也是構建工具,Maven可以進行編譯、單元測試、部署,一個按鈕加一條預設的命令腳本,搞定!
消滅重復勞動:下載和導入依賴、保持最新依賴版本
預計每周節省時間: 2小時
持續集成
Continuous Integration
由于軟件通常是由多個模塊組成的,集成它們是生成交付軟件的必經過程。怎么持續集成?簡單來講就是把剛剛提到的版本控制和依賴管理結合起來,放到一個平臺上,持續地對代碼進行合并、審查、測試、編譯、部署,可視化的平臺還可以有效的減少項目人員的溝通成本。
持續集成并不是一個工具的名字,更重要的是使用者的思維。如果你所謂的「持續」是每天登錄平臺手動點一下「構建」的話,那恐怕就南轅北轍了。兩點建議:
如果你的工程的編譯時間不長,建議配置一個觸發器:在每一次主分支代碼提交之后,都自動做一次集成,以保證代碼提交的正確性,最快速度做出反應。
如果你的工程的編譯時間相對較長,或是服務器環境需要相對穩定的版本部署計劃,建議配置一個定時器進行集成部署。
常用的CI工具有:Jenkins, GoCD, Travis CI, Bamboo
消滅重復勞動:枯燥的集成和審查流程、服務器部署
預計每周節省時間: 8小時
自動化「質量」
靜態分析
Static Analysis
自動化質量很容讓人聯想到「自動化測試」,實際上代碼審查也可以自動化。靜態分析(也叫靜態檢查、靜態掃描)不直接執行程序本身,而是對現有的代碼結構進行分析、預測,最終生成一個報告,包含可能出現的缺陷以及對代碼規范、質量等的各項評定。
常用的靜態分析工具有:Coverity, CheckStyle, FindBugs, PMD, JSLint, ESLint
除此以外,很多IDE本身也集成了相關的功能。
消滅重復勞動:代碼規范檢查、基本代碼審查
預計每周節省時間: 4小時
自動化測試
Automation Testing
由于敏捷的迭代的特性,每次迭代的交付都必須經過重復性很強的測試,不論是集成測試、回歸測試以及基本的性能測試,如果能自動完成,就是再好不過了。
常用的自動化測試工具有:Selenium, Mocha, QTP, AutoRunner, RFT
消滅重復勞動:復用率高的手工測試
預計每周節省時間: 5小時
靜態分析工具和自動化測試工具還可以和持續集成環境配合使用,從而達到真正高校的自動化。
結語
減少枯燥乏味的重復勞動,項目成員才能真正的享受在工作之中。當然,別讓使用工具成為另一種負擔。
本文提到的工具很有限,歡迎大家留言指正和交流
想了解敏捷開發,你還可以參考
《敏捷開發從信任團隊開始》
《「便利貼」里的項目管理 | 利用看板提升溝通效率》