預計閱讀時間:9分鐘
數位化浪潮正衝擊著每一家企業,大數據、雲計算、社交媒體和移動互聯等技術日臻成熟,人工智慧、物聯網和大數據分析等技術也逐漸興起。這些新興技術正在深刻地改變各行各業的行業環境,進而影響到企業的方方面面,包括營銷、研發、供應鏈和服務等諸多領域。
敏捷開發是企業在#數位化轉型#中的重要一環,我們將通過兩篇文章與您分享安永針對企業數位化轉型中敏捷開發的實踐。
在本篇文章中,我們將聚焦企業數位化轉型的方向與路徑以及企業數位化敏捷體系和能力建設兩個話題。在下篇中,我們則將重點介紹敏捷開發的主流方法和工具軟體。
01企業數位化轉型的方向與路徑
1. 企業數位化轉型動因和方向
當前,三大要素正在驅動企業的數位化變革轉型:
傳統企業向數位化企業轉型,必須從變革企業文化和更新企業發展戰略的高度,去轉變其原有的理念和經營策略,具體包括以下幾個方面:
樹理念:企業的觀念需要轉變為「用戶體驗至上」,以極致體驗為目標。變流程:企業的服務流程須轉變為強調競爭差異化和個性化、「千人千面」的適應性流程。建生態:企業必須著重考慮如何吸引各種外部資源,共同打造圍繞本企業核心產品或服務的生態系統。挺創新:企業需要充分激發其內部和外部(即生態圈)的創新機制,提升其自身對新技術的敏感度,勇於嘗試和採用新技術,以創新引領市場需求的變化趨勢,以創新獲取更高的效益和市場競爭中的優勢地位。轉敏捷:企業在其創新過程中,需要建立低成本快速試錯的機制,以保障企業的創新活動始終沿著正確的方向探索前行。這一機制,就是敏捷開發。2. 數位化系統研發的敏捷化是企業數位化轉型的必由之路
在上述五個方向中,敏捷化——特別是數位化系統研發的敏捷化,是賦能企業研發創新、生態建設和流程再造的重要抓手。
不過一般而言,即使是在今天,由於其自身固有的特點,傳統企業中還是有大量的業務或職能部門並不需要轉變為「敏態」。此類業務或職能所需的數位化系統可稱之為「穩態」系統。對大部分傳統企業而言,「敏態」和「穩態」兩種數位化系統和對應開發模式的長期並存,是一種現實的理性的選擇。在本文中,我們重點探討「敏態」部分。
對于敏態數位化系統的研發,採用敏捷開發的方式能帶來如下好處:
價值先行:敏捷化的開發模式,以在最短時間內交付具備實用價值的(軟體)產品為第一目標,然後通過快速迭代上線,實現快節奏的、持續的功能優化和增強。快速響應:敏捷化的開發模式採用小版本快速迭代的方式,其響應變化的速度遠遠超過傳統的瀑布式開發方式。降低風險:通過少數幾個迭代,敏捷開發模式即可產出最小化可用功能包來投放市場,可獲取真實的市場反饋,低成本快速試錯。
02企業數位化敏捷體系和能力建設
企業數位化研發敏捷化,是涉及到企業內部多方面改造的系統工程,這是因為大多數傳統企業在IT治理方面,都多少存在以下這些方面的問題:
IT架構一致性管理不足,缺乏對標準規範的統一管理業務應用需求缺乏公司級管控與評估標準,IT投資決策不科學IT建設多頭管理,與各相關業務單元分工邊界不清晰開發人員分散在不同的部門與團隊,開發資源分散在規劃與架構管理、需求管理、應用運維管理、安全與災備管理等能力上存在不足要解決上述這些問題以建立起企業的數位化敏捷體系,需要從治理體系與管理方法、組織架構、崗位職責、人員能力、技術支撐平臺等多個方面著手,下面將分別展開論述。
1. 治理體系變革
需求和預算管理流程的變革
基於傳統管控模式的預算管理過程,一般在上一年度結束前,根據歷史數據以及各部門的資金申請情況並結合對業務部門需求的預估,對新的一年進行資源需求的預測。再根據所獲得的資源總量進行資源分配,並按照分配結果管控預算的執行進程。對計劃的執行和管理以半年或年為單位,敏態建設難以很好地得到支撐。
為支持敏態業務的開展和敏捷化開發模式的推行,與之對應的預算管理體系需要建立起來,以應對需求和預算的平衡,加快和加大被驗證需求的數量和範圍。下圖是一種敏捷的需求與資金管理方式的例子。當企業需要在某個全新領域創新時,可以通過設計思維、頭腦風暴等方式湧現出大量創意(數量為100+),其中部分比較有前景的創意(15至20個)被選中,再經過一段時間的孵化變成原型。各方對原型評審後,決定對其中少數(2至4個)創意進行進一步的驗證與融合(1+個),以形成最小价值產品(MVP)。MVP就是一個可投放市場的、新的產品的起點。
這種方法對傳統管理方式的主要改進點如下:
建立預算準備金備用池制度:每年年末抽取固定比例的預算進入預算池,以支持敏態業務的概念驗證和最小价值產品的研發。區分敏態業務的不同階段:通過劃分階段,為不同階段設置不同的預算使用目標側重點和支持活動,通過需求漏鬥以適當的成本甄選和驗證需求,實現需求的商業價值最大化。
敏捷項目管理流程的變革
企業對敏態開發的項目管理,應當在傳統的項目管理體系基礎上,根據當前項目團隊所選擇的敏捷開發方法體系和團隊的敏捷成熟度等因素,對項目管理的管控範圍、管控方法等,進行一定的裁剪。
下圖羅列了往往需要進行裁剪的幾個項目管理領域:
項目目標:傳統項目的目標針對了明確和固定的項目實施範圍,即在項目開始前就設定了的一個需求組合。而敏捷項目管理主張「價值勝過約束」,其項目的目標是產品願景、商業目標和能力,具體的需求條目和目標隨時可能根據市場情況和業務需求的變化而調整。變更管理:傳統項目的變更管理重點是控制需求變更,以減少需求變更給項目所帶來的不確定性。而敏捷項目歡迎因響應市場和業務變化而產生的需求變更,敏捷開發的機制保證了對變更的快速低成本支持。計劃管理:傳統項目的計劃管理要求在項目開始之初,就制訂出詳盡和明確的項目計劃。而敏捷項目管理主張「適應勝過遵循」,及「響應變化高於遵循計劃」,認為只要適度計劃即可。溝通管理:傳統項目的溝通管理中涉及項目團隊內部溝通的,基本上可以被相應的敏捷活動(如每日站會、迭代計劃、迭代驗收、迭代回顧等)所代替,不同開發團隊之間的協調,往往也可以被SAFe框架下的對應活動所取代。這些都需要被裁剪。敏捷實施管理流程的建立與持續優化
企業的敏捷化轉型不能一蹴而就。企業應先嘗試團隊級(10人以內)的敏捷開發實踐,可以考慮選擇幾個相互獨立的開發團隊同時進行嘗試。具體流程和方法首推Srcum的敏捷體系,也可以考慮Scrum和極限編程(XP)的組合。
團隊敏捷實施一段時間(半年以上),並積累了一定的成功經驗後,就可以考慮將敏捷實踐的規模擴展到項目集——即需要至少3至4個開發團隊緊密協作才能順利推進的項目集群。此時須引入規模化敏捷的實踐框架(如SAFe),並配備等規模化敏捷所需要的關鍵角色。
一般而言,只有當企業實施項目集的敏捷開發一年以上,並獲取足夠的成功經驗後,才可以考慮逐步將敏捷實踐的規模進一步擴大。
各個級別的敏捷實踐所包含的具體敏捷活動因企業而異,下圖是某大型企業定義的各個級別敏捷具體活動:
2. 組織架構和崗位職責調整
團隊級的敏捷開發實踐(如Scrum敏捷開發模式),要求在開發團隊內部,新增如下崗位(角色):
敏捷教練(Scrum Master),其職責包括:向開發團隊宣講敏捷理念,引領、支持團隊開展敏捷實踐活動,幫助團隊建設自組織的全功能團隊,幫助產品負責人將每個迭代的開發目標、範圍等準確傳達給團隊的每個成員,幫助團隊移除開發過程中遇到的任何內外部障礙,代表團隊與管理層和其他團隊溝通等等。對於規模較小的項目(只有一個開發團隊的),敏捷教練往往可以取代傳統開發模式下的項目經理。產品負責人,其職責包括:創建清晰的產品需求條目;為需求條目項編排優先級,以確保目標和價值的實現;優化工作任務的價值;確保需求條目的清晰透明,讓團隊成員都清楚接下來需要完成的工作項,等等。對于敏捷開發,傳統項目經理所需承擔的計劃編制、計劃執行管控等方面的職能被大大弱化了。敏捷的理念不主張制定過於詳盡的計劃,反對用計劃的約束限制團隊響應變化的能力。
按照敏捷方式組織的項目開發團隊,相對於傳統項目組織結構的變化大致如下圖所示:
對於規模化敏捷,除了上述新增角色外,還需要在項目集的層面設置新的崗位。以SAFe框架為例,新設置的崗位包括:
產品經理:其職責類似于敏捷團隊層面的產品負責人,只是其管理的需求條目顆粒度更大,只需要將條目拆分到能夠由單個團隊在一次迭代開發周期內完成即可。發布列車工程師:這個角色為整個項目集提供共同的架構指引和技術框架,從技術角度協調各個敏捷團隊的開發進度,確保各個團隊所開發的特性之間的相互依賴關係被識別並關注,通過安排集成測試等手段確保跨團隊的集成順利進行。下圖是安永為某航企設計的、適用於規模化敏捷開發的組織架構:
3. 人員技能的變革
敏捷化開發要求敏捷開發團隊的全體成員都要深入理解並認同敏捷的相關理念,掌握敏捷相關的方法和技術,並熟練使用相關的支持性工具。下圖是根據通用的敏捷能力模型對某敏捷項目團隊的敏捷能力水平進行的現狀分析和短期提升目標設定:
可以看出,敏捷開發團隊是全功能的團隊,它要求團隊中的每個成員最好都成為能夠掌握多種開發、測試和部署配置技術的複合型人才,以更加靈活地應對需求的變化,並充分利用團隊成員的時間。
下圖大致羅列了敏捷開發團隊應當掌握的各種敏捷開發相關技能。其中,實施難度越高的技能,對團隊的敏捷成熟度要求越高。
4. 敏捷化開發所需的技術支撐平臺——DevOps工具鏈
敏捷實踐涉及的活動類型較多,串聯這些活動的流程比較複雜,僅僅依靠手工操作很難讓這些流程高效地運轉起來。因此,我們需要藉助工具軟體的力量,搭建一個敏捷支撐平臺,以此來實現敏捷開發流程的固化和高效運轉。
為此,我們所選擇的工具集,要能夠實現以下關鍵環節的覆蓋與流程的貫通:
需求收集、需求創意需求篩選、需求合併、需求分解需求條目轉化為用戶故事和設計任務需求條目和用戶故事轉化為測試用例架構設計/詳細設計,設計文檔提交用戶界面/用戶體驗設計開發任務的分派、追蹤代碼編寫、單元測試、代碼提交開發完成的功能項提交測試測試用例的執行,結果分析與報告缺陷分析,缺陷修正版本管理,版本發布等實現上述目標所需的工具軟體,完全可以藉助DevOps工具鏈,並結合企業自身敏捷實踐的具體方法和流程,對既有工具進行一定程度的配置或定製化開發,即可實現對從預算編制開始的整個軟體開發生命周期的全面支持。
下圖是對DevOps生命周期的一個概要性的介紹,具體的工具軟體介紹參見下篇文章:
在下篇文章中,我們將為您繼續介紹敏捷開發的主流方法和工具軟體。
本文是為提供一般信息的用途所撰寫,並非旨在成為可依賴的會計、稅務或其他專業意見。請向您的顧問獲取具體意見。