一提到 XP ,很多人的第一反應(yīng)是微軟的那個(gè)操作系統(tǒng)。沒(méi)錯(cuò),XP 似乎已經(jīng)是它的代名詞了。但是,在敏捷領(lǐng)域,也有一個(gè) XP ,而且也是一樣的如雷貫耳。那就是傳說(shuō)中的 ExtremeProgramming 極限編程,它的簡(jiǎn)稱就是 XP 。
既然都帶有編程兩個(gè)字了,那么很明顯這個(gè)理論框架就是出自軟件開(kāi)發(fā)行業(yè)。之前的文章也說(shuō)過(guò)了,敏捷最初就是一幫軟件大神搞出來(lái)的,而 XP ,不僅代表著敏捷,還代表著敏捷中的極限。即使你完全不了解這個(gè) XP ,但有幾個(gè)東西你一定聽(tīng)說(shuō)過(guò),重構(gòu)、結(jié)對(duì)編程、持續(xù)集成、編碼標(biāo)準(zhǔn)。我說(shuō)出來(lái)了,那你也應(yīng)該猜到了,這些東西都是 XP 的關(guān)鍵實(shí)踐,也是 XP 大力推廣的內(nèi)容,甚至更有完全是 XP 創(chuàng)建的概念。
XP 是由 Kent Back 這位大神創(chuàng)建的一個(gè)敏捷方法框架。關(guān)于這位大神,如果你要學(xué)習(xí)敏捷,他就是繞不過(guò)去的一個(gè)人。背景問(wèn)題我們就不多說(shuō)了,直接進(jìn)入主題,XP 的核心是什么?只有八個(gè)字。
溝通、簡(jiǎn)單、反饋、勇氣
溝通不必多說(shuō),任何問(wèn)題到最后都可以歸結(jié)為溝通的問(wèn)題。特別是在敏捷中,溝通是解決各種問(wèn)題的一劑萬(wàn)能藥。而且,溝通不僅限于敏捷項(xiàng)目開(kāi)發(fā),傳統(tǒng)的 PMP 中,也有專門的一個(gè)知識(shí)領(lǐng)域就是 項(xiàng)目溝通管理 。在 XP 中,會(huì)強(qiáng)調(diào)客戶在現(xiàn)場(chǎng)、會(huì)強(qiáng)調(diào)兩個(gè)程序員用一臺(tái)電腦的結(jié)對(duì)編程、會(huì)強(qiáng)調(diào)使用隱喻來(lái)說(shuō)明需求,這些,都是為了更好地溝通。
整個(gè)敏捷體系都推崇簡(jiǎn)單的做事,做好事。而 XP 更是將這個(gè)簡(jiǎn)單發(fā)揮到了極限,我們?cè)谧鋈魏蔚捻?xiàng)目時(shí),都應(yīng)該從最簡(jiǎn)單的方向入手,千萬(wàn)不要一上來(lái)就以淘寶的架構(gòu)來(lái)設(shè)計(jì)一個(gè) PV 過(guò)不了百的小網(wǎng)站。而是應(yīng)該一步一步地,通過(guò)不斷地重構(gòu)來(lái)完善系統(tǒng)。同時(shí),采用測(cè)試驅(qū)動(dòng)開(kāi)發(fā),來(lái)保證代碼具有極高的質(zhì)量。
反饋,就是收集系統(tǒng)、客戶和團(tuán)隊(duì)的各方各面的回饋信息,同時(shí),就像上面的測(cè)試驅(qū)動(dòng)開(kāi)發(fā),其本質(zhì)也是一種代碼上的反饋。它與溝通和簡(jiǎn)單是緊密相連的。Kent Back 的原話是“編程中的樂(lè)觀主義是危險(xiǎn)的,而及時(shí)反饋則是解決它的方法?!?/p>
你有重構(gòu)核心代碼的勇氣嗎?你有提醒產(chǎn)品專家或客戶代表不要過(guò)度設(shè)計(jì)的勇氣嗎?;蛟S有的人天生就喜歡挑戰(zhàn)自我,而有的人可能就喜歡循規(guī)蹈矩。在 XP 中,我們更傾向于用一組實(shí)踐來(lái)詮釋勇氣,你只要在規(guī)則的限定下,在代碼規(guī)范下,在測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的框架內(nèi),那么,自然而然就能夠有重構(gòu)的勇氣。當(dāng)你明白了價(jià)值是項(xiàng)目和產(chǎn)品最重要的部分,也通過(guò)溝通獲得了客戶的信任,那么,你也能夠有勇氣指出產(chǎn)品設(shè)計(jì)中的問(wèn)題。
除了這四大核心之外,現(xiàn)在還有一個(gè)詞也慢慢融入到了 XP 的核心思想中,那就是 “尊重” 。尊重團(tuán)隊(duì)、尊重客戶,尊重產(chǎn)品,尊重代碼,更重要的是,尊重自己。在一個(gè)項(xiàng)目中,做到對(duì)自己負(fù)責(zé),能夠有收獲,提交的都是有質(zhì)量的內(nèi)容;對(duì)團(tuán)隊(duì)負(fù)責(zé),能夠有產(chǎn)出,信任他們的代碼;對(duì)客戶負(fù)責(zé),能夠有結(jié)果,相信產(chǎn)品的價(jià)值;反過(guò)來(lái),他們也自然會(huì)尊重你。一個(gè)好的 XP 團(tuán)隊(duì),會(huì)把尊重放在重要的位置,我們尊重的不僅是你的代碼和能力,更重要的是,我們是通過(guò)團(tuán)隊(duì)成員間的信任,來(lái)達(dá)到真正的尊重。
只要是牽涉到項(xiàng)目開(kāi)發(fā),就一定有一個(gè)生命周期的概念,PMP 是如此,XP 也是如此,后面我們要學(xué)習(xí)到的 Scrum 也會(huì)有它的生命周期。XP 的生命周期就如下圖所示。
在這個(gè)圖中,我們看到了 用戶故事 ,注意,它很重要,在敏捷中,需求都會(huì)定義為 用戶故事 ,關(guān)于它的內(nèi)容我們后面還會(huì)學(xué)到。然后就是根據(jù) 用戶故事 定義的 發(fā)布計(jì)劃 。我們會(huì)在 發(fā)布計(jì)劃 中包含 總體估算 和 隱喻 。在這里,需要記住的是敏捷中的估算都是相對(duì)估算,都是不精準(zhǔn)的。
接下來(lái),我們會(huì)根據(jù) 發(fā)布計(jì)劃 和 用戶故事 來(lái)確定每個(gè) 迭代中需要做的事情,也就是 迭代計(jì)劃 。在這個(gè)計(jì)劃中,通過(guò)客戶對(duì)功能的解釋會(huì)將 用戶故事 進(jìn)行更加深入的拆分,變成任務(wù)。之后就是通過(guò) 結(jié)對(duì)編程 來(lái)實(shí)現(xiàn)我們的產(chǎn)品。
當(dāng) 迭代 結(jié)束時(shí),或者到了 發(fā)布計(jì)劃 制定的發(fā)布結(jié)點(diǎn)時(shí),我們就需要通過(guò) 小規(guī)模發(fā)布 來(lái)實(shí)現(xiàn)產(chǎn)品的迭代、增量開(kāi)發(fā),從而達(dá)到敏捷的能力。
上述幾個(gè)步驟,就是一個(gè) XP 項(xiàng)目開(kāi)發(fā)的整個(gè)生命周期過(guò)程,完整的產(chǎn)品最后就是通過(guò)這樣不停地迭代實(shí)現(xiàn)的。在圖中,我們還看到了 架構(gòu)探針 和 探針 這兩個(gè)東西。其實(shí),它們是為了些特殊情況而使用的,比如說(shuō)采用了新的技術(shù)、或者使用了新的架構(gòu)、或者我們第一次嘗試 XP 開(kāi)發(fā)。這個(gè)時(shí)候,一個(gè)探針就像是一次測(cè)試的微型迭代。探針 是為了減少風(fēng)險(xiǎn)的,并且可能在整個(gè)項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)使用到。
本次列車還沒(méi)有到站,為什么呢?在文章中,你是不是發(fā)現(xiàn)了一大堆新名詞??赡苡械哪愣耍热缯f(shuō) 溝通、簡(jiǎn)單、反饋、勇氣 在 XP 中的意義;有的你可能似懂非懂,比如 重構(gòu)、小規(guī)模發(fā)布、結(jié)對(duì)編程;另外有些則感覺(jué)非常朦朧,就像 隱喻、簡(jiǎn)單設(shè)計(jì) 都是什么鬼。別急,關(guān)于 XP 的內(nèi)容一篇文章可講不完,下篇文章我們就將繼續(xù)學(xué)習(xí)關(guān)于 XP 的一些關(guān)鍵實(shí)踐,這些關(guān)鍵詞也會(huì)一一解答。
參考文檔:
《某培訓(xùn)機(jī)構(gòu)教材》
《用戶故事與敏捷方法》
《高效通過(guò)PMI-ACP考試(第2版)》
《敏捷項(xiàng)目管理與PMI-ACP應(yīng)試指南》
聯(lián)系客服