無論是創(chuàng)業(yè)軟件團(tuán)隊(duì),還是企業(yè)級規(guī)模化軟件研發(fā),都會遇到提升管理能力、提升研發(fā)效率的問題。為了解決這兩個問題,許多軟件研發(fā)工具平臺也營運(yùn)而生:微軟、IBM、HP、Atlassian、Rally、Collabornet、Polarion……等廠商都推出了各具特色的產(chǎn)品,而近年來新生的Slack、teambition等平臺也帶來了新的理念和產(chǎn)品,受到了許多團(tuán)隊(duì)的歡迎。作為軟件研發(fā)的團(tuán)隊(duì)或企業(yè),我們該如何根據(jù)自身發(fā)展情況,對這些產(chǎn)品和工具進(jìn)行合理的選擇?一個支撐軟件高效研發(fā)的工具平臺應(yīng)該具備哪些特點(diǎn)?未來又將向什么方向發(fā)展呢?
世界范圍內(nèi)軟件研發(fā)工具平臺產(chǎn)品發(fā)展迅速,國內(nèi)產(chǎn)品仍是空白
當(dāng)我們在學(xué)校里用Visual Studio編寫hello world的時候,我們就已經(jīng)開始使用工具進(jìn)行軟件研發(fā)。只是那個時候,工具的作用還很單一,對管理能力、研發(fā)效率的整體提升還沒有特別關(guān)照。
在80年代,國內(nèi)的計算機(jī)、軟件行業(yè)剛剛萌芽的時候,國外的同行已經(jīng)開始研究使用工具提升軟件研發(fā)效率,微軟、Rational(后來被IBM收購)推出了各自的IDE,并在不斷增強(qiáng)IDE功能的同時,向需求管理和質(zhì)量管理方向拓展。
90年代,又有一些廠商加入到了開發(fā)軟件研發(fā)工具產(chǎn)品的行列中,其中國內(nèi)同行非常熟悉的莫過于Mercury(后來被HP收購)的產(chǎn)品,90年代末和2000年前后,大家經(jīng)常使用的研發(fā)工具組合一般是:需求管理用Rational Request Pro,開發(fā)IDE用Micosoft Visio Studio,代碼庫用collabnet subversion或Rational Clear Case,測試管理用Mercury Test Director,軟件性能測試用Mercury LoadRunner。這些工具在軟件研發(fā)的每個方面都提升了個人和團(tuán)隊(duì)的效率,也讓越來越多的人看到了工具平臺對軟件研發(fā)效率提升的重要性。
進(jìn)入21世紀(jì),敏捷思想及敏捷軟件研發(fā)方法開始逐漸改變?nèi)藗儗浖邪l(fā)的認(rèn)識。在軟件研發(fā)工具平臺方面,ALM(Application Lifecycle Management)逐漸成為各工具廠商產(chǎn)品努力的方向。在短短的10年內(nèi),涌現(xiàn)出一大批優(yōu)秀的軟件研發(fā)工具平臺廠商,如Atlassian、Rally、Polarion、Versionone、Serena……一些老牌廠商,如微軟、IBM、HP通過收購、合并、開發(fā)新的工具產(chǎn)品等方式,更加完善了軟件全生命周期管理的工具平臺。有了新的軟件研發(fā)方法,配合眾多優(yōu)秀的軟件研發(fā)工具平臺,軟件行業(yè)得到了快速的發(fā)展。此時國內(nèi)同行也廣泛認(rèn)識到工具平臺對提升研發(fā)效率的重要性,有條件的企業(yè)或采購,或自主研發(fā),搭建起自己的研發(fā)工具平臺。
2010年前后,隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,互聯(lián)網(wǎng)軟件研發(fā)逐漸成為新的焦點(diǎn),DevOps很快成為大家普遍的共識。很多傳統(tǒng)軟件研發(fā)工具廠商打著“DevOps”的旗幟適時地推出了一些產(chǎn)品或升級版本,同時又有一些新的廠商加入競爭的行列。在如何能夠更好地管理軟件研發(fā)活動的問題上,像Slack這樣的產(chǎn)品向“傳統(tǒng)”研發(fā)工具平臺發(fā)起了新的挑戰(zhàn),在看到越來越多的軟件研發(fā)團(tuán)隊(duì)更愿意使用Slack進(jìn)行日常研發(fā)工作時,我們不禁陷入思索:未來軟件研發(fā)工具平臺將何去何從?
圖1
目前軟件研發(fā)工具平臺的對比研究有很多,但實(shí)用性低
2010年以后,多家重要的IT咨詢公司分別開始定期發(fā)布主流軟件研發(fā)工具平臺對比研究報告,各家最近一期的報告結(jié)果匯總?cè)缦拢?/p>
圖2
這些報告每一篇報告單獨(dú)看似乎視角都很客觀,評估方法似乎都很縝密。但當(dāng)把他們放到一起比較后,會發(fā)現(xiàn)它們的結(jié)論大相徑庭,不同的廠商也會精心挑選“適合”自己產(chǎn)品的報告,懸掛于自己的產(chǎn)品網(wǎng)站首頁。而這些只有兩個維度的魔力象限對于真正需要軟件研發(fā)工具平臺的團(tuán)隊(duì)或企業(yè)來說,幫助并不是很大。
我們發(fā)現(xiàn)這些IT咨詢公司評判軟件研發(fā)工具平臺廠商,及其產(chǎn)品的視角無外乎有兩個:一個是從ALM的功能視角;另一個是商業(yè)的視角。在ALM功能視角下,各家咨詢公司會分別著眼于軟件的需求、設(shè)計、開發(fā)、測試、發(fā)布等幾個主要環(huán)節(jié),詳細(xì)對比各個廠商的產(chǎn)品功能,看誰的功能更強(qiáng)大,誰的功能更全面。而在商業(yè)的視角中,他們則更多以產(chǎn)品的市場份額、廠商服務(wù)的覆蓋程度以及盈利的多少、來衡量哪家廠商更加優(yōu)秀。這樣就造成了功能越齊全的產(chǎn)品、體量越大廠商的在類似的比較報告中越得到好評,反之則被排在后面。
但是,對于正在尋求軟件研發(fā)工具平臺解決方案的團(tuán)隊(duì)和企業(yè)來說,尤其是正在進(jìn)行敏捷、互聯(lián)網(wǎng)轉(zhuǎn)型的團(tuán)隊(duì)或企業(yè)來說,上面的這些對比方法還是顯得陳舊、粗獷,并沒有解答哪個工具平臺更加適合我們這些正在進(jìn)行敏捷軟件研發(fā),或者互聯(lián)網(wǎng)軟件研發(fā)的團(tuán)隊(duì)。
在敏捷軟件研發(fā)的影響下,工具平臺發(fā)生了很大變化
傳統(tǒng)瀑布模式下的軟件研發(fā),注重軟件從概念到上線的流程以及每個流程節(jié)點(diǎn)上的關(guān)鍵活動,同時也重視項(xiàng)目的管理。許多支持瀑布模式開發(fā)的軟件研發(fā)工具平臺,在需求管理、質(zhì)量管理、配置管理、項(xiàng)目管理等方面的功能都十分強(qiáng)大。
圖3
敏捷思想強(qiáng)調(diào)“以人為本”,讓人們主動、自我管理、響應(yīng)變化、互相信賴地工作。敏捷軟件研發(fā)方法,如Scrum、Kanban、XP實(shí)踐等指導(dǎo)軟件研發(fā)團(tuán)隊(duì)擁抱需求變化,快速交付客戶價值,持續(xù)改進(jìn)。要想使團(tuán)隊(duì)或組織真正敏捷起來,需要在人、技、法三方面達(dá)到和諧。這就需要軟件研發(fā)工具平臺這個“技”的方面也要敏捷起來。
圖4
敏捷宣言的第一句話是:“個體和交互勝過流程和工具”,但這并不是說敏捷不需要工具的支持。相反,如果有了更好地研發(fā)工具支持,提高團(tuán)隊(duì)的工作效率,才能真正的敏捷起來。
對照敏捷宣言的幾句話,我們大致能看到敏捷價值觀下的研發(fā)工具應(yīng)該具備的特點(diǎn):
1. 個體與交互勝過流程和工具:研發(fā)工具應(yīng)該能夠突出個人的工作,并且能夠讓團(tuán)隊(duì)更好地協(xié)作
2. 工作的軟件勝過詳盡的文檔:研發(fā)工具應(yīng)該精簡文檔及審批流程,讓軟件交付更加順暢
3. 客戶合作勝過合同談判:研發(fā)工具應(yīng)該支撐快速交付可工作的軟件,并且能夠更好地幫助用戶反饋
4. 響應(yīng)變化勝過遵循計劃:研發(fā)工具應(yīng)該打通需求、設(shè)計、開發(fā)、驗(yàn)證的循環(huán),持續(xù)交付
同時,我們看到越來越多的工具平臺正在發(fā)生如下的變化:
強(qiáng)化:
1. 對敏捷軟件開發(fā)實(shí)踐的支持
2. 對持續(xù)快速交付的支持
3. 對團(tuán)隊(duì)協(xié)作的支持
4. 對用戶反饋的支持
5. 用戶體驗(yàn)的提升
6. 單一工具解決特定問題,平臺提升整體效率
弱化:
1. 流程及審批
2. 文檔及變更管理
3. 基于時間的任務(wù)項(xiàng)計劃管理(甘特圖)
4. 把產(chǎn)品質(zhì)量問題交給測試人員
5. 項(xiàng)目中角色及權(quán)限劃分
6. 大而全的平臺解決所有問題
以上的變化讓我們清楚地看到敏捷研發(fā)給工具平臺帶來的變革,我們也可以總結(jié)一下,敏捷方法下的軟件研發(fā)工具平臺應(yīng)該具備以下6個特點(diǎn):
1. 敏捷管理實(shí)踐(用戶故事地圖、故事列表、優(yōu)先級、估算、卡片墻/看板、燃盡圖/CFD、回顧數(shù)據(jù))
2. 敏捷開發(fā)實(shí)踐-代碼(IDE集成、代碼掃描、代碼審查)
3. 敏捷開發(fā)實(shí)踐-Dev-Test-Ops的Pipeline效率提升(編譯、CI、UT、AT、發(fā)布、部署、運(yùn)維)
4. 用戶反饋與研發(fā)流程打通
5. 注重協(xié)作與用戶體驗(yàn)
6. 團(tuán)隊(duì)能負(fù)擔(dān)的工具平臺價格
主流敏捷軟件研發(fā)工具平臺比較,各有所長
圖5
上面的表格是我們基于敏捷研發(fā)方法下的工具平臺應(yīng)具備的功能,結(jié)合對每個工具平臺的深度試用或試用后做出的比較??吹皆诿艚菅邪l(fā)的場景下,各家平臺的功能各有所長。
圖6
選擇適合自己團(tuán)隊(duì)的軟件研發(fā)工具平臺
在軟件研發(fā)工具平臺中,沒有通用的最完美的解決方案。錯誤的選擇會讓組織的成長、競爭以及產(chǎn)品的成功交付受到影響。
在選擇軟件研發(fā)工具平臺時,先要確定使用工具平臺想要使組織在哪方面得到提升,是快速交付的能力?還是為了支撐敏捷開發(fā)實(shí)踐?或是敏捷管理實(shí)踐落地?還是為了更好地收集管理用戶反饋?亦或是為了加強(qiáng)團(tuán)隊(duì)協(xié)作?
確定了目標(biāo),還要結(jié)合人技法三角,綜合考慮用什么樣的工具,即“技”。要充分了解三角的其它兩個方面,也就是了解團(tuán)隊(duì)或組織的人的能力水平,和目前大家使用或?qū)⒁褂玫难邪l(fā)方法。
只有在人、技、法三方面達(dá)到和諧,才能充分地發(fā)揮工具平臺的效果,才能真正解決問題,使組織的能力得到提升。
軟件研發(fā)工具平臺未來的發(fā)展
隨著軟件行業(yè)的迅猛發(fā)展,軟件研發(fā)工具平臺也必然會發(fā)生更多的變化。未來的軟件研發(fā)工具平臺將會更加突出如下特征:
1. 更快
在需求、設(shè)計、開發(fā)、測試、部署、反饋的軟件研發(fā)周期中,研發(fā)工具平臺會更多提高研發(fā)整體效率,進(jìn)一步縮短研發(fā)周期。
2. 質(zhì)量風(fēng)險前移
在代碼檢查、CR、CI、單測、自動化功能、性能測試、安全測試等方面,研發(fā)工具平臺會更注重質(zhì)量風(fēng)險的前移,即在開發(fā)階段保證質(zhì)量的優(yōu)秀實(shí)踐的落地。
3. 更多協(xié)作
在團(tuán)隊(duì)協(xié)作、客戶合作方面,研發(fā)工具平臺會更好地結(jié)合網(wǎng)絡(luò)社交、移動互聯(lián)網(wǎng)等新業(yè)務(wù)新技術(shù),讓軟件研發(fā)這種人與人的協(xié)作活動更順暢、更方便。
作者簡介
王一男,百度研發(fā)工具平臺資深產(chǎn)品經(jīng)理。10年軟件敏捷研發(fā)管理實(shí)戰(zhàn)經(jīng)驗(yàn),先后在兩家上市企業(yè)成功實(shí)施基于信息化工具集的軟件敏捷項(xiàng)目管理,并成功實(shí)現(xiàn)了基于信息化數(shù)據(jù)的項(xiàng)目持續(xù)過程改進(jìn)。
本文選自程序員電子版2015年12月B刊,該期更多文章請查看這里。2000年創(chuàng)刊至今所有文章目錄請查看程序員封面秀。歡迎訂閱程序員電子版(含iPad版、Android版)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。