20歲的敏捷:失敗的反叛 - simplethread
今年敏捷宣言剛滿20年,有兩個事實似乎不言自明的:
- 敏捷,作為一個標籤,贏了;沒有人想被稱為非敏捷。
- 敏捷在實踐中遠遠低於其創始人的革命性思想。
我們是如何走到這一步的?每個人都說他們在做敏捷,但幾乎沒有人是敏捷的。
宣言從何而來
2001 年 2 月,一個由 17 位專家軟體從業者組成的小組在猶他州瓦薩奇山脈雪鳥滑雪勝地的小屋會面。經過幾天的討論和辯論,他們共同撰寫了“敏捷軟體開發宣言”。
我不知道每個簽名者的個人歷史,但在我認識的那些人中,他們要麼仍在積極編寫程式碼,要麼有一段很長的近期程式設計歷史。
首先要強調的是,這些都是從業者。他們不是專案經理、CTO 或 VP Engs。他們是開發人員、程式設計師、科學家和工程師。他們仍在編寫程式碼*並與利益相關者合作解決問題。這個很重要。
另一點是敏捷宣言不是憑空產生的。這些人中的許多人已經有了他們創造和/或正在傳教的方法。我的時間可能有點偏離,但我認為所有這些方法論都預先存在“資本敏捷”:極限程式設計、Scrum、DSDM、自適應軟體開發、Crystal、功能驅動開發、實用程式設計。我知道 Schwaber 和 Sutherland 在 1995 年公開談論過 Scrum,而貝克和傑弗里斯在 1996 年開始談論極限程式設計 (XP)。
這個小組中的每個人都有豐富的軟體編寫經驗,他們都在尋找替代文件驅動的、重量級軟體開發流程的方法。宣言的核心是四項價值陳述:
- 個人和互動 勝過流程和工具
- 工作軟體 勝過綜合文件
- 客戶協作 勝過合同談判
- 響應變化 勝過遵循計劃
新希望
從我們 2021 年的角度來看,很容易將如此多的現代軟體開發實踐視為理所當然,但在 2001 年,這些想法非常激進:在收集所有需求並估算每項功能之前,您打算開始構建軟體是什麼意思?這太瘋狂了!
被遺忘的重要部分是,敏捷一開始就公開、激進地反對管理。例如,肯·施瓦伯 (Ken Schwaber) 直言不諱地表達了他要解僱所有專案經理的目標——不僅僅是讓人們離開他的專案,還要從我們的行業中根除這個職業。
我們發現專案經理的角色在複雜的創造性工作中會適得其反。以專案計劃為代表的專案經理的思維將專案中其他人的創造力和智慧限制在計劃中,而不是調動每個人的智慧來最好地解決問題。
Scrum Masters 幾乎沒有權威,沒有投票權。他們是僕人式領導者,幫助保護和疏通團隊,但不管理團隊。XP 是類似的。如果我沒記錯的話,XP 最初有跟蹤器和教練,它們具有類似的促進、支援氛圍。
Alistair Cockburn 是水晶方法論和六邊形架構 宣言簽署人和創造者, 最近對此提出了一個奇妙的、有見地的想法:
Scrum 在其反對的敵對領域反而達成了一筆不菲的交易:
- 在每次衝刺之後,管理層每年有 12 次以他們想要的任何方式改變方向。
- 團隊獲得了整整一個月的安靜時間,沒有中斷或方向的變化來進行繁重的思考和工作。
- 團隊必須宣佈他們在本月可以做什麼和不能做什麼,而管理層不會干預他們的競標。
敏捷成功的原因
在某些方面,敏捷是一場草根勞工運動。它當然從實地的從業者開始,然後被推到管理層。這是如何成功的?
部分原因是開發人員的數量和業務價值不斷增長,影響力越來越大。但在我看來,最大的因素是傳統的瀑布方法根本行不通。隨著軟體變得越來越複雜,業務步伐加快,使用者的複雜程度不斷提高,試圖預先計劃一切變得不可能。擁抱迭代開發是合乎邏輯的,如果對於習慣於計劃一切的經理來說有點可怕。
存在問題
不幸的是,像許多革命一樣,敏捷的歷史並沒有像創始人所設想的那樣展開。
- 事實證明,優先考慮個人和互動是一個很難推銷的概念。反而有助於某些公司更方便推銷流程和工具。
- 事實證明,與不切實際的計劃和大量文件相比,可執行的軟體更難生產。
- 事實證明,與客戶合作需要信任和脆弱性,在商業環境中並不總是存在。
- 事實證明,高管們想要掌控一切,但仍然需要為他們的業務制定長期計劃,這往往比對變化做出反應更重要。
事實證明,敏捷做得不好常常讓人感覺很混亂。
這並不意味著這四個值是錯誤的。這只是意味著整個事情需要一些努力才能正確,需要一些勇氣來接受軟體有時本質上是混亂和混亂的。你必須理解並相信,如果你不斷學習、適應、改進和運輸,你最終會到達一個更好的地方,一個 比瀑布更誠實、更現實、更高效的地方。
工具供應商、流程顧問和專家做出了永遠無法兌現的承諾,已經超出了它的範圍。這就是我們最終採用 SAFe 和 Scaled Scrum 以及所有其他企業敏捷風格的方式。這些框架不是出於惡意而建立的,它們甚至可能在正確的上下文中具有一定的價值。但我不會稱它們為敏捷。試圖擴充套件一種專注於個人和互動的方法論將不可避免地導致問題——並侵蝕該方法論的原始價值。
開發人員應該放棄敏捷
當“敏捷”理念應用不當時,往往會導致對開發人員的更多干擾、更少的工作時間、更高的壓力以及“更快”的要求。這對開發人員不利,最終對企業也不利,因為“敏捷”做得不好,往往會導致更多的缺陷和更慢的進展。通常,優秀的開發人員會離開這樣的組織,導致企業效率低於安裝“敏捷”之前。
敏捷已死(敏捷萬歲)
“敏捷”這個詞已經被顛覆到了實際上毫無意義的地步,敏捷社群所傳遞的似乎主要是顧問和供應商兜售服務和產品的舞臺……一旦宣言流行起來,敏捷這個詞就成了吸引任何有支付鈔票的磁鐵。它變成了一個營銷術語。
所以我認為是時候讓“敏捷”這個詞退休了。
現在談論敏捷並不時髦或酷。敏捷是無聊的。每個人都做敏捷,對吧? 現在是反思過去 20 年並問自己幾個問題的最佳時機:
- 什麼做對了?
- 什麼地方出了錯?
- 下次我們想做什麼不同的事情?
相關文章
- 盤點敏捷專案失敗的6個主要原因敏捷
- Java的快速失敗和安全失敗Java
- 敏捷專案管理:問題、挑戰以及如何避免失敗敏捷專案管理
- 以失敗為機制:奇異人生中的真實失敗與虛構性失敗
- 建站失敗的原因分析
- npm install失敗的可能NPM
- 清理重建失敗的索引索引
- 一場“失敗”的突破:淺談《最後的生還者2》“失敗”的根源
- MongoDB是不是正確的選擇? - simplethreadMongoDBthread
- 30歲,沒有月入過萬算失敗嗎?用視覺化分析30歲的人收入真相視覺化
- 如何清除建立失敗的索引索引
- 快速失敗機制&失敗安全機制
- git push程式碼失敗,鑑權失敗Git
- 《Celeste》:3675 次失敗的結晶
- Composer 失敗
- 最失敗的 JavaScript 面試問題JavaScript面試
- Token驗證失敗的解決方法
- 失敗的十年,回顧反思
- 亞馬遜Alexa是如何失敗的?亞馬遜
- 記一次失敗的StackOverflow回答
- Pyinstaller打包pikepdf失敗的問題排查
- 使用HTTP代理失敗的常見原因HTTP
- 快速失敗是讓失敗立即快速發生! - pathelland
- Win7 Nginx啟動失敗 cmd命令失敗Win7Nginx
- For the king:出色的冒險,失敗的角色扮演
- rman備份的時候讀取v$session_longops失敗導致備份失敗SessionGo
- npm install 失敗NPM
- npm install失敗NPM
- 如何突破失敗
- git merge失敗Git
- dota2啟動失敗 初始化vulkan失敗
- 35歲遭遇父親肺癌、失業、失戀. . . . . .
- win10升級老失敗的解決方法_win10更新失敗怎麼辦Win10
- AndroidKiller反編譯失敗的處理方法Android編譯
- puppeteer 安裝失敗的解決辦法
- springboot衝突導致的發版失敗Spring Boot
- 關於npm install失敗的解決方法NPM
- 那些騰訊投資失敗的專案