“穩健+敏捷”型IT管理模式建設實踐
網際網路日益成為創新驅動發展的先導力量,深刻改變著人們的生產生活。在敏捷方法匯入中國的十五年當中,網際網路行業首當其衝,成為引領敏捷時代大潮的先驅。金融IT正面臨著來自業務創新、敏捷開發、智慧運維等多維度挑戰,在充滿技術變革的時代,既穩定又敏捷的IT管理模式,將是符合金融行業發展需要的管理模式。本文將以大商所飛創公司敏捷建設實踐為例,探討在傳統金融行業穩健式專案管理模式基礎上,如何向敏捷過渡,打造適合自己的敏捷開發及管理模式。
2014年2月27日,習近平總書記曾在中央網路安全和資訊化領導小組第一次會議重要講話中提到,“當今時代,以資訊科技為核心的新一輪科技革命正在孕育興起,網際網路日益成為創新驅動發展的先導力量,深刻改變著人們的生產生活,有力推動著社會發展,網際網路真正讓世界變成了地球村,讓國際社會越來越成為你中有我,我中有你的命運共同體。”可見,網際網路時代的到來,另眾多行業不得不革故鼎新,以適應當前發展,從上世紀九十年代開始,網際網路引領敏捷時代大潮,突破傳統軟體開發模式,敏捷開發在國內逐漸興起,網際網路敏捷開發思維對金融IT的滲透不斷加深,影響著金融IT未來的發展走向。
一、敏捷開發不是銀彈
敏捷開發的好處源自於不同工作方式的轉變而帶來的變化,而不是更快地工作,儘管個別案例證明敏捷團隊擁有超出平均的生產率,但這並不能成為採用敏捷方法的首要原因。
當採用敏捷開發之前,我們需要回答的首要問題是:敏捷開發能使我們更加成功嗎?傳統觀念上的專案成功是指基於給定的財務預算,按照需求規格如期交付產品。成功的定義隨著時代的變遷正漸漸的發生變化,某些專案即使一分錢沒賺到,但仍然可能是成功的,而一些專案帶來了數額不菲的收入也仍然不算成功,滿足了傳統成功觀念所有標準的那些專案,最後仍然可能是失敗的,因為不能吸引目標客戶,或者最終不能帶來更多的商業價值。

二、金融IT引入敏捷開發,建設“穩健+敏捷”型管理模式的重要意義
金融IT企業中存在的領域,一方面是系統安全性、穩定性高的傳統領域,該部分領域目標是清晰的,可以進行規劃和基本的預測。另一方面領域是需求不明確且多變的、在開始階段需求未知的領域,該部分領域行動和產出的關係是不確定的,可能需要大規模的試錯過程,才能產出最終具有價值的產品。對於系統安全性、穩定性要求高的領域,不可能依賴網際網路企業那樣大規模試錯,盲目採用缺乏標準化支撐的敏捷開發,否則可能導致無法提前釋放風險,導致風險遺傳到上線。因此在系統安全性、穩定性高、不允許試錯的領域採用穩健型管理模式,在需求不明確多變,試錯後果代價低的領域,採用敏捷型管理模式,是適合於金融IT行業的管理模式。

三、建設企業級敏捷開發模式
雖然敏捷軟體開發理念已被業界普遍接受和應用,但敏捷開發方法在促成產品服務快速麵市的同時,也帶來了很多副產品,例如缺乏企業級管理,敏捷的大規模落地應用仍然是一個非常大的挑戰,敏捷性更多的體現在一部分小團隊或者專案當中。實現企業級敏捷,使敏捷真正在企業內發揮大規模的作用,而不僅僅侷限在個別對敏捷掌控能力比較突出的團隊,敏捷開發模式的標準化、建設富有廣度和靈活性的敏捷開發管理體系將是敏捷規模化應用的一個重要前提。
敏捷方法作為一種軟體開發理念,與之伴隨出現了很多主流的實踐框架和方法,如Scrum、極限程式設計(XP)、精益軟體開發、看板、大規模敏捷框架SAFe、LeSS等等。Scrum是目前較成體系以及應用比較廣泛的敏捷方法,但Scrum聚焦於管理層面,幾乎沒有提及任何工程活動及實踐。而極限程式設計卻是側重於工程活動的一種方法,在其12條實踐當中,有75%的實踐都是工程實踐,更關注編碼及其質量。精益方法起源於豐田,是一種哲學、思想、方法論,而精益軟體開發是精益思想在軟體開發領域的對映,從2003年開始逐漸在軟體行業嶄露頭角,但至今應用到IT軟體專案、產品開發的實踐還是鳳毛麟角。同樣起源於精益的看板方法,其核心思想是拉動系統,限制進入生產的在製品數量,從而加快交付速度,更適用於生產線,有不斷任務加入的迴圈系統,對於軟體行業來說,更適用於運維團隊或者已經進入維護階段的專案。看板在敏捷當中的應用,更多的是卡片牆,而非看板系統,目前卡片牆的看板實踐已經成為敏捷軟體開發中比較流行及有效的視覺化控制機制。
經過充分調研論證,敏捷開發管理體系建設方案選擇以Scrum、極限程式設計、看板為基礎框架,同時結合CMMI和產品體系的建設方案。一方面,使Scrum側重於管理實踐、缺乏工程實踐,極限程式設計側重於工程實踐,缺乏管理實踐的情況得以互補,加以看板實踐作為專案視覺化的控制機制。另一方面,基於交易所專案特點及飛創公司產品管理中各方面的訴求及期望,將CMMI和產品體系中,立項、專案過程定義、風險問題(阻礙)管理、變更控制、QA和CM監督控制、度量過程以及需求規格、上線計劃等必要的成果物與敏捷框架進行融合,覆蓋了敏捷模式下的專案完整生命週期流程,實現管理敏捷和技術敏捷。敏捷體系建設方案如圖1所示:
圖1:敏捷體系建設方案
敏捷方法從誕生之日起,就被注入了靈活、高效等基因,敏捷開發管理體系既要保證最大限度的實現企業級敏捷,使實踐敏捷方法的專案和團隊少走彎路,高效運作,同時又不違背敏捷的靈活性,因此在敏捷開發管理體系中,除了當前情況下專案和產品無法突破的流程、基本的質量標準及必要的質量控制手段之外,大部分流程和實踐是以最低限度的要求以及指南的形式體現,在保證質量的前提下,給專案更多實踐敏捷的靈活性和自主權,同時QA在敏捷團隊中,更多是以Scrum Master的Master身份參與,對敏捷方法進行指導和糾偏。

