前言
本讀書筆記分兩部分肆氓。
第一部分探討傳統(tǒng)軟件開發(fā)方式和敏捷開發(fā)的區(qū)別于样。
第二部分探討敏捷開發(fā)方法論之一的Scrum方法媳友。根據(jù)《Scrum要素》中的周記肥缔,結(jié)合《Scrum權(quán)威指南》丛版,討論Scrum的主要內(nèi)容巩掺。
敏捷力介紹
瀑布模型
瀑布模型將開發(fā)和交付企業(yè)軟件項(xiàng)目的流程分割為相互獨(dú)立的階段:
- 需求收集
- 設(shè)計(jì)
- 編碼
- 測(cè)試
在瀑布流程中,每一步驟都必須等待前一步驟結(jié)束后才能繼續(xù)页畦,也只有等待所有步驟都結(jié)束后才有可能向客戶交付價(jià)值胖替。人們往往會(huì)認(rèn)為“完美化”設(shè)計(jì)能夠作為該模型的理論支持:能夠早點(diǎn)捕獲錯(cuò)誤和缺陷,從而降低項(xiàng)目全過程成本豫缨。然而美中不足之處就在于“完美化”太不現(xiàn)實(shí)了独令,軟件產(chǎn)品是復(fù)雜系統(tǒng),而不是靜態(tài)物件好芭,毫無經(jīng)驗(yàn)數(shù)據(jù)只能設(shè)計(jì)出致命的爛系統(tǒng)燃箭,在出問題前把事情搞得一團(tuán)糟。
迭代式方法
敏捷團(tuán)隊(duì)做的開發(fā)工作和瀑布團(tuán)隊(duì)一模一樣舍败,但他們的做事方式很不一樣招狸。敏捷開發(fā)周期使用的職能和瀑布方法一樣:需求收集敬拓、設(shè)計(jì)、編碼和測(cè)試裙戏,差別在于:敏捷團(tuán)隊(duì)會(huì)做一點(diǎn)點(diǎn)需求收集乘凸,一點(diǎn)點(diǎn)設(shè)計(jì)、編碼和測(cè)試挽懦,最后交付一點(diǎn)點(diǎn)價(jià)值給客戶翰意。接著團(tuán)隊(duì)再重復(fù)此過程木人,周而復(fù)始信柿,工作推進(jìn)過程中不斷改善、調(diào)整流程醒第,一直到項(xiàng)目完成為止渔嚷。
Scrum
初讀《Scrum權(quán)威指南》,該書精練準(zhǔn)確地定義了Scrum框架稠曼,包括Scrum理論形病、價(jià)值觀、團(tuán)隊(duì)霞幅、事件漠吻、工件等內(nèi)容,而在《Scrum要素》的開篇司恳,作者以講故事的手法敘述了一篇《Scrum團(tuán)隊(duì)周記》途乃,形象生動(dòng)地將Scrum框架主要內(nèi)容介紹給讀者。
角色
在《Scrum團(tuán)隊(duì)周記》中扔傅,這支高績(jī)效的scrum團(tuán)隊(duì)由九個(gè)人組成耍共,Brad是產(chǎn)品負(fù)責(zé)人,F(xiàn)rank是團(tuán)隊(duì)的scrum master猎塞,剩下七名均為團(tuán)隊(duì)成員试读,他們來自傳統(tǒng)領(lǐng)域,頭銜可能各不相同荠耽,例如架構(gòu)師钩骇、業(yè)務(wù)分析師、設(shè)計(jì)師铝量、軟件開發(fā)者倘屹、測(cè)試人員、產(chǎn)品經(jīng)理等款违,但scrum只承認(rèn)三個(gè)互不相同的角色唐瀑,即產(chǎn)品負(fù)責(zé)人、scrum master和團(tuán)隊(duì)成員插爹,團(tuán)隊(duì)規(guī)模在5-9人哄辣。
Brad —— 產(chǎn)品負(fù)責(zé)人
Brad有一張工作項(xiàng)的候選列表请梢,新特性和錯(cuò)誤修復(fù)的工作都有,他認(rèn)為這些都是項(xiàng)目上最重要的待辦事項(xiàng)力穗。這些待辦事項(xiàng)源自于一個(gè)按優(yōu)先級(jí)排序地清單毅弧,將它們挑選出來是Brad作為產(chǎn)品負(fù)責(zé)人職責(zé)地一部分。
選定范圍后当窗,Brad會(huì)用文摘卡記錄下這些特性够坐。
這些故事都是Brad、業(yè)務(wù)和客戶想要的東西:故事是有商業(yè)價(jià)值的崖面。
團(tuán)隊(duì)成員們和Brad逐一討論這些用戶故事元咙,明確其驗(yàn)收標(biāo)準(zhǔn),或者更確切地說巫员,就是Brad心目中已經(jīng)完成故事地模樣庶香。
有個(gè)故事大家理解得還不夠,沒有想象中地好简识,他們要求Brad再去向某個(gè)關(guān)鍵客戶多要些信息回來赶掖。
我們可以看出產(chǎn)品負(fù)責(zé)人的工作職責(zé)有哪些:
- 清晰地表述產(chǎn)品待辦列表項(xiàng),并對(duì)產(chǎn)品列表項(xiàng)進(jìn)行排序七扰,使其最好地實(shí)現(xiàn)目標(biāo)和使命
- 確保產(chǎn)品待辦列表對(duì)所有人是可見奢赂、透明和清晰地,同時(shí)顯示Scrum團(tuán)隊(duì)下一步要做地工作颈走,以及確保開發(fā)團(tuán)隊(duì)對(duì)產(chǎn)品待辦列表項(xiàng)有足夠深地了解膳灶。
- 優(yōu)化開發(fā)團(tuán)隊(duì)所執(zhí)行工作地價(jià)值
Frank —— Scrum Master
Frank是團(tuán)隊(duì)地scrum master,他早已把房間布置得妥妥當(dāng)當(dāng)疫鹊,就等會(huì)議開始
Frank開始帶著大家做“估算游戲”袖瞻,跟撲克牌游戲很像,能夠幫助團(tuán)隊(duì)快速達(dá)成共識(shí)
我們可以看到拆吆,scrum master擔(dān)當(dāng)教練角色聋迎,引領(lǐng)團(tuán)隊(duì)達(dá)到更高級(jí)地凝聚力、自組織和表現(xiàn)枣耀。他們密切注意流程和進(jìn)度地情況霉晕,獻(xiàn)言獻(xiàn)策幫助團(tuán)隊(duì)解決小問題,有需要時(shí)還會(huì)扮演回音板角色捞奕。
- 服務(wù)于產(chǎn)品負(fù)責(zé)人牺堰,確保團(tuán)隊(duì)中每個(gè)人都盡可能地理解目標(biāo)、范圍和產(chǎn)品域等
- 服務(wù)于開發(fā)團(tuán)隊(duì)颅围,移除開發(fā)團(tuán)隊(duì)工作進(jìn)展中地障礙伟葫,幫助開發(fā)團(tuán)隊(duì)創(chuàng)造高價(jià)值地產(chǎn)品,引導(dǎo)scrum事件
- 服務(wù)于組織院促,在組織范圍內(nèi)規(guī)劃Scrum的實(shí)施筏养,幫助員工和利益攸關(guān)者理解并實(shí)施Scrum和經(jīng)驗(yàn)導(dǎo)向的產(chǎn)品開發(fā)
團(tuán)隊(duì)成員
剩下的所有開發(fā)人員斧抱,負(fù)責(zé)在每個(gè)Sprint結(jié)束時(shí)交付潛在可發(fā)布并且完成的產(chǎn)品增量。
- 他們是自組織的渐溶,沒有人有權(quán)告訴開發(fā)團(tuán)隊(duì)?wèi)?yīng)該如何把產(chǎn)品代辦列表變成潛在可發(fā)布的功能增量
- 開發(fā)團(tuán)隊(duì)是跨職能的團(tuán)隊(duì)辉浦,團(tuán)隊(duì)作為一個(gè)整體,擁有創(chuàng)建產(chǎn)品增量所需的全部技能
- 開發(fā)團(tuán)隊(duì)中的每個(gè)成員也許有特長(zhǎng)和專注地領(lǐng)域茎辐,但是責(zé)任屬于整個(gè)開發(fā)團(tuán)隊(duì)
事件
Sprint周期是scrum過程地基本節(jié)奏宪郊,這是敏捷方法論的一個(gè)共同點(diǎn),以迭代方式完成工作拖陆,在《周記》中弛槐,Sprint周期長(zhǎng)度為一周慕蔚,一周內(nèi)出現(xiàn)Sprint事件如圖所示
Sprint計(jì)劃會(huì)議
Brad開始講話:“大家平均每個(gè)Sprint能夠完成相當(dāng)于40個(gè)故事點(diǎn)的工作量丐黄。我已經(jīng)從產(chǎn)品里選出了最前面8個(gè)故事,加起來正好40個(gè)點(diǎn)的大小孔飒,我想知道團(tuán)隊(duì)會(huì)不會(huì)承諾這些故事”
團(tuán)隊(duì)成員們和Brad逐一討論這些用戶故事,明確其驗(yàn)收標(biāo)準(zhǔn)艰争,或者更確切地說坏瞄,就是Brad心目中已經(jīng)完成故事地模樣。團(tuán)隊(duì)成員會(huì)繼續(xù)討論實(shí)現(xiàn)這些故事要做地工作甩卓,有哪些類型鸠匀,有多少工作量。
團(tuán)隊(duì)開始把用戶故事分解成任務(wù)逾柿,團(tuán)隊(duì)一起上缀棍,要找到辦法對(duì)這些故事進(jìn)行設(shè)計(jì)、編碼以及測(cè)試机错,在此過程中爬范,他們會(huì)用便利貼把所有的任務(wù)記錄下來。
Sprint計(jì)劃會(huì)議要回答以下問題:
- 接下來地Sprint交付的增量中要包含什么內(nèi)容弱匪?
- 要如何完成交付增量所需的工作青瀑?
開發(fā)團(tuán)隊(duì)預(yù)測(cè)在這次Sprint中要開發(fā)的功能,產(chǎn)品負(fù)責(zé)人講解Sprint的目標(biāo)以及達(dá)成該目標(biāo)所需完成的待辦列表項(xiàng)萧诫,整個(gè)Scrum團(tuán)隊(duì)協(xié)同工作來理解Sprint的工作斥难。
在設(shè)定了Sprint目標(biāo)后并選出這個(gè)Sprint要完成的產(chǎn)品待辦列表項(xiàng)后,開發(fā)團(tuán)隊(duì)將決定如何在Sprint中把這些功能構(gòu)建成完成的產(chǎn)品增量帘饶。開發(fā)團(tuán)隊(duì)通常從設(shè)計(jì)整個(gè)系統(tǒng)開始哑诊,到如何將產(chǎn)品待辦列表列表轉(zhuǎn)化成可工作的產(chǎn)品增量所需要的工作。
每日站會(huì)
scrum日會(huì)是一種短會(huì)及刻,用于團(tuán)結(jié)和協(xié)調(diào)團(tuán)隊(duì)镀裤。為了鼓勵(lì)大家都簡(jiǎn)潔點(diǎn)穷当,這個(gè)會(huì)是站著開的,它也因此而得名“每日站會(huì)”淹禾。
團(tuán)隊(duì)成員輪流分享信息:前一天完成了什么任務(wù)馁菜,明天的scrum日會(huì)前打算做哪個(gè)任務(wù);有沒有碰到什么障礙或者是受到了什么拖累
開發(fā)團(tuán)隊(duì)或者開發(fā)團(tuán)隊(duì)成員通常會(huì)在每日Scrum站會(huì)后立即聚到一起進(jìn)行更詳細(xì)的討論铃岔,或者為Sprint中剩余的工作進(jìn)行調(diào)整或重新計(jì)劃汪疮。
Scrum master確保開發(fā)團(tuán)隊(duì)每日站會(huì)如期舉行,但開發(fā)團(tuán)隊(duì)自己負(fù)責(zé)召開會(huì)議毁习。Scrum master教導(dǎo)開發(fā)團(tuán)隊(duì)將每日Scrum會(huì)議時(shí)間控制在15分鐘內(nèi)智嚷。每日Scrum站會(huì)增進(jìn)交流溝通、減少其他會(huì)議纺且、發(fā)現(xiàn)開發(fā)過程中需要移除的障礙盏道、突顯并促進(jìn)快速地做決策、提高開發(fā)團(tuán)隊(duì)的認(rèn)知程度载碌。這是一個(gè)進(jìn)行檢視和適應(yīng)的關(guān)鍵會(huì)議
評(píng)審會(huì)議
午飯后進(jìn)行當(dāng)前Sprint的公開收尾猜嘱,團(tuán)隊(duì)成員們都來了,這一事件就是Sprint評(píng)審會(huì)議嫁艇。整個(gè)團(tuán)隊(duì)都在場(chǎng)朗伶,還向所有干系人發(fā)出了參會(huì)邀請(qǐng)。
團(tuán)隊(duì)先是宣布他們完成了這個(gè)Sprint承諾過的所有故事步咪。接著就直接開始演示他們?yōu)楣适滤_發(fā)的這個(gè)軟件功能论皆。
演示結(jié)束后,團(tuán)隊(duì)邀請(qǐng)參會(huì)者親身體驗(yàn)新功能猾漫,問他們有沒有疑問或者建議点晴,Brad小心記錄下不同干系人對(duì)于當(dāng)前產(chǎn)品的看法,以及他們希望在下一次發(fā)布時(shí)看到的變化悯周。
我們可以看到粒督,一次Sprint評(píng)審會(huì)議包含以下內(nèi)容:
- 參會(huì)者包括Scrum團(tuán)隊(duì)和產(chǎn)品負(fù)責(zé)人邀請(qǐng)的主要利益攸關(guān)者
- 產(chǎn)品負(fù)責(zé)人說明哪些產(chǎn)品待辦列表項(xiàng)已經(jīng)完成和哪些沒有完成
- 開發(fā)團(tuán)隊(duì)討論在Sprint期間哪些工作做的好,遭遇到說明問題以及問題是如何解決的
- 開發(fā)團(tuán)隊(duì)演示完成的工作并解答關(guān)于所交付增量的問題
- 參會(huì)的所有人就下一步的工作進(jìn)行探討队橙,這樣坠陈,Sprint評(píng)審會(huì)議就能夠?yàn)榻酉聛淼腟print計(jì)劃會(huì)議提供有價(jià)值的輸入信息
- 評(píng)審市場(chǎng)或潛在的產(chǎn)品使用方式所帶來的家下來要做的最有價(jià)值的東西轉(zhuǎn)變,同時(shí)為下個(gè)預(yù)期產(chǎn)品功能或產(chǎn)品能力版本的發(fā)布評(píng)審時(shí)間表捐康、預(yù)算仇矾、潛力和市場(chǎng)
回顧會(huì)議
回顧會(huì)議是Scrum團(tuán)隊(duì)檢視自身并創(chuàng)建下一個(gè)Sprint改進(jìn)計(jì)劃的機(jī)會(huì)。
目的在于:檢視前一個(gè)Sprint中關(guān)于人解总、關(guān)系贮匕、過程和工具的情況如何;找出并加以排序做得好的和潛在需要改進(jìn)的主要方面花枫,同時(shí)制定改進(jìn)Scrum團(tuán)隊(duì)工作方式的計(jì)劃刻盐。
回顧會(huì)議幫助我們把握時(shí)機(jī)掏膏,在消極模式尚未根深蒂固時(shí),趁著記憶還很清晰敦锌,多捕獲一些認(rèn)識(shí)和見解馒疹,找到一些可改進(jìn)的事實(shí),制定行動(dòng)計(jì)劃乙墙,實(shí)現(xiàn)這些改變颖变。
三大支柱
Scrum基于經(jīng)驗(yàn)過程控制理論,或稱之為經(jīng)驗(yàn)主義听想。經(jīng)驗(yàn)主義主張知識(shí)源自實(shí)際經(jīng)驗(yàn)以及當(dāng)前已知情況下做出的決定所獲得腥刹。Scrum采納一種迭代和增量式的方法來優(yōu)化對(duì)未來的預(yù)測(cè)和控制風(fēng)險(xiǎn)。透明汉买、檢視和適應(yīng)是經(jīng)驗(yàn)過程控制的三大支柱衔峰,支撐起每一個(gè)經(jīng)驗(yàn)過程的實(shí)施。
透明
過程中的關(guān)鍵環(huán)節(jié)對(duì)于那些對(duì)產(chǎn)出負(fù)責(zé)的人必須是顯而易見的蛙粘。要擁有透明垫卤,就要為這些關(guān)鍵環(huán)節(jié)制定統(tǒng)一的標(biāo)準(zhǔn),這樣所有留意這些環(huán)節(jié)的人都會(huì)對(duì)視察到的事物有統(tǒng)一的理解
檢視
Scrum的使用者必須經(jīng)常檢視Scrum的工件和完成Sprint目標(biāo)的進(jìn)展组题,以便發(fā)現(xiàn)不必要的差異葫男。檢視不應(yīng)該過于頻繁而阻礙工作本身。當(dāng)檢視是由技能嫻熟的檢視者在工作中勤勉地執(zhí)行時(shí)崔列,效果最好
適應(yīng)
如果檢視者發(fā)現(xiàn)過程中的一個(gè)或多個(gè)方面偏離可接受范圍以外,并且將會(huì)導(dǎo)致產(chǎn)品不可接受時(shí)旺遮,就必須對(duì)過程或者過程化的內(nèi)容加以調(diào)整赵讯,調(diào)整工作必須盡快執(zhí)行如此才能最小化進(jìn)一步的偏離