![]() 先從一則故事說(shuō)起:
這是在Scrum推出的系列故事中最有代表性的一個(gè)故事,它向我們展示了兩種角色:豬和雞。 在敏捷開(kāi)發(fā)中,Scrum是一種增量迭代式的開(kāi)發(fā)過(guò)程,它包含了一系列的實(shí)踐和角色定義的過(guò)程骨架。 主要角色包括產(chǎn)品負(fù)責(zé)人(Product Owner即PO)、敏捷教練(Scrum Master即SM)、開(kāi)發(fā)團(tuán)隊(duì)成員等,他們?cè)陧?xiàng)目中承擔(dān)實(shí)際工作,是Scrum團(tuán)隊(duì)中的核心成員,扮演著“豬”類(lèi)的角色,是必須要全身心投入的。 而用戶(hù)、客戶(hù)、老板們則代表著“雞”類(lèi)角色,他們是項(xiàng)目的需求方和參與者,不會(huì)為項(xiàng)目跟進(jìn)的結(jié)果負(fù)責(zé)。 但他們對(duì)產(chǎn)品的意見(jiàn)至關(guān)重要,因此也必須考慮到他們,這就要求PO和SM必須處理好兩種角色的關(guān)系,這在實(shí)際操作中是最難的一個(gè)環(huán)節(jié)。 在正式介紹Scrum之前,我們先說(shuō)下傳統(tǒng)開(kāi)發(fā)和敏捷開(kāi)發(fā)的對(duì)比。 一、傳統(tǒng)開(kāi)發(fā)傳統(tǒng)的軟件開(kāi)發(fā)采用的是瀑布式開(kāi)發(fā)流程,它把整個(gè)開(kāi)發(fā)過(guò)程分成了需求、設(shè)計(jì)、編碼、測(cè)試、發(fā)布等階段,只有前面階段達(dá)成后再進(jìn)入下一個(gè)階段,整個(gè)過(guò)程按照事先制定的計(jì)劃前進(jìn)。 這種預(yù)定計(jì)劃的方法,帶來(lái)的問(wèn)題也是顯而易見(jiàn)的,每個(gè)階段之間都有強(qiáng)烈的依賴(lài)關(guān)系,前一個(gè)階段被視為后一個(gè)階段的輸入。 如果輸入的質(zhì)量不高則會(huì)嚴(yán)重影響后續(xù)階段的輸出質(zhì)量,隨即帶來(lái)后續(xù)一些列階段的停滯,最終導(dǎo)致開(kāi)發(fā)周期拉長(zhǎng)項(xiàng)目延期,甚至以失敗告終; 我們的市場(chǎng)需求瞬息萬(wàn)變,很難實(shí)現(xiàn)產(chǎn)品需求明確完整的收集,項(xiàng)目早期的承諾也導(dǎo)致對(duì)后期需求的變化難以調(diào)整、代價(jià)高昂。 同時(shí),技術(shù)的發(fā)展也日新月異,對(duì)于所定義的功能可能實(shí)現(xiàn)也面臨著多重不確定性的因素。 所以從需求的明確性和功能實(shí)現(xiàn)的確定性?xún)蓚€(gè)維度出發(fā),當(dāng)需求的不明確性和功能實(shí)現(xiàn)的不確定性均超出一定范圍之后,呈現(xiàn)出復(fù)雜系統(tǒng)的特征,瀑布式開(kāi)發(fā)這種結(jié)構(gòu)化的方法便不再適用,而敏捷開(kāi)發(fā)方法便是在這樣的背景下誕生。 Fix Feature,F(xiàn)lextime(傳統(tǒng)開(kāi)發(fā)固定范圍,彈性時(shí)間) 二、敏捷開(kāi)發(fā)敏捷開(kāi)發(fā)的一個(gè)核心思想的轉(zhuǎn)換是,從瀑布式開(kāi)發(fā)所代表的“Fix Feature, Flex time”(固定范圍,彈性時(shí)間)轉(zhuǎn)向“Fixtime, Flex Feature”(固定時(shí)間,彈性范圍)。 Fixtime,F(xiàn)lex Feature(敏捷開(kāi)發(fā)固定時(shí)間,彈性范圍) 在市場(chǎng)變化和技術(shù)變化的背景下,既然市場(chǎng)需求和產(chǎn)品定義所代表的“范圍”無(wú)法實(shí)現(xiàn)固化。 因而無(wú)法確定應(yīng)該投入多少資源來(lái)完成,那不妨固定好已有資源的,以資源位約束,實(shí)現(xiàn)“范圍”的最大實(shí)現(xiàn),從“計(jì)劃驅(qū)動(dòng)”轉(zhuǎn)向?yàn)椤皟r(jià)值驅(qū)動(dòng)”。 在敏捷開(kāi)發(fā)的思維模式提出后,2001年,敏捷宣言誕生。
(注意:這里的勝過(guò)不是不要做,而是當(dāng)兩者出現(xiàn)沖突的時(shí)候,我們進(jìn)行選擇的判斷依據(jù))。 對(duì)比瀑布式開(kāi)發(fā),敏捷開(kāi)發(fā)更加貼近最終的市場(chǎng)環(huán)境,它有著更好的適應(yīng)性,同時(shí)在敏捷宣言的指引下,更強(qiáng)調(diào)發(fā)揮人的價(jià)值,能更好的挖掘出團(tuán)隊(duì)的潛能。 敏捷開(kāi)發(fā)充分發(fā)揮“人”在軟件開(kāi)發(fā)中的價(jià)值,強(qiáng)調(diào)追求有價(jià)值的產(chǎn)品結(jié)果,發(fā)揮每個(gè)人的主動(dòng)性和創(chuàng)造力。 在敏捷宣言的指引下,產(chǎn)生了很多種敏捷開(kāi)發(fā)方法,而沖刺和迭代式的“Scrum”方法,更進(jìn)一步通過(guò)具體的實(shí)施手段展現(xiàn)“敏捷宣言”所代表的敏捷價(jià)值觀。 三、Scrum介紹Scrum原始含義是指英式橄欖球次要犯規(guī)時(shí)在犯規(guī)地點(diǎn)對(duì)陣爭(zhēng)球。 Sprint則是指竭盡全力的沖刺短跑,為球隊(duì)爭(zhēng)得利益,球隊(duì)隊(duì)員為一個(gè)整體,按照陣型發(fā)揮各自的價(jià)值,最終的結(jié)果取決于團(tuán)隊(duì)的配合和取勝的決心,而不是教練在場(chǎng)下的指揮。
Scrum敏捷開(kāi)發(fā)讓團(tuán)隊(duì)以一個(gè)整體走完全程,產(chǎn)品開(kāi)發(fā)過(guò)程從一個(gè)精心挑選的多學(xué)科團(tuán)隊(duì)的不斷互動(dòng)中產(chǎn)生,團(tuán)隊(duì)成員從開(kāi)始到結(jié)束都在一起工作,該過(guò)程不是在定義好的、高度結(jié)構(gòu)化的階段中進(jìn)行的,而是在團(tuán)隊(duì)成員的相互作用下產(chǎn)生的。 四、Scrum的特點(diǎn)1. 內(nèi)置的不穩(wěn)定性高層通過(guò)發(fā)出一個(gè)寬泛的總體戰(zhàn)略方向的信號(hào)來(lái)啟動(dòng)項(xiàng)目,并設(shè)置了一個(gè)極具有挑戰(zhàn)的目標(biāo),同時(shí)賦予項(xiàng)目團(tuán)隊(duì)極大的自由來(lái)完成這個(gè)項(xiàng)目,這樣既給團(tuán)隊(duì)壓力,同時(shí)把團(tuán)隊(duì)推到墻邊并把他們逼到極致發(fā)揮他們的創(chuàng)造力。 2. 自組織的項(xiàng)目團(tuán)隊(duì)當(dāng)項(xiàng)目團(tuán)隊(duì)被驅(qū)動(dòng)到“零信息”的狀態(tài)時(shí),他們就會(huì)呈現(xiàn)出一種自組織的特征,這種狀態(tài)存在模糊性和波動(dòng)性,因此需要項(xiàng)目團(tuán)隊(duì)像初創(chuàng)團(tuán)隊(duì)一樣運(yùn)作,承擔(dān)主動(dòng)性和風(fēng)險(xiǎn),并制定獨(dú)立的議程,當(dāng)一個(gè)群體表現(xiàn)出三個(gè)條件:自治、自我超越和異花授粉,這個(gè)群體就擁有了自組織的能力。
3. 重疊的開(kāi)發(fā)階段在瀑布式方法下,一個(gè)項(xiàng)目以循序漸進(jìn)的方式經(jīng)歷幾個(gè)階段,只有在滿(mǎn)足了前一階段的所有需求之后,才能從一個(gè)階段過(guò)渡到下一個(gè)階段。 通過(guò)一些檢查點(diǎn)控制風(fēng)險(xiǎn),但這種方法幾乎沒(méi)有為集成留下空間,某個(gè)階段的瓶頸可能會(huì)減慢甚至停止整個(gè)開(kāi)發(fā)過(guò)程。 而在整體或橄欖球方法下,這些階段有相當(dāng)大的重疊,這使得團(tuán)隊(duì)能夠吸收整個(gè)開(kāi)發(fā)過(guò)程中產(chǎn)生的振動(dòng)或“噪音”,重疊方法加強(qiáng)了共同責(zé)任和合作,激發(fā)了參與和承諾。 團(tuán)隊(duì)必須同步進(jìn)度以滿(mǎn)足最后期限,突出了解決問(wèn)題的重點(diǎn),鼓勵(lì)主動(dòng)采取行動(dòng),發(fā)展多樣化的技能,并提高對(duì)市場(chǎng)條件變化的敏感性。 4. 多重學(xué)習(xí)由于項(xiàng)目團(tuán)隊(duì)的成員與外部信息來(lái)源保持密切聯(lián)系,他們可以快速響應(yīng)變化的市場(chǎng)條件。 團(tuán)隊(duì)成員參與一個(gè)不斷嘗試和犯錯(cuò)的過(guò)程,以減少他們必須考慮的選擇的數(shù)量。他們也獲得了廣泛的知識(shí)和多樣化的技能,這有助于他們創(chuàng)建一個(gè)能夠快速解決一系列問(wèn)題的多才多藝的團(tuán)隊(duì)。 5. 微妙的控制盡管項(xiàng)目團(tuán)隊(duì)在很大程度上是獨(dú)立的,但他們并不是不受控制的,管理層建立了足夠的檢查點(diǎn),以防止不穩(wěn)定、含糊不清和緊張局勢(shì)演變成混亂。 與此同時(shí),管理避免了那種損害創(chuàng)造力和自發(fā)性的嚴(yán)格控制。相反,它強(qiáng)調(diào)的是“自我控制”、“通過(guò)同伴壓力的控制”和“通過(guò)熱愛(ài)的控制”,我們統(tǒng)稱(chēng)它們?yōu)椤拔⒚畹目刂啤薄?/p> 6. 學(xué)習(xí)的組織轉(zhuǎn)移跨層次和跨職能積累知識(shí)的動(dòng)力只是學(xué)習(xí)的一個(gè)方面,項(xiàng)目成員也有同樣強(qiáng)烈的動(dòng)力將他們的學(xué)習(xí)成果轉(zhuǎn)移給小組以外的其他人,將學(xué)習(xí)內(nèi)容轉(zhuǎn)移到后續(xù)的新產(chǎn)品開(kāi)發(fā)項(xiàng)目或組織內(nèi)的其他部門(mén)。 Scrum敏捷開(kāi)發(fā)的實(shí)施讓開(kāi)發(fā)團(tuán)隊(duì)有了一定自主權(quán),已安排好的計(jì)劃很大程度上不會(huì)被打斷,同時(shí)上下游相互配合,為一個(gè)共同的目標(biāo)而努力,每個(gè)人都清楚團(tuán)隊(duì)其他人的工作內(nèi)容,每天都知道項(xiàng)目的實(shí)時(shí)進(jìn)度,團(tuán)隊(duì)是一個(gè)整體的存在,而不是每個(gè)人獨(dú)立工作下的個(gè)體,有著很強(qiáng)的集體榮譽(yù)感。 但Scrum能否成功實(shí)施,關(guān)鍵要先獲得高層的認(rèn)同和理解,讓高層們理解Scrum的要義、利弊,如果Scrum能帶來(lái)高效、優(yōu)質(zhì)的開(kāi)發(fā)成果。 那就在制定績(jī)效結(jié)果并在實(shí)施過(guò)程中放權(quán),讓每個(gè)成員真正意識(shí)到項(xiàng)目成果是自己的事,而不是領(lǐng)導(dǎo)的事。 如果是職能型的研發(fā)團(tuán)隊(duì),同時(shí)也要獲得各需求方的認(rèn)可和支持,分享在這種方法下對(duì)整體的收益最大化,否則可能會(huì)面臨各種不理解,最終可能導(dǎo)致實(shí)施失敗。 因此,我們要落地Scrum敏捷開(kāi)發(fā),就要做好“豬”與“雞”兩種角色之間心理上的平衡與和諧,“雞爺爺”切不可把“小豬”們看成是一群豬八戒,空有一身本領(lǐng),但好吃懶做。 “小豬”們也不可把“雞爺爺”想象成周扒皮,只會(huì)半夜雞叫,影響正常的開(kāi)發(fā)進(jìn)度。 豬和雞雙方相互理解,達(dá)到項(xiàng)目開(kāi)展過(guò)程中的平衡點(diǎn),才能讓整個(gè)項(xiàng)目順利的完成。 |
|
|