四、部分敏捷向理想敏捷逐漸過渡
敏捷開發的3C,即持續整合(CI)、持續交付(CD)、持續測試(CT),發揮著至關重要作用,其中最主要的角色是持續整合。持續整合是源於極限程式設計的實踐,是任何敏捷團隊的必備方法。為了提高團隊的交付能力,通過持續整合才能確保敏捷團隊中個人每天頻繁提交的程式碼,不會給團隊添亂。在敏捷方法的實踐過程中,起初團隊往往不具備較高的成熟度來實現持續整合、持續交付、持續測試的3C能力。為使敏捷團隊和專案能夠逐漸的從具備一種C的能力向具備3C能力過渡,在敏捷開發管理體系中,我們定義了兩種敏捷專案生命週期模型,一種是部分敏捷模型,見下方圖2,團隊需具備持續整合能力,實現每天持續自動構建、編譯、單元和整合測試,而對於系統和驗收級別的交付和測試,主要還是以手工為主,自動化為輔。另一種是理想敏捷模型,見下方圖3,在理想敏捷模型中,團隊和專案應具備3C能力,在每日持續整合基礎上,實現系統和驗收級別的自動化部署和測試,將測試行為嵌入到每個“commit”中,理想敏捷模型對於自動化水平要求很高,3C是在敏捷方法之上,實現所需速度和質量的理想方法。

圖2:部分敏捷模型
五、多體系並存共繁榮,支撐“穩定+敏捷”管理模式
在敏捷開發管理體系建成之後,飛創公司在行軟體質量體系包括CMMI、產品、敏捷三大體系,各體系特點不同,適用領域不同。CMMI體系規範化、流程覆蓋全生命週期等特點,使其更適用於需求相對穩定,對系統安全性、穩定性要求嚴格、對上線時間有固定視窗的交易所專案中。產品體系包含產品規劃論證、產品實現、產品售前、產品售後四大過程,其中產品實現過程基於CMMI體系,根據產品特點略微調整,因此產品體系更適用於前期經過充分規劃論證,需求相對明確的產品。敏捷體系其適應變化的特點,更適用於起初需求不明確,需求多變的專案和產品。三大體系並存,覆蓋飛創公司專案和產品,適應不變和多變,支撐“穩定+敏捷”的IT管理模式。軟體質量體系特點例舉參見圖4。

圖4:軟體質量體系特點例舉
體系的多元化,隨之而來的是專案和產品如何對其進行選擇,在敏捷體系誕生的同時,軟體質量體系選擇指南也應運而生。如何選擇適合專案特點的軟體質量體系,應該從專案或產品屬性、需求的穩定性、專案規模、人員規模、客戶參與度以及文化等多維度進行考量和評估,尤其是需求穩定性、客戶參與度、文化等因素,是專案或產品是否能高效運用體系、使其發揮價值的關鍵因素。

六 、總結
對於近年來高調行走於江湖的敏捷開發,是傳奇還是神話,我們應該抱有既開放又不盲從的心態來對待。敏捷開發從來就不是一種可以割裂行業背景、企業背景而單獨進行探討的話題,業務框架及穩定性、商務模式及企業戰略等等和敏捷開發有著千絲萬縷的聯絡,只有充分論證實踐及客觀辨識,才能打造適合自己的IT管理模式。