敏捷 | 如何正確理解敏捷?

在過(guò)去的五年時(shí)間里,我所在的公司和團(tuán)隊(duì)一直使用的都是敏捷開(kāi)發(fā)模式,我也在2018年底獲取了Scrum聯(lián)盟的CSM認(rèn)證,對(duì)于敏捷的理解也是從最初的感性認(rèn)識(shí)到現(xiàn)在的理性認(rèn)識(shí)。今天開(kāi)始和你一起重新溫習(xí)敏捷,先來(lái)正確理解一下敏捷吧。
2001年,一群大師聚集在美國(guó)猶他州,吃吃喝喝頭腦風(fēng)暴,搞出了一個(gè)敏捷宣言,闡述了5條價(jià)值觀,如下圖所示。

對(duì)于敏捷宣言,在學(xué)習(xí)和實(shí)踐的前期我和團(tuán)隊(duì)都有一個(gè)常見(jiàn)的誤解:認(rèn)為左邊的最重要,右邊的沒(méi)有價(jià)值。
但是,請(qǐng)注意最后的一句話(huà)“雖然右項(xiàng)有價(jià)值,但我們更重視左項(xiàng)”,結(jié)合前面每一條的“勝過(guò)”二字,就可以理解為:與每一條中右面的內(nèi)容相比,左面的內(nèi)容是敏捷更加重視的,但是,不代表建議你停止右邊的內(nèi)容。
比如“可以工作的軟件比面面俱到的文檔更加重要”,但這并不意味著就完全放棄文檔的編寫(xiě),而是不必要的文檔可以放棄,比如:交接類(lèi)文檔、提測(cè)描述類(lèi)文檔、接口說(shuō)明文檔(比如可以完善注釋和集成Swagger等工具在線展示)。而一些有價(jià)值的文檔,如設(shè)計(jì)方案文檔、架構(gòu)體系文檔等,還是不能省的。
因此,敏捷的價(jià)值觀其實(shí)并沒(méi)有否定右項(xiàng)的價(jià)值,這些右項(xiàng)的內(nèi)容也很重要,在敏捷里也不是建議大家都不做。敏捷的價(jià)值觀其實(shí)也就體現(xiàn)了敏捷的初心,敏捷的初心是建議我們通過(guò)一系列方法來(lái)讓我們的研發(fā)工作更加高效、靈活和有序,所以它強(qiáng)調(diào)團(tuán)隊(duì)成員的能動(dòng)性和相互之間的協(xié)作,也更重視應(yīng)對(duì)變化。所以,如果“流程和工具”、“詳盡的文檔”、“合同談判”又或者“遵循計(jì)劃”能夠讓研發(fā)工作更高效有序,那敏捷其實(shí)也是不反對(duì)也不放棄做的,這或許也是敏捷的真諦。
只有敏捷價(jià)值觀是無(wú)法具體指導(dǎo)我們具體工作的,因此由它的價(jià)值觀又引出了經(jīng)典的敏捷十二條原則,是每個(gè)學(xué)習(xí)敏捷的童鞋都應(yīng)該反復(fù)理解的話(huà):
(1)我們最優(yōu)先要做的是通過(guò)盡早的、持續(xù)的交付有價(jià)值的軟件來(lái)使客戶(hù)滿(mǎn)意。
(2)即使到了開(kāi)發(fā)的后期,也歡迎改變需求。敏捷過(guò)程利用變化來(lái)為客戶(hù)創(chuàng)造競(jìng)爭(zhēng)優(yōu)勢(shì)。
(3)經(jīng)常性地交付可以工作的軟件,交付的間隔可以從幾個(gè)星期到幾個(gè)月,交付的時(shí)間間隔越短越好。
(4)在整個(gè)項(xiàng)目開(kāi)發(fā)期間,業(yè)務(wù)人員和開(kāi)發(fā)人員必須天天都在一起工作。
(5)圍繞被激勵(lì)起來(lái)的個(gè)體來(lái)構(gòu)建項(xiàng)目。給他們提供所需的環(huán)境和支持,并且信任他們能夠完成工作。
(6)在團(tuán)隊(duì)內(nèi)部,最具有效果并且富有效率的傳遞信息的方法,就是面對(duì)面的交談。
(7)工作的軟件是首要的進(jìn)度度量標(biāo)準(zhǔn)。
(8)敏捷過(guò)程提倡可持續(xù)的開(kāi)發(fā)速度。責(zé)任人、開(kāi)發(fā)者和用戶(hù)應(yīng)該能夠保持一個(gè)長(zhǎng)期的、恒定的開(kāi)發(fā)速度。
(9)不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力。
(10)簡(jiǎn)單——使未完成的工作最大化的藝術(shù)——是根本的。
(11)最好的構(gòu)架、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)。
(12)每隔一定時(shí)間,團(tuán)隊(duì)會(huì)在如何才能更有效地工作方面進(jìn)行反省,然后相應(yīng)地對(duì)自己的行為進(jìn)行調(diào)整。
這十二條原則也可以幫助我們正確理解敏捷,里面的原則對(duì)于敏捷的價(jià)值觀做了細(xì)致的描述,它重視各方的協(xié)作,強(qiáng)調(diào)持續(xù)改進(jìn)和響應(yīng)變化,不夸張的說(shuō),它基本涵蓋了軟件項(xiàng)目管理中比較具體的基本流程。

