屏障條件和敏捷開發(fā)
- 編輯:admin -我們在實(shí)踐中發(fā)現(xiàn),我們的許多客戶都有一種誤解,以為在敏捷開發(fā)流程中加人或定義標(biāo)準(zhǔn)、約束或流程是有悖于敏捷的理念。流程違反敏捷開發(fā)方法這一一概念的問題在于,任何敏捷方法本身就是個(gè)流程。我們常常發(fā)現(xiàn),客戶為了逃避流程或標(biāo)準(zhǔn),常常會脫離上下文引用敏捷宣言。
我們在實(shí)踐中發(fā)現(xiàn),我們的許多客戶都有一種誤解,以為在敏捷開發(fā)流程中加人或定義標(biāo)準(zhǔn)、約束或流程是有悖于敏捷的理念。流程違反敏捷開發(fā)方法這一一概念的問題在于,任何敏捷方法本身就是個(gè)流程。我們常常發(fā)現(xiàn),客戶為了逃避流程或標(biāo)準(zhǔn),常常會脫離上下文引用敏捷宣言。
讓我們來回顧一下敏捷宣言中有關(guān)敏捷方法的價(jià)值觀:
●個(gè)體和交互重于流程和工具
●可用的軟件重于完備的文檔
●客戶協(xié)作重于合同談判
●響應(yīng)變化重于遵循計(jì)劃
有些組織常常會忽略“個(gè)體和交互重于過程和工具”的上下文,沒有讀到這兒點(diǎn)之后的句子,即“簡而言之,雖然這些對比中右邊的項(xiàng)目也有價(jià)值,但左邊的項(xiàng)目價(jià)值更大”。。有了這句話,那么顯然流程是有價(jià)值的,只是在我們需要作出選擇時(shí),人員和交互具有的價(jià)值更大。我們完全同意這種方法,并且傾向于在快捷開發(fā)中嵌人流程作為測試的屏障條件,以得到合理的質(zhì)量、可擴(kuò)展性和可用性水平,或者借此幫助確保長期以來工程師得到了正確的評估和培訓(xùn)?,F(xiàn)在讓我們來分析一下某些關(guān)鍵的屏障條件是如何幫助增強(qiáng)敏捷方法的。
我們從對比可用的軟件與完備的文檔的價(jià)值人手。從ARB到代碼審查,到性能測試和生產(chǎn)環(huán)境評估,我們的每個(gè)建議都與這個(gè)原則沒有沖突。在敏捷方法中,ARB和聯(lián)合架構(gòu)設(shè)計(jì)(JAD)這樣的屏障條件可用于確保開發(fā)中的產(chǎn)品能夠適當(dāng)?shù)財(cái)U(kuò)展??梢杂?組人通過開會執(zhí)行ARB和JAD,然后進(jìn)行少量的文檔記錄,這樣就符合敏捷方法了。
引人屏障條件和標(biāo)準(zhǔn)來幫助確保系統(tǒng)和產(chǎn)品能夠在生產(chǎn)環(huán)境中正常運(yùn)行,實(shí)際上是支持了可用軟件的開發(fā)。對于我們提出的所有活動(dòng),雖然它們的結(jié)果都會被記錄在某個(gè)地方,但我們并沒有把完備的文檔作為它們的必要組成部分。要記住,我們是想不斷改善我們的流程,所以才記錄性能結(jié)果的,例如記錄性能結(jié)果可以幫助我們確定在開發(fā)過程中我們多久會犯一次錯(cuò)誤,導(dǎo)致QA的性能測試失敗或者生產(chǎn)環(huán)境出現(xiàn)擴(kuò)展問題。
我們建議的流程既不會妨礙客戶協(xié)作,也沒有支持說合同談判重于客戶協(xié)作。事實(shí)上,由于加入了擴(kuò)展屏障條件,說明你關(guān)注客戶的需求,因而它們營造了能夠更好與最終客戶協(xié)作的工作環(huán)境。你的客戶可能沒有能力執(zhí)行判斷產(chǎn)品是否能夠擴(kuò)展到滿足需求所需的設(shè)計(jì)評估、審查、測試或衡量,但他們的確預(yù)期你交付的產(chǎn)品或服務(wù)不僅能夠滿足他們的業(yè)務(wù)目標(biāo),還要滿足他們的擴(kuò)展需求。因此,與客戶協(xié)作進(jìn)行測試和衡量,有助于確保你的產(chǎn)品滿足客戶需求,而把這些測試和衡量加人開發(fā)流程,是滿足客戶需求以及創(chuàng)造股東價(jià)值的好方法。
最后,加人我們建議的屏障條件,有助于我們發(fā)現(xiàn)發(fā)生了變更,從而有助于我們對變更進(jìn)行響應(yīng)。如果應(yīng)用或服務(wù)沒有通過屏障條件,這就是存在問題的早期警報(bào),我們需要立即解決這些問題。如果在ARB會議上就發(fā)現(xiàn)一個(gè)組件是不能水平擴(kuò)展的(根據(jù)我們建議的架構(gòu)設(shè)計(jì)原則,要橫向擴(kuò)展而不是縱向擴(kuò)展),這就說明存在一個(gè)潛在的問題。雖然我們可能仍然會決定發(fā)布這個(gè)功能、產(chǎn)品或服務(wù),但我們最好能夠確保將來的敏捷開發(fā)周期能夠修復(fù)我們發(fā)現(xiàn)的問題。然而,如果擴(kuò)展需求非常強(qiáng)烈,不能橫向擴(kuò)展就會導(dǎo)致我們失敗,難道我們不應(yīng)該立即對這個(gè)問題作出響應(yīng),把它修復(fù)嗎?而如果沒有這樣的流程和一系列檢查,我們又怎么能確保我們滿足了客戶需求呢?
希望我們已經(jīng)說服了你,在敏捷開發(fā)生命周期中加人評判條件,用它們來評估你是否達(dá)到了擴(kuò)展目標(biāo),這是一種好方法。如果我們還沒有說服你,你是否敢聲明在開發(fā)生命周期中,絕對不加人任何流程以確保你的產(chǎn)品或服務(wù)可以擴(kuò)展嗎? 那么你認(rèn)為自己這份工作還能做多久? 試想一下你對他們說:“我們不會實(shí)施任何方式和形式的屏障條件或評判標(biāo)準(zhǔn)來確保我們不會發(fā)布具有擴(kuò)展問題的產(chǎn)品!”
牛仔編碼
對于沒有任何流程、計(jì)劃或衡量方法來確保結(jié)果滿足了業(yè)務(wù)需求的開發(fā)方法,我們稱之為牛仔編碼。像牛仔編碼這樣的環(huán)境完全缺少流程,這正是擴(kuò)展方 我們常常會發(fā)現(xiàn)有些團(tuán)隊(duì)聲稱牛仔編碼是“敏捷的”。 坦白地說,事實(shí)并非如此。敏捷方 案取得成功的重大障礙。
法是使開發(fā)生命周期逐漸適應(yīng)你的需要,而其他模型則趨于更具預(yù)測性。而像牛仔編碼這樣的 模型,缺少流程,既沒有適應(yīng)性,也沒預(yù)測性。敏捷方法并不反對衡量和管理。它們是適用于迅速發(fā)布較小的組件和功能子集的方法,這些方法是通過管理較小的、容易管理的組件,而不是反復(fù)嘗試預(yù)測和控制非常復(fù)雜的大型項(xiàng)目來幫助控制混亂局面的。
不要讓你和你的微信網(wǎng)站制作團(tuán)隊(duì)陷入敏捷方法不應(yīng)該衡量或管理的誤區(qū)??梢杂盟俣冗@樣的指標(biāo)來提高工程師的評估能力,而不要采用過度打擊的方法,這是敏捷方法的基本原則之一。如果你缺少衡量方法,那么注定永遠(yuǎn)無法提高,而如果缺少管理,那么在通往目標(biāo)和完成使命的道路上,你注定會迷失方向。在設(shè)計(jì)高可擴(kuò)展的解決方案時(shí),如果你是牛仔,那么一定會被擴(kuò)展這匹野馬甩下馬背。
