可確定的工作與高度不可確定的工作
項目工作包括可確定的工作與高度不可確定的工作。
可確定的工作項目管理具有明確的流程,它們在以往類似的項目中被證明是行之有效的。在完成設(shè)計后制造汽車、電器或建設(shè)住宅,這些都是可確定的工作的例子,其所涉及的生產(chǎn)領(lǐng)域和過程通常很好理解,并且執(zhí)行的不確定性和風(fēng)險通常較低。
新的設(shè)計、解決問題和之前未做過的工作都是探索性的。它要求主題專家攜手合作,解決問題,并創(chuàng)建解決方案。遭遇高度不確定的工作是人員包括軟件系統(tǒng)工程師、產(chǎn)品設(shè)計師、醫(yī)生、教師、律師和許多解決問題的工程師等。
高度不確定的項目變化速度快,復(fù)雜性和風(fēng)險也高。這些特點可能會給傳統(tǒng)預(yù)測法帶來問題,傳統(tǒng)預(yù)測法旨在預(yù)先確定大部分需求,并通過變更請求過程控制變更。而敏捷方法的出現(xiàn)是為了在短時間內(nèi)探討可行性,根據(jù)評估和反饋快速調(diào)整。
《敏捷宣言》及思維模式
2001年,軟件業(yè)思想領(lǐng)袖共同發(fā)表《敏捷宣言》,正式宣告敏捷開發(fā)運動的開始。
我們正在通過親自開發(fā)和幫助他人開發(fā),發(fā)現(xiàn)開發(fā)軟件的更好方法。
通過這項工作,我們開始更重視:
個體以及互動而不是過程和工具
可用軟件而不是完整的文檔
客戶合作而不是合同談判
應(yīng)對變更而不是遵循計劃
也就是說,右欄中的項目固然有價值,但我們更重視左欄中的項目。
源自上面這些價值觀的十二大原則如下:
- 我們的最高目標(biāo)是,通過盡早持續(xù)交付有價值的軟件來滿足客戶的需求。
- 歡迎對需求提出變更,即使在項目開發(fā)后期也不例外。敏捷過程要善于利用需求變更,幫助客戶獲得競爭優(yōu)勢。
- 要經(jīng)常交付可用的軟件,周期從幾周到幾個月不等,且越短越好。
- 項目實施過程中,業(yè)務(wù)人員與開發(fā)人員必須始終通力協(xié)作。
- 要善于激勵項目人員,給予他們所需的環(huán)境和支持,并相信他們能夠完成任務(wù)。
- 無論是對開發(fā)團隊還是團隊內(nèi)部,信息傳達最有效的方法都是面對面的交談。
- 可用的軟件是衡量進度的首要衡量標(biāo)準(zhǔn)。
- 敏捷過程提倡可持續(xù)的開發(fā)。項目發(fā)起人、開發(fā)人員和用戶應(yīng)該都能夠始終保持步調(diào)穩(wěn)定。
- 對技術(shù)的精益求精以及對設(shè)計的不斷完善將提高敏捷性。
- 簡潔,即盡最大可能減少不必要的工作,這是一門藝術(shù)。
- 最佳的架構(gòu)、需求和設(shè)計將出自于自組織團隊。
- 團隊要定期反省怎樣做才能更有效,并相應(yīng)地調(diào)整團隊的行為。
盡管這些原則源自軟件行業(yè),但已經(jīng)擴展到許多其他行業(yè)。
這種思維模式、價值觀和原則定義了敏捷方法的組成部分。今天所使用的各種敏捷方法都植根于敏捷思維模式、價值觀和原則。它們之間的關(guān)系如下圖:

敏捷方法是一個囊括了各種框架和方法的涵蓋性術(shù)語。它指的是符合《敏捷宣言》價值觀和原則的任何方法、技術(shù)、框架、手段或?qū)嵺`。下圖還將敏捷方法和看板方法視為精益方法的子集。這樣做的原因是,它們都是精益思想的具體實例,都反映了諸如以下概念: 關(guān)注價值,小批量和消除浪費。

敏捷是一種方法、手段、實踐、技術(shù)還是框架?
根據(jù)具體情況,上述詞語均適用。
一般而言,可以通過兩種策略踐行敏捷價值觀和原則。
- 采用正規(guī)的敏捷方法,它們?yōu)樘匾庠O(shè)計,經(jīng)證明可達成期望的成果。那么,在變更和裁剪之前,就需要花時間學(xué)習(xí)和理解敏捷方法。不成熟和隨意的裁剪會讓敏捷方法的效果大打折扣,從而限制了收益。
- 以一種適合項目背景的方式對項目實踐進行變更,以便在核心價值觀或原則方面取得進展。使用時間盒創(chuàng)建功能,或者使用特定技術(shù)迭代優(yōu)化功能。在適用于特定項目背景下,考慮將一個大項目劃分為幾部分發(fā)布。實現(xiàn)有項目成功的變更,這些變更不必是組織的正式實踐的組成部分。最終目標(biāo)不是為了敏捷,而是為了向客戶持續(xù)交付價值流,并達成更好的商業(yè)成果。
精益與看板方法
看待精益、敏捷與看板方法三者之間關(guān)系的一種思路是,將敏捷和看板方法視為精益思想的衍生物。換言之,精益思想是一個超集,與敏捷和看板方法擁有共性。
這種共性非常相似,重點在于交付價值、尊重人、減少浪費、透明化、適用變更以及持續(xù)改善等方面。項目團隊有時會發(fā)現(xiàn)將各種方法結(jié)合起來使用更為有用,只要是對組織或團隊有效的方法,無論來源如何,都應(yīng)該采納。無論使用什么方法,目標(biāo)都是為了實現(xiàn)最佳結(jié)果。
不確定性、風(fēng)險和生命周期選擇
有些項目在項目需求,以及如何使用現(xiàn)有知識和技術(shù)滿足這些需求方面,具有很大的不確定性。這些不確定因素可能導(dǎo)致大量變更和項目復(fù)雜性的提高。如下圖:

隨著項目不確定性的增加,返工的風(fēng)險和使用不同方法的需求也會增加。為了減輕這些風(fēng)險的影響,團隊選擇的生命周期要能夠通過較少的工作增量解決項目的大量不確定性問題。
團隊可以利用較少的工作量驗證自身的工作,并且可以對接下來的工作做出相應(yīng)的變更。與靜態(tài)書面規(guī)范相比,當(dāng)團隊交付小的增量時,他們能夠更快更準(zhǔn)確地理解真正的客戶需求。
團隊可以用明確穩(wěn)定的管理要求規(guī)劃并管理項目,輕松解決各種技術(shù)挑戰(zhàn)。但是,隨著項目不確定性的增加、變更、做無用功和返工的可能性也會隨之增加,而這不僅代價高昂,而且耗費時間。
有些團隊讓項目生命周期發(fā)生演變,以便使用迭代和增量方法。許多團隊發(fā)現(xiàn),在探討迭代需求、更頻繁地交付增量時,團隊會是錯容易變更。由于團隊獲得反饋,這些迭代和增量方法減少了浪費和返工。這些方法應(yīng)用了:
- 非常短的反饋循環(huán);
- 頻繁調(diào)整過程;
- 重新進行優(yōu)先級排序;
- 定期更新計劃;
- 頻繁交付;
對于涉及新的工具、技術(shù)、材料或應(yīng)用領(lǐng)域的項目、這些迭代、增量和敏捷方法非常有效。它們也適用于具有以下特點的項目:
- 需要研究和開發(fā);
- 變更速度極快;
- 具有不明確或未知的需求、不確定性或風(fēng)險;
- 最終目標(biāo)難以描述。
通過構(gòu)建一個小的增量,然后對其進行測試和評估,團隊可以在短時間內(nèi)以低成本 探索不確定性,降低風(fēng)險,最大程度地實現(xiàn)商業(yè)價值的交付。
不過,迭代和增量管理方法也有其應(yīng)用局限性。當(dāng)技術(shù)和需求的不確定性都很高時,項目就會極端復(fù)雜,陷入無序狀態(tài)。為了使項目盡可能可靠,需要遏制其中一個不確定性變量。