我們要做的就是,正確理解這些原則,然后以此為基準(zhǔn)去實(shí)踐,并隨時(shí)審視和回顧以指導(dǎo)自己的做事。
理解了價(jià)值觀和原則,我們還需要掌握一些可落地的方法論。當(dāng)然,敏捷聯(lián)盟的大師們?cè)缇蜑槲覀兯伎己昧?,例?XP(極限編程)、Scrum、特征驅(qū)動(dòng)開(kāi)發(fā)、動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)、SaFe、Less等等,他們被統(tǒng)一稱(chēng)為敏捷方法。還有一些配套的技術(shù)實(shí)踐,例如TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))、BDD(行為驅(qū)動(dòng)開(kāi)發(fā))、CI(持續(xù)集成)等等。換句話(huà)說(shuō),只要是符合敏捷價(jià)值觀和原則的方法論,都可以稱(chēng)之為敏捷方法。

其實(shí),這些方法從共性上來(lái)看,它們其實(shí)都遵守了敏捷的價(jià)值觀和原則,差別都只在于它們針對(duì)了不同的應(yīng)用場(chǎng)景。因此,這里提一下大家可能都存在的另一個(gè)誤解,也是我和團(tuán)隊(duì)在學(xué)習(xí)初期的一個(gè)常見(jiàn)誤解:敏捷就是Scrum。
毫無(wú)疑問(wèn),這個(gè)誤解的確很常見(jiàn),因?yàn)镾crum是目前較為主流的敏捷實(shí)踐方法,大部分公司做敏捷轉(zhuǎn)型也都是使用和培訓(xùn)的Scrum,導(dǎo)致了我們會(huì)有這樣的誤解。但是,從上面可以了解到,Scrum不是敏捷的全部,它只是敏捷的一個(gè)落地方法之一。
說(shuō)到Scrum,既然它是采用度最廣泛的一個(gè)方法論,就不得不提我自己曾經(jīng)對(duì)于Scrum的一個(gè)常見(jiàn)誤解:Scrum就是3355。
什么是3355?
第一個(gè)3代表3個(gè)角色,即Product Owner(產(chǎn)品負(fù)責(zé)人)、Scrum Master 和 團(tuán)隊(duì);
第二個(gè)3代表3個(gè)工件,即Product Backlog(產(chǎn)品待辦事項(xiàng)列表)、Sprint Backlog(迭代待辦事項(xiàng)列表)和 Product Increment(產(chǎn)品增量);
第三個(gè)5代表5個(gè)事件,這也是大家感受最深刻的,即Sprint?Planning(迭代計(jì)劃會(huì)議)、Daily Scrum(每日站立會(huì)議)、Sprint Review(迭代評(píng)審會(huì)議)、Sprint?Retrospective(迭代回顧會(huì)議)、Backlog Refinement(產(chǎn)品Backlog梳理會(huì)議);
第四個(gè)5代表5個(gè)價(jià)值,即承諾、專(zhuān)注、開(kāi)放、尊重和勇氣;

3355代表了Scrum的精髓,其中每一個(gè)點(diǎn)都可以展開(kāi)闡述許多文字,這里不再贅述。學(xué)習(xí)了3355,但是并不代表理解它和照搬它就可以做好Scrum,這也是初步實(shí)踐Scrum的團(tuán)隊(duì)所經(jīng)常犯的錯(cuò)誤。因?yàn)?,?shí)踐Scrum還有約束條件需要我們嚴(yán)格遵守,如果不遵守這些約束條件,你可能實(shí)踐的是假Scrum。
比如在Planning開(kāi)始之前,Product Owner需要準(zhǔn)備好Backlog,使得需求能夠達(dá)到準(zhǔn)入的標(biāo)準(zhǔn)。如果沒(méi)有準(zhǔn)備好或是不夠準(zhǔn)入,那么團(tuán)隊(duì)的開(kāi)發(fā)節(jié)奏仍然會(huì)被打亂。又比如Scrum講究時(shí)間盒約定,迭代周期、會(huì)議時(shí)間、發(fā)言時(shí)間都有嚴(yán)格的時(shí)間規(guī)定。如果不遵守約定,那么團(tuán)隊(duì)會(huì)被耗在各個(gè)會(huì)議上面而一直沒(méi)有結(jié)果,最終團(tuán)隊(duì)成員的厭煩感就會(huì)一股腦而上。

綜述,Scrum其實(shí)不只3355,還包括一些背后的規(guī)則和條件,只有先準(zhǔn)備好和遵守好這些規(guī)則和條件,在此基礎(chǔ)之上應(yīng)用3355,才能讓它發(fā)揮作用。
說(shuō)到Scrum,提一下Scrum聯(lián)盟的認(rèn)證路線,有條件的企業(yè)可以引入Scrum認(rèn)證培訓(xùn)機(jī)構(gòu)(當(dāng)然,這是一筆不小的花費(fèi))給員工進(jìn)行系統(tǒng)化的認(rèn)知和體驗(yàn)培訓(xùn),幫助員工掌握Scrum。為避免有打廣告的嫌疑,這里我就不推薦培訓(xùn)機(jī)構(gòu)了,大家自己找吧。

一句話(huà)理解敏捷的話(huà),那么敏捷應(yīng)該是 價(jià)值觀+原則+符合價(jià)值觀和原則的一堆落地方法論。
對(duì)于敏捷,我們需要從價(jià)值觀、原則和具體落地方法上對(duì)它有個(gè)全面的認(rèn)識(shí),才能在落地實(shí)踐中有正確的方向,隨時(shí)糾正自己不要走偏不要違背了敏捷的初心。
對(duì)于方法,無(wú)論它是不是Scrum,又或者它是否打著敏捷的名頭又或者冠以敏捷,本身是無(wú)所謂的,我也更是覺(jué)得并非要全盤(pán)采納敏捷的所有方法(很多時(shí)候我發(fā)現(xiàn)我們都很迷信3355的流程),只要在具體實(shí)踐中能夠體現(xiàn)敏捷思想,改變自己改變團(tuán)隊(duì),持續(xù)改進(jìn)提高效率,最終完成公司的目標(biāo),那就是敏捷的方法。
?參考資料
(1)宋寧,《說(shuō)透敏捷》(極客時(shí)間課程)
(2)Jeff Sutherland & Ken Schwaber《Scrum Guide(2020版)》
Note:在本公眾號(hào)內(nèi)回復(fù)“scrum guide”即可獲得2020版Scrum?Guide PDF
(3)周金根,《敏捷開(kāi)發(fā)的12條敏捷原則》
(4)Mike Cohn,《Scrum敏捷軟件開(kāi)發(fā)》
(5)一些企業(yè)內(nèi)訓(xùn)的敏捷培訓(xùn)資料
如果本文有用,請(qǐng)點(diǎn)擊“在看”或轉(zhuǎn)發(fā)朋友圈!
