本文根據(jù)CODING Compass產(chǎn)品總監(jiān)程勝聰在騰訊云CIF工程效能峰會上所做的分享,進(jìn)行了整理與更新。
DevOps從工具化階段邁入流程化階段
軟件工程從上世紀(jì)60年代發(fā)展到現(xiàn)在,毫無疑問正處于DevOps的時代,這幾年業(yè)內(nèi)如火如荼的DevOps轉(zhuǎn)型也印證了這一點(diǎn)。到現(xiàn)在這個階段,企業(yè)在轉(zhuǎn)型落地上也持續(xù)投入了這么多年,開始迫切希望看到成果。大家普遍在思考一個問題,那就是DevOps是否真的對業(yè)務(wù)發(fā)展和數(shù)字化轉(zhuǎn)型帶來幫助,還是只是研發(fā)團(tuán)隊(duì)自嗨而已?
在最近一年協(xié)助客戶進(jìn)行DevOps產(chǎn)品落地的過程中,我們愈發(fā)意識到:研發(fā)管理真的不能只靠搭建工具鏈,還需要把這些工具應(yīng)用到企業(yè)實(shí)際的業(yè)務(wù)流程當(dāng)中。我們應(yīng)該切實(shí)的為開發(fā)減負(fù),而不是反而給業(yè)務(wù)的開發(fā)增加負(fù)擔(dān)。只有這樣才能夠切實(shí)提升研發(fā)效能,更好地滿足業(yè)務(wù)發(fā)展的需要。
如果說,DevOps在之前還屬于工具化階段,各式各樣的工具層出不窮,那么在數(shù)字業(yè)務(wù)發(fā)展迅猛的背景下,DevOps正在進(jìn)入一個新的階段:流程化階段。
企業(yè)使用DevOps工具仍然存在挑戰(zhàn)
先從一個典型的用戶反饋出發(fā),來看看當(dāng)前用戶所處的困境:
上面這個客戶深入使用CODING一年多,他們對產(chǎn)品是否好用有足夠的話語權(quán)。通過對反饋結(jié)果的整理,可以看出工具化階段的產(chǎn)品還是存在不足。一方面,客戶充分肯定了當(dāng)初選擇CODING DevOps的決定,團(tuán)隊(duì)中每個角色都能夠在一站式平臺上工作,很好地實(shí)現(xiàn)了研發(fā)一體化的目標(biāo);另一方面,盡管我們的一站式平臺提供了團(tuán)隊(duì)所需的能力模塊,但是不同模塊之間的協(xié)作性還不能很好體現(xiàn)。
1.對產(chǎn)品來說,其關(guān)注的需求活動并不能很好關(guān)聯(lián)到開發(fā)實(shí)際在做的事情,從而對進(jìn)展和風(fēng)險不能完全掌控。
2.對于開發(fā)來說,更新任務(wù)狀態(tài)是很重要,但是由于這個事情并不會阻塞自己,是否及時更新就完全取決于自覺性高低。于是很多時候,忙于協(xié)作編程的開發(fā)往往會忘記去做這個事情。
3.同時,作為相對后置的測試,一旦提測,各種事項(xiàng)檢查更是茫茫多,各種信息核對和更新就要花費(fèi)大量的時間,加上留給測試的時間本來就不多,情況就顯得特別窘迫。
4.而再后面的運(yùn)維同事更不用說了,只能反復(fù)叮囑發(fā)版之前要做好充分準(zhǔn)備,各種驗(yàn)證檢查都不能打折扣,然后就只能祈禱別總是在敏感的發(fā)布窗口,出現(xiàn)各種莫名其妙的問題。
總的來說,雖然在一個平臺上的不同工具大家都用得很順暢,但從全流程來看總覺得缺少點(diǎn)什么。在工具之間的來回切換仍然需要花費(fèi)大量精力,而且還不能確保信息的正確性。種種這些,都是工具型產(chǎn)品的不足之處。
企業(yè)日漸關(guān)注研發(fā)管理的整體效率
這個案例并非個案,而是DevOps轉(zhuǎn)型來到了新的流程化階段的標(biāo)志:企業(yè)日漸關(guān)注研發(fā)管理的整體效率,從強(qiáng)調(diào)某個工具的局部優(yōu)化,轉(zhuǎn)變?yōu)閺?qiáng)調(diào)協(xié)同流程的全局優(yōu)化。
工具并不能等同于整體效率,組織效能管理的經(jīng)典理論P(yáng)PT中就指出:一個組織的3個要素中,People、人是基礎(chǔ),Tools、工具對人進(jìn)行賦能,讓工作更有效率,而Process、流程則是讓人的行為與目標(biāo)保持一致的載體。完美地完成一件本來就不應(yīng)該去做的事情是毫無意義的,甚至還會對整體造成損害。從全局上考慮,一個好的流程不可或缺。
DevOps產(chǎn)品應(yīng)該打造成為
進(jìn)一步解放生產(chǎn)力的新型生產(chǎn)關(guān)系
在數(shù)字化的背景下,業(yè)務(wù)迅猛發(fā)展帶來了軟件系統(tǒng)的高復(fù)雜度,個體需要處理的事情變得更多,導(dǎo)致單人效率下降。為了提升團(tuán)隊(duì)中每個角色的工作效率,企業(yè)追求DevOps轉(zhuǎn)型,希望利用新興技術(shù)和工具來迅速提高團(tuán)隊(duì)生產(chǎn)力。但是隨著在技術(shù)和工具上投入越多,以及團(tuán)隊(duì)規(guī)模不斷擴(kuò)大,同時也帶來了整體協(xié)作上的復(fù)雜度。而這些復(fù)雜的依賴關(guān)系如同金字塔般層層傳導(dǎo)至團(tuán)隊(duì)成員身上,形成了對原有工作習(xí)慣乃至理解認(rèn)知的巨大沖擊。哪怕是一次簡單的交付,都需要經(jīng)過許多操作以及不同角色的協(xié)同,整個交付過程也因此顯得脆弱和低效:比如工作上下游的契約和規(guī)范缺失,研發(fā)過程的透明度不夠,需要在不同工具平臺之間來回切換等等。
如何才能讓不同的工具,有機(jī)地共存于一個完整的流程當(dāng)中呢?如何為團(tuán)隊(duì)打造高效的流程,讓人能夠順暢地完成高質(zhì)量的軟件開發(fā),并發(fā)布到生產(chǎn)環(huán)境中?在這個過程中,團(tuán)隊(duì)成員不需要去處理不必要的復(fù)雜問題,陷入細(xì)枝末節(jié)之中,又或者是長時間的等待延誤。我們應(yīng)該解放團(tuán)隊(duì)成員的生產(chǎn)力,讓開發(fā)能把精力集中在能真正產(chǎn)生業(yè)務(wù)價值的工作上。這是當(dāng)前很值得思考的事情:就像生產(chǎn)力決定生產(chǎn)關(guān)系一樣,我們需要更先進(jìn)的研發(fā)管理產(chǎn)品來賦能研發(fā)團(tuán)隊(duì),來滿足現(xiàn)今數(shù)字化業(yè)務(wù)發(fā)展的需求。
CODING Compass
DevOps流程化階段的研發(fā)流程管理產(chǎn)品
通過對DevOps實(shí)踐落地中凸顯出來的問題的梳理,我們得出了以下2個方面的認(rèn)識:
1.組織層面的DevOps轉(zhuǎn)型需要領(lǐng)域?qū)<?/strong>
7月份信通院發(fā)布的《中國DevOps現(xiàn)狀調(diào)查報告(2021)》中就指出:接近30%的企業(yè)因?yàn)槿鄙貲evOps專家導(dǎo)致推進(jìn)落地緩慢。而在我們服務(wù)客戶的時候,也往往需要提供咨詢,通過專家診斷、制定流程,然后根據(jù)實(shí)際情況、設(shè)定要提升的目標(biāo)以及具體的實(shí)現(xiàn)路徑。DevOps產(chǎn)品要做的是:提煉出業(yè)內(nèi)行之有效的研發(fā)管理經(jīng)驗(yàn)、并內(nèi)嵌到產(chǎn)品當(dāng)中,引導(dǎo)客戶團(tuán)隊(duì)把優(yōu)秀的習(xí)慣固化下來、持續(xù)優(yōu)化,從而實(shí)現(xiàn)高效的研發(fā)管理。
2.協(xié)作中團(tuán)隊(duì)成員的最大痛點(diǎn)是“什么都要懂”
在現(xiàn)有已提供的工具的基礎(chǔ)下,團(tuán)隊(duì)?wèi){著對DevOps的樸素理解,是可以初步協(xié)同起來的。但是,用戶所面臨的協(xié)作問題確實(shí)存在:比如缺乏跨職能活動的能力拉通,活動之間的協(xié)作規(guī)范缺失,難以識別研發(fā)過程中的風(fēng)險,個體在工作中需要理解的上下文過多,還有跨職能的許多操作只能手工處理等等。這些看上去瑣碎,但是這些問題累積起來遲遲得不到解決,便會造成團(tuán)隊(duì)成員極大的“心力損耗”,甚至導(dǎo)致了優(yōu)秀員工對打造高效組織產(chǎn)生懷疑。
DevOps深化發(fā)展到了現(xiàn)今階段,代表著行業(yè)對研發(fā)管理產(chǎn)品的新的期望:從敏捷到DevOps、再結(jié)合LEAN精益思想的理念,朝著增強(qiáng)可視化和可追溯性、追求規(guī)范和效率的方向發(fā)展。基于察覺到的這些痛點(diǎn),CODING結(jié)合自身實(shí)踐和行業(yè)成果經(jīng)驗(yàn),努力作出了產(chǎn)品的升級,來幫助客戶更好地提升研發(fā)管理能力。
Compass=工作流+規(guī)范+自動化
CODING打造了全新的研發(fā)流程管理產(chǎn)品Compass,包括3個主要能力:分別是(串聯(lián)各種活動形成的協(xié)同)工作流,還有(提升研發(fā)活動一致性的標(biāo)準(zhǔn))規(guī)范,以及(觸發(fā)后置活動的)自動化。代表著CODING DevOps在原有DevOps工具鏈的基礎(chǔ)之上,融入了Know-how的部分,讓客戶能夠充分借鑒業(yè)內(nèi)行之有效的實(shí)踐經(jīng)驗(yàn),做到高效的研發(fā)管理。
Compass如何提升研發(fā)管理能力
簡單的說,Compass的產(chǎn)品邏輯就是定義流程、規(guī)范過程、高效流轉(zhuǎn)、識別瓶頸并指導(dǎo)改進(jìn)。
1.首先,研發(fā)過程當(dāng)中存在著各種各樣的活動。
比如說產(chǎn)品經(jīng)理會創(chuàng)建需求到Backlog里面,團(tuán)隊(duì)開展規(guī)劃會納入到迭代當(dāng)中,并進(jìn)行任務(wù)分解、任務(wù)認(rèn)領(lǐng)或者分配,開發(fā)會創(chuàng)建分支、寫代碼、提交合并等等,而測試則是設(shè)計(jì)用例、執(zhí)行測試,然后團(tuán)隊(duì)提測、通過質(zhì)量門禁之后并創(chuàng)建發(fā)布單等等。
我們知道,這里列舉的有些是同一種角色內(nèi)部發(fā)生的,有些卻是需要不同角色去協(xié)同完成的,實(shí)際上它們的進(jìn)行存在著先后順序。
2.其次,識別出關(guān)鍵的協(xié)同活動并串聯(lián)成為完整的工作流。
按照不同角色歸類好這些活動之后,會發(fā)現(xiàn)同一角色的某些活動客觀上就是另外一些活動的前提。比如需求被創(chuàng)建出來之后、才有可能被納入迭代,分支存在之后、才能有對應(yīng)的代碼提交和MR,用例設(shè)計(jì)完了、才能在它的基礎(chǔ)上關(guān)聯(lián)對應(yīng)的需求等等。這些內(nèi)在的關(guān)系導(dǎo)致了它們的活動流轉(zhuǎn)必然是自發(fā)完成的。
對于剩下的關(guān)鍵節(jié)點(diǎn),我們從整體研發(fā)的視角,根據(jù)實(shí)際工作情況,人為定義好它們的依賴順序,并把它們串聯(lián)起來。比如任務(wù)拆解完畢才能創(chuàng)建對應(yīng)的特性分支,有了MR、并且需求關(guān)聯(lián)了測試用例之后才能提測,然后執(zhí)行測試、給出測試報告、最后提交發(fā)布單。這樣就形成了完整的工作流。
3.再次,通過規(guī)范來保障活動的健壯流動,以及自動化驅(qū)動活動進(jìn)行高效的流轉(zhuǎn)。
為了保障活動流轉(zhuǎn)的健壯性,我們可以對其中的某些活動設(shè)定準(zhǔn)入準(zhǔn)出規(guī)范,不符合規(guī)范的則給出警告并阻止繼續(xù)流轉(zhuǎn)。比如納入迭代中的需求要給出驗(yàn)收標(biāo)準(zhǔn)、作為用例設(shè)計(jì)的依據(jù),測試報告中的通過率要滿足一定數(shù)值才能創(chuàng)建發(fā)布單等等。另外,對于某些可以標(biāo)準(zhǔn)化創(chuàng)建或者觸發(fā)的活動,可以設(shè)定自動化規(guī)則。當(dāng)前提條件獲得滿足時則自動流轉(zhuǎn),也不需要團(tuán)隊(duì)成員切換到另外工具中去更新狀態(tài)、或者手工創(chuàng)建下一個步驟的任務(wù)。這樣一來就形成了一個井然有序的團(tuán)隊(duì)協(xié)作工作流。
4.最后,把研發(fā)具體步驟跟業(yè)務(wù)定義好的價值流階段映射到一起,提供洞察分析。
規(guī)范和自動化能夠產(chǎn)生精確的活動記錄,從而為效率度量提供真實(shí)可靠的數(shù)據(jù),進(jìn)行有效的洞察診斷和指導(dǎo)改進(jìn)。比如前置時間和處理時間的差異、任務(wù)完成率/準(zhǔn)確率等等。這是價值流管理(Value Stream Management)的基礎(chǔ)。
以上就是Compass的產(chǎn)品設(shè)計(jì)理念,我們希望能夠通過流程驅(qū)動協(xié)作中的開發(fā)行為,讓流程中的每個人都可以專注于自身的價值。同時沉淀下來的過程數(shù)據(jù)能夠準(zhǔn)確的透視研發(fā)過程,并且基于數(shù)據(jù)的洞察分析來指導(dǎo)研發(fā)過程的持續(xù)改進(jìn)。
總結(jié)
CODING Compass是一款基于CODING原有DevOps工具鏈的研發(fā)流程管理產(chǎn)品,包含流程編排、流程驅(qū)動、規(guī)則約束及價值流轉(zhuǎn)。希望能夠幫助企業(yè)拉通管理者的目標(biāo)預(yù)期和研發(fā)團(tuán)隊(duì)的具體執(zhí)行,用最小的協(xié)同成本實(shí)現(xiàn)最高的響應(yīng)能力,從而最大化研發(fā)效率。