LeSS is More:大規(guī)模敏捷開(kāi)發(fā)框架LeSS實(shí)踐(一)
如果你知道敏捷開(kāi)發(fā),Scrum你一定不會(huì)陌生。
Scrum簡(jiǎn)介
如果你知道敏捷開(kāi)發(fā),Scrum你一定不會(huì)陌生。從上世紀(jì) 90 年代初開(kāi)始,Scrum 框架在全球范圍內(nèi)已得到了廣泛應(yīng)用,有報(bào)告顯示全世界范圍內(nèi)采用敏捷開(kāi)發(fā)模式的公司里有68%以上使用Scrum框架。Scrum團(tuán)隊(duì)中包括:
三個(gè)角色
- 產(chǎn)品負(fù)責(zé)人
- 開(kāi)發(fā)團(tuán)隊(duì)
- Scrum Master
三個(gè)工件
- 待辦列表
- Sprint待辦列表
- 潛在可發(fā)布產(chǎn)品增量
Sprint是Scrum 的核心,其長(zhǎng)度為1~4周的一個(gè)固定長(zhǎng)度時(shí)間盒,這段時(shí)間內(nèi)構(gòu)建 一個(gè)“完成”、可用的和潛在可發(fā)布的產(chǎn)品增量。在Scrum指南中定義了:
四個(gè)Sprint活動(dòng):
- Sprint計(jì)劃會(huì)議
- 每日站會(huì)
- Sprint評(píng)審會(huì)議
- Sprint回顧會(huì)議
在常見(jiàn)的實(shí)踐中通常會(huì)在Sprint周期中間增加一個(gè)產(chǎn)品待辦列表Refinement會(huì)議,用以初步討論澄清下一個(gè)Sprint潛在要做的用戶故事。看起來(lái)是不是很簡(jiǎn)單?Scrum是一個(gè)輕量的,易于理解但難以掌握的敏捷框架。
LeSS簡(jiǎn)介
Scrum開(kāi)發(fā)團(tuán)隊(duì)最佳規(guī)模是足夠小以保持敏捷性,同時(shí)足夠大可以在 Sprint 內(nèi)完成重要的工作,一個(gè)建議的數(shù)值通常是7加減2人,這樣既可以保持敏捷性又可以在Sprint內(nèi)交付潛在可發(fā)布的產(chǎn)品增量。
對(duì)于小規(guī)模產(chǎn)品,1個(gè)Scrum團(tuán)隊(duì)也許可以很好的應(yīng)付,然而現(xiàn)實(shí)中大規(guī)模產(chǎn)品開(kāi)發(fā)時(shí)常常會(huì)涉及到多個(gè)團(tuán)隊(duì)協(xié)同開(kāi)發(fā)一個(gè)產(chǎn)品。
如果我們繼續(xù)采用Scrum的方式進(jìn)行產(chǎn)品研發(fā),我們就不得不需要思考一個(gè)問(wèn)題:不同團(tuán)隊(duì)如何一起有效的合作完成一個(gè)產(chǎn)品的開(kāi)發(fā)?
行業(yè)里目前有一些大規(guī)模敏捷的解決方案,如 Large Scale Scrum(LeSS), Scrum of Scrums, Scaled Agile Framework(SAFe), Disciplined Agile Delivery(DAD),NEXUS等等。這里簡(jiǎn)單介紹一下LeSS這個(gè)框架,當(dāng)年在NOKIA的時(shí)候用的就是這套框架。
“LeSS is Scrum applied to many teams working together on one product.”簡(jiǎn)單說(shuō)LeSS依然是Scrum,依然是那三個(gè)角色,三個(gè)工件,五個(gè)會(huì)議。LeSS框架想要解決的問(wèn)題是如何將Scrum的原則,元素盡可能簡(jiǎn)單夠用的使用到多個(gè)團(tuán)隊(duì),合作開(kāi)發(fā)一個(gè)產(chǎn)品的場(chǎng)景里去。
LeSS框架分為兩類:LeSS以及LeSS Huge,超過(guò)8個(gè)Scrum團(tuán)隊(duì)的時(shí)候使用LeSS Huge框架。不要問(wèn)我8是怎么來(lái)的,就這么定的,當(dāng)然在實(shí)踐的過(guò)程中需要考慮產(chǎn)品負(fù)責(zé)人以及Scrum團(tuán)隊(duì)成熟度適當(dāng)調(diào)整,理論總是要聯(lián)系實(shí)際。
LeSS實(shí)踐
筆者去年的時(shí)候接手了一個(gè)研發(fā)團(tuán)隊(duì),準(zhǔn)備開(kāi)發(fā)一個(gè)公司內(nèi)部DevOps研發(fā)平臺(tái)產(chǎn)品。團(tuán)隊(duì)成員包括3個(gè)前端JS開(kāi)發(fā),9個(gè)后端JAVA開(kāi)發(fā),1個(gè)測(cè)試,1個(gè)交互;前后端分離設(shè)計(jì),前端基于React,后端基于SpringBoot;團(tuán)隊(duì)成員幾乎不懂敏捷開(kāi)發(fā),Scrum以及LeSS等。如果是你,你會(huì)如何開(kāi)始?
沒(méi)有合理的團(tuán)隊(duì)設(shè)計(jì)讓產(chǎn)品研發(fā)事倍功半,而有了合理的團(tuán)隊(duì)設(shè)計(jì)讓團(tuán)隊(duì)事半功倍。團(tuán)隊(duì)設(shè)計(jì)是影響團(tuán)隊(duì)績(jī)效的一階因素。團(tuán)隊(duì)設(shè)計(jì)簡(jiǎn)單說(shuō)包含兩方面考慮,一個(gè)是團(tuán)隊(duì)自身結(jié)構(gòu)的設(shè)計(jì),一個(gè)是團(tuán)隊(duì)間溝通協(xié)調(diào)方式設(shè)計(jì);團(tuán)隊(duì)自身結(jié)構(gòu)設(shè)計(jì)上通常有兩種選擇:組件團(tuán)隊(duì)或特性團(tuán)隊(duì)。
在組件團(tuán)隊(duì)模式下需求拆分為組件子需求,往往一個(gè)需求會(huì)涉及到多個(gè)組件團(tuán)隊(duì),通常會(huì)產(chǎn)生以下一些影響:
組件團(tuán)隊(duì)缺少產(chǎn)品整體視角,關(guān)注組件交付而非客戶價(jià)值交付;常見(jiàn)的句式是:“我的做完了”。
組件團(tuán)隊(duì)通常資源共享,關(guān)注資源效率,而非價(jià)值交付效率。當(dāng)一個(gè)組件團(tuán)隊(duì)服務(wù)多個(gè)業(yè)務(wù)方的時(shí)候,往往容易導(dǎo)致組件團(tuán)隊(duì)陷入公共綠地的困境,不用白不用,白用誰(shuí)不用,各個(gè)業(yè)務(wù)方拼命爭(zhēng)奪組件團(tuán)隊(duì)資源,在整體溝通信息不順暢的時(shí)候,一個(gè)潛在的結(jié)果是最會(huì)哭最會(huì)喊的那個(gè)業(yè)務(wù)方需求獲得了資源,而不是對(duì)于公司或客戶最有價(jià)值的業(yè)務(wù)方需求獲得。
組件團(tuán)隊(duì)組織產(chǎn)品研發(fā)時(shí)通常也會(huì)采用項(xiàng)目制開(kāi)發(fā)模式,從各個(gè)組件團(tuán)隊(duì)抽調(diào)資源,組建短期項(xiàng)目團(tuán)隊(duì)。不同的PM,不同的團(tuán)隊(duì)成員,不同的做事風(fēng)格,不同的項(xiàng)目復(fù)雜度,不同的完成標(biāo)準(zhǔn),不否認(rèn)有非常牛X的項(xiàng)目經(jīng)理帶領(lǐng)非常牛X的團(tuán)隊(duì)完成非常牛X的項(xiàng)目,但整體上看,往往整個(gè)項(xiàng)目進(jìn)度,質(zhì)量,效率不穩(wěn)定可控。同時(shí)在短期的項(xiàng)目團(tuán)隊(duì)里,人往往被視作實(shí)現(xiàn)項(xiàng)目目標(biāo)的一個(gè)資源,成員工作動(dòng)力不足,高效的團(tuán)隊(duì)是需要長(zhǎng)時(shí)間磨合的。
項(xiàng)目制方式加上關(guān)注資源效率,通常產(chǎn)生的一個(gè)現(xiàn)象是團(tuán)隊(duì)/個(gè)人多任務(wù)并行。適當(dāng)?shù)牟⑿锌梢蕴岣邎F(tuán)隊(duì)的吞吐量,但同時(shí)會(huì)延長(zhǎng)客戶價(jià)值交付周期。當(dāng)并行超出某一個(gè)限度的時(shí)候往往會(huì)導(dǎo)致整體質(zhì)量效率下降。在一定程度上這是一個(gè)投入產(chǎn)出比平衡的結(jié)果。
跨組件團(tuán)隊(duì)溝通時(shí)需要非常清晰明確的公司策略,產(chǎn)品優(yōu)先級(jí)等信息支持,才能更好的協(xié)調(diào)多個(gè)團(tuán)隊(duì)協(xié)作開(kāi)發(fā)。但現(xiàn)實(shí)的情況往往是整個(gè)信息不夠透明。另一方面團(tuán)隊(duì)都會(huì)有自己的屁股,有做大做強(qiáng)自己組件的沖動(dòng),往往導(dǎo)致跨團(tuán)隊(duì)溝通協(xié)調(diào)成本高。
在溝通協(xié)調(diào)不順暢的情況下,往往會(huì)產(chǎn)生強(qiáng)烈的項(xiàng)目管理需求。筆者曾見(jiàn)過(guò)比較極端的case,一個(gè)人半天代碼量的需求,前前后后花費(fèi)了不同團(tuán)隊(duì)10個(gè)人討論了3天,最后在外力的介入下才拍板。
客戶價(jià)值匹配組件團(tuán)隊(duì)技能,而非團(tuán)隊(duì)技能匹配客戶價(jià)值;當(dāng)某一組件需求集中涌現(xiàn)的時(shí)候,容易產(chǎn)生擴(kuò)大團(tuán)隊(duì)的沖動(dòng);當(dāng)某一組件團(tuán)隊(duì)高優(yōu)先級(jí)需求不足的時(shí)候,并不會(huì)縮小團(tuán)隊(duì)規(guī)模,反而會(huì)找活做,容易導(dǎo)致低價(jià)值交付,后果是不斷擴(kuò)大的組件團(tuán)隊(duì);
在某些組織里經(jīng)常會(huì)看到組織調(diào)整,一個(gè)原因就是不斷擴(kuò)大的組件團(tuán)隊(duì),導(dǎo)致研發(fā)成本不斷攀升,但研發(fā)成本攀升的同時(shí)并沒(méi)有實(shí)現(xiàn)同等客戶價(jià)值價(jià)值交付,投入產(chǎn)出比降低,所以需要?jiǎng)右粍?dòng),也算是一種應(yīng)對(duì)的方式,只是這種變化通常更劇烈一些。
當(dāng)需求被拆分到各個(gè)組件團(tuán)隊(duì)后,帶來(lái)的另外一個(gè)后果是后期集中集成,集中測(cè)試,反饋周期往往拉長(zhǎng),并且將風(fēng)險(xiǎn)留在最后,往往導(dǎo)致項(xiàng)目延期,交付周期變長(zhǎng)。
相對(duì)于組件團(tuán)隊(duì),特性團(tuán)隊(duì):
- 長(zhǎng)期穩(wěn)定存在,長(zhǎng)期的合作利于打磨高效團(tuán)隊(duì),質(zhì)量和效率穩(wěn)定可預(yù)見(jiàn)。
- 跨技能,團(tuán)隊(duì)成員技能中包含前端,開(kāi)發(fā),測(cè)試等多種技能。
- 跨組件,團(tuán)隊(duì)覆蓋的范圍同時(shí)橫跨多個(gè)組件。
- 團(tuán)隊(duì)能獨(dú)立完成客戶價(jià)值交付。
- 團(tuán)隊(duì)間協(xié)調(diào)合作從項(xiàng)目管理域轉(zhuǎn)移到代碼技術(shù)域。
當(dāng)然特性團(tuán)隊(duì)也帶來(lái)了一些挑戰(zhàn):
每個(gè)人都需要掌握所有東西?整個(gè)團(tuán)隊(duì)需要擁有產(chǎn)品交付的所有技能,并在客戶需求開(kāi)發(fā)過(guò)程中不斷學(xué)習(xí)擴(kuò)大個(gè)人技能領(lǐng)域,這是一個(gè)長(zhǎng)期的過(guò)程,取決于團(tuán)隊(duì)學(xué)習(xí)的能力。BTW:在現(xiàn)在以及未來(lái)的千變?nèi)f化的社會(huì)中,無(wú)論是個(gè)人還是團(tuán)隊(duì),學(xué)習(xí)能力將是一個(gè)非常重要的能力。
如何保證組件代碼質(zhì)量?需要工程實(shí)踐上的配合,例如主干開(kāi)發(fā),持續(xù)集成,保證產(chǎn)品不被破壞;組件守護(hù)者,review組件相關(guān)修改,技能指導(dǎo);不同人從產(chǎn)品交付的角度修改組件促進(jìn)代碼學(xué)習(xí)以及程序員社交。
整體上特性團(tuán)隊(duì)對(duì)外更加關(guān)注客戶價(jià)值價(jià)值,促進(jìn)創(chuàng)新;對(duì)內(nèi)打破團(tuán)隊(duì)邊界,促進(jìn)組織轉(zhuǎn)型升級(jí);對(duì)個(gè)人促進(jìn)個(gè)人學(xué)習(xí),提升個(gè)人技能。
敏捷原則之一“我們最重要的目標(biāo),是通過(guò)持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意。”對(duì)于一個(gè)從0到1的產(chǎn)品,持續(xù)不斷的滿足客戶需求,持續(xù)不斷的從客戶收集反饋對(duì)于產(chǎn)品來(lái)說(shuō)非常重要,特性團(tuán)隊(duì)更適合當(dāng)前的產(chǎn)品研發(fā)場(chǎng)景。筆者選擇組建了三個(gè)特性團(tuán)隊(duì),每個(gè)團(tuán)隊(duì)4人,其中包含前端開(kāi)發(fā),后端開(kāi)發(fā),可以獨(dú)立完成產(chǎn)品需求交付。
團(tuán)隊(duì)自身結(jié)構(gòu)設(shè)計(jì)好了,接下來(lái)需要考慮團(tuán)隊(duì)間溝通協(xié)調(diào)方式。團(tuán)隊(duì)間溝通協(xié)調(diào)方式會(huì)受到產(chǎn)品需求組織方式的影響。團(tuán)隊(duì)將要開(kāi)發(fā)的DevOps平臺(tái)是一個(gè)非常復(fù)雜的產(chǎn)品,涉及的需求領(lǐng)域很多,比如環(huán)境管理、應(yīng)用管理、版本管理、持續(xù)集成等,同時(shí)這是一個(gè)從0到1的過(guò)程,每個(gè)需求領(lǐng)域都有著充足而穩(wěn)定的產(chǎn)品需求,并且每一個(gè)領(lǐng)域都需要一定的領(lǐng)域背景知識(shí)才能更好的設(shè)計(jì)實(shí)現(xiàn)產(chǎn)品,所以筆者決定劃分為4個(gè)產(chǎn)品需求領(lǐng)域:環(huán)境,應(yīng)用,版本,持續(xù)集成。
在LeSS里是沒(méi)有需求領(lǐng)域的,需求領(lǐng)域是LeSS Huge里的概念,當(dāng)團(tuán)隊(duì)個(gè)數(shù)大于8個(gè)的時(shí)候建議使用LeSS Huge,并且區(qū)分需求領(lǐng)域,每一個(gè)需求領(lǐng)域里依然是LeSS工作方式,同時(shí)增加APO角色負(fù)責(zé)一個(gè)需求領(lǐng)域。
筆者雖然只有3個(gè)特性團(tuán)隊(duì),但依然選擇劃分了需求領(lǐng)域,這點(diǎn)和LeSS有所不同。筆者的考慮是團(tuán)隊(duì)個(gè)數(shù)是一個(gè)劃分需求領(lǐng)域的參考,同時(shí)產(chǎn)品復(fù)雜度和產(chǎn)品所處的階段可能也是需要考慮的一個(gè)維度。
在LeSS里不區(qū)分需求領(lǐng)域的情況下,每一個(gè)特性團(tuán)隊(duì)在一定程度上是等同的,提供最大的靈活性。需求領(lǐng)域的劃分在一定程度上降低了團(tuán)隊(duì)跨需求領(lǐng)域的靈活性,但是在當(dāng)前產(chǎn)品初期從0到1的情況下,每個(gè)領(lǐng)域高優(yōu)先級(jí)需求充足而穩(wěn)定,足以保證每一個(gè)特性團(tuán)隊(duì)持續(xù)的高價(jià)值交付,團(tuán)隊(duì)的跨領(lǐng)域靈活性暫時(shí)不是筆者考慮的最主要的問(wèn)題。
最終團(tuán)隊(duì)整體設(shè)計(jì)如下圖所示,一份產(chǎn)品待辦列表,劃分四個(gè)需求領(lǐng)域,每一個(gè)需求領(lǐng)域由一個(gè)特性團(tuán)隊(duì)負(fù)責(zé)需求,特性團(tuán)隊(duì)中包括前端開(kāi)發(fā)和后端開(kāi)發(fā),其中特性團(tuán)隊(duì)C負(fù)責(zé)兩個(gè)需求領(lǐng)域。
這在一定程度上即保持了產(chǎn)品特性團(tuán)隊(duì)的特征,又減緩了特性團(tuán)隊(duì)在工程實(shí)踐上帶來(lái)的挑戰(zhàn),當(dāng)然也犧牲了一定的團(tuán)隊(duì)敏捷性,這是當(dāng)下的選擇。
需要指出的是,團(tuán)隊(duì)的結(jié)構(gòu)設(shè)計(jì)不是一成不變的,隨著產(chǎn)品的演進(jìn),需求領(lǐng)域不斷的涌現(xiàn)和消亡,團(tuán)隊(duì)的結(jié)構(gòu)設(shè)計(jì)也是隨著時(shí)間調(diào)整的,未必一個(gè)團(tuán)隊(duì)就只能工作在一個(gè)需求領(lǐng)域,或者一個(gè)需求領(lǐng)域只能一個(gè)團(tuán)隊(duì)工作,甚至是否還需要需求領(lǐng)域劃分,這是需要根據(jù)現(xiàn)實(shí)的情況來(lái)調(diào)整的。
完成了團(tuán)隊(duì)自身結(jié)構(gòu)設(shè)計(jì)以及產(chǎn)品需求組織結(jié)構(gòu)設(shè)計(jì)之后,那么團(tuán)隊(duì)之間如何在LeSS框架下協(xié)助完成一個(gè)產(chǎn)品從0到1的開(kāi)發(fā)呢?敬請(qǐng)期待大規(guī)模敏捷開(kāi)發(fā)框架LeSS實(shí)踐(二)。
總結(jié)
簡(jiǎn)單總結(jié)一下,Scrum是敏捷世界里廣泛使用的一個(gè)框架,簡(jiǎn)單,易懂但難于掌握。LeSS是大規(guī)模敏捷開(kāi)發(fā)世界里一個(gè)常用的框架,它的本質(zhì)上依然是Scrum,它想要解決的問(wèn)題是如何將Scrum的原則,元素盡可能簡(jiǎn)單夠用的使用到多個(gè)團(tuán)隊(duì),合作開(kāi)發(fā)一個(gè)產(chǎn)品的場(chǎng)景里去。
在LeSS框架里,很重要的一點(diǎn)在于團(tuán)隊(duì)設(shè)計(jì)。記得以前去拜訪一個(gè)公司,公司領(lǐng)導(dǎo)介紹了公司的組織結(jié)構(gòu),交流中我會(huì)問(wèn)他一些潛在的問(wèn)題點(diǎn),他會(huì)很驚訝于你怎么知道?組織的很多問(wèn)題根源在于組織結(jié)構(gòu)設(shè)計(jì),相同的結(jié)構(gòu)設(shè)計(jì)上往往存在相同的問(wèn)題。沒(méi)有合理的團(tuán)隊(duì)設(shè)計(jì)讓產(chǎn)品研發(fā)事倍功半,而有了合理的團(tuán)隊(duì)設(shè)計(jì)讓團(tuán)隊(duì)事半功倍。團(tuán)隊(duì)設(shè)計(jì)是影響團(tuán)隊(duì)績(jī)效的一階因素。BTW:世界上沒(méi)有所謂的最佳實(shí)踐,沒(méi)有所謂的銀彈,有的僅僅是在特定的上下文里合適的實(shí)踐和方法。
作者:于旭東,網(wǎng)易敏捷教練,專注于公司內(nèi)部敏捷產(chǎn)品研發(fā)實(shí)踐與培訓(xùn),擅長(zhǎng)精益產(chǎn)品搜索,敏捷需求管理,敏捷測(cè)試等技術(shù)。
本文由 @網(wǎng)易杭研項(xiàng)目管理(微信公眾號(hào):NetEasePM) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 PEXXELS,基于 CC0 協(xié)議
- 目前還沒(méi)評(píng)論,等你發(fā)揮!