理解敏捷的價值觀和原則

敏捷宣言

敏捷宣言也稱敏捷軟件開發宣言,軟件開發業的先輩們對以下四則價值觀達成了一致:

  • 個體和互動高於流程和工具
  • 可工作的軟件高於詳盡的文檔
  • 客戶協作高於合同談判
  • 響應變化高於遵循計劃

註:下面是這份宣言的完整內容:

我們一直在實踐中探尋更好的軟件開發方法,身體力行的同時也幫助他人。
由此我們建立了如下價值觀。
個體和互動 高於 流程和工具
可工作的軟件 高於 詳盡的文檔
客戶協作 高於 合同談判
響應變化 高於 遵循計劃
也就是說,雖然右項有其價值,但是我們更重視左項的價值。

個體和互動高於流程和工具

盲目的遵循流程會讓人走入誤區,好的工具有時會讓人更快速的犯錯誤。軟件世界中存在很多優秀的實踐經驗,但並不是所有的這些實踐都適合項目的當前情況。這個原則團隊中的所有成員應該都要心裏有數。他們需要理解團隊在一起的工作方式,明白每個人的工作會對其他人造成怎樣的影響。當我們打算在團隊中實施一項流程或工具時,即使在邏輯上和理性上看上去很合理,你還需要做的是(推銷流程和技術)讓大家明白這麼做的理由,知道團隊到底在為此做什麼。如果不能讓團隊很好的理解你的目的或初衷,那麼在他們看來你只是在發號施令。

可工作的軟件高於詳盡的文檔

在一個軟件項目中,有太多的事情可以文檔化。很多團隊都會決定採用詳盡的文檔,事無巨細地全部記下來。也不考慮以後會不會有人來閱讀。敏捷團隊更注重可工作的軟件,即可以給公司帶來價值的軟件(公司可出售或運營的軟件,幫助員工高效工作的軟件等等)。

所謂的價值:項目能交付的價值能節省的成本 > 開發軟件本身的成本

雖然如此,文檔還是要寫的很多種類的文檔還是很有用的。好文檔能幫助團隊理解問題,與用戶溝通,以及避免將錯誤的需求開發進軟件中。這種文檔消耗的成本與後期文檔給團隊節省的時間和精力相比是划算的。另一方面,關注可工作的軟件可以確保團隊沒有偏離正軌,如果文檔能清晰地表明可工作軟件的方向,那麼這種文檔對項目就是有貢獻的。團隊通常可以採用一些將文檔嵌入軟件內部的實踐,比如TDD(測試驅動開發),關於TDD大家可以查看這裡

客戶協作高於合同談判

當公司的組織架構是按照職能來劃分的時候,即程序員,測試人員,產品經理以及運營人員等產品相關的其他人員在不同的部門的時候。那麼他們的工作就像是互相遵照合約合作,不同部門團隊之間都會把服務級別協議放在檯面上討論。這樣做也許會降低風險,減少與老闆上級之間的矛盾,因為你可以憑藉一紙之文來指責其他團隊影響了軟件的交付,從而助長所謂的」甩鍋文化「。當公司的目標是給公司外的用戶交付軟件時這種方式只會適得其反。

敏捷團隊落實這項價值觀的一項實踐是在團隊中安置一名產品所有者,他可能不會參與具體的開發,但是他會參加會議,貢獻想法,最重要的是所有人都把最終的產品當作是自己的東西。

響應變化高於遵循計劃

項目管理中通常流行」怎麼計劃怎麼來「,遺憾的是如果計劃有誤,那麼構建出來的產品就是錯誤的產品。團隊需要不斷的發現變化,適應變化並且最後能快速的響應變化。制定計劃的人抗拒變化是很常見的事情,因為改變計劃需要消耗精力。

」任務板「是一項良好的實踐,可以幫助團隊做出響應變化的正確決策。

敏捷團隊通常會使用任務板來展示任務並跟蹤進度。他們會把任務或者用戶故事寫在索引卡片上面,然後根據項目的進展移動這些卡片。很多團隊還會在任務板上畫圖跟蹤進度。這樣做可以讓大家跟上進展,讓計劃不斷地實時地更新。

我們要意識到計劃是會變的,交付軟件產品比嚴格遵守計劃更重要。

沒有具體的實踐,原則是貧瘠的;但如果缺乏原則,實踐是沒有生命,沒有個性,沒有勇氣的。

敏捷軟件開發的12條原則

交付項目

1.最優先要做的是儘早、持續地交付有價值的軟件,讓客戶滿意。

2.欣然面對需求的變化,即使是在開發後期。敏捷過程利用變化為客戶維持競爭優勢。

3.頻繁交付可工作的軟件,從數周到數月,交付周期越短越好。

溝通與合作

4.在團隊內外,面對面交談是最有效、也是最高效的溝通方式。

5.在整個項目過程中,業務人員和開發人員必須每天都在一起工作。

6.以受激勵的個體為核心構建項目,為他們提供環境和支持,相信他們可以把工作做好。

項目實施-推進項目

7.可工作的軟件是衡量進度的首要標準。

8.敏捷過程倡導可持續開發。贊助商、開發人員和用戶要能夠共同、長期維持其步調,穩定向前。

9.堅持不懈地追求技術卓越和設計優越,以此增強敏捷的能力。

項目和團隊的持續改進

10.簡單是盡最大可能減少不必要工作的藝術,是敏捷的根本。

11.最好的架構、需求和設計來自自組織的團隊。

12.團隊定期反思如何提升效率,並依此調整。


總結

本文主要講述了敏捷開發中的價值觀和原則。正如文章那句話(沒有具體的實踐,原則是貧瘠的;但如果缺乏原則,實踐是沒有生命,沒有個性,沒有勇氣的。)所描述的。圍繞着敏捷開發的價值觀和原則,我們發展出了很多有效的實踐,Scrum、XP極限編程、看板方法、精益思維等等。有一個很大的誤區是時常在行業內有許多人認為某一項實踐就代表着敏捷開發。但是正如本文所描述的敏捷開發提供了他的價值觀和原則,敏捷開發並沒有一個強制的配套的實踐,甚至某些優秀的團隊並沒有遵循已有的敏捷相關實踐,只是在項目進行的過程中遵循的敏捷的價值觀和原則,僅僅如此,他們所做的也被稱的上敏捷開發。即敏捷的獨特之處在於從價值觀和原則出發。


關注筆者公眾號,推送各類原創/優質技術文章 ⬇️

WechatIMG6