Laurent Bossavit 敏捷十年之路

2021-09-08 15:45:29 字數 2449 閱讀 1699

為什麼對「敏捷十週年紀念」大做文章?只因我們喜歡整數?還是有更深遠的意義?

計算機還是個年輕的領域,因此十年對於任何存在的事情來說都是相當長的時間。十年,對於我們的業務來說,只有極少數東西才有「歷史」。

軟體從業人員對歷史有多關注呢?遠遠不夠。我僅從業二十餘年,可能不足取信。

「在計算機領域工作了超過半個世紀之後,有一件事讓我很擔憂,遠超其它事情:那就是缺乏歷史感。」jerry weinberg在一篇文章[1] 的開篇寫道,weinberg在ibm(成立於乙個世紀以前)工作時,為mercury專案(超過15年)進行作業系統開發。

歷史很重要,如果不被曲解的話。

作為曲解的乙個例子,想想「創造神話」,我們建立敏捷的初衷,是為了推翻笨重、腐壞的瀑布方法。故事還在繼續,瀑布方法在人們悲劇性的錯誤理解了 winston royce在2023年發表的**後而廣泛被接受。**的第一頁包含了如今知名的描述軟體專案模型的圖例,這個模型將軟體專案分解為一系列順序的階段。但 這只是一組逐漸複雜的圖例中的第一幅,這系列圖例逐步揭示了royce真正想表述的;但讀者——那些忙碌的人——沒有翻過第一頁,且忽略了第二頁上 royce的警告:「我相信這個概念,但實施起來充滿風險並容易招致失敗。」

這個(很誘人的)故事的問題在於,royce沒有開創軟體開發的順序階段模型。如果仔細的閱讀歷史文獻,如2023年nato會議的記錄[2],在那次會議上建立了軟體工程的原則,會發現大量證據表明這個模型早已流行。

準確的了解歷史,並正確的懷疑引人矚目的神話,是構成真正前進的基石。

如今,即便是敏捷社群也很少關注記錄各種構成其「知識體系」的想法的歷史,我對此時常感到沮喪。

例如,那些對敏捷了解很少的人知道「敏捷已經十年了」,這本身就是一種曲解。敏捷的根基其實遠早於2023年2月在snowbird的那次會議。scrum和極限程式設計,在那時已經積澱了十年。

最危險是關於概念的曲解,不幸的是,如今普遍認為,敏捷包含一系列互相競爭的流程「流派」:scrum、極限程式設計、精益還有看板(kanban)。為了推行這個或那個流派,我們年輕的歷史將會充斥有趣的細節。

比如,scrum標準的講解中讓學員或讀者相信「sprint回顧」過去是、現在是、未來也是scrum的一部分。實際上,回顧是最近才加入 scrum的,回顧由極限程式設計引入,因一小部分《專案回顧》一書的熱情實踐者才流行開來,該書由norm kerth寫於2023年。回顧作為敏捷實踐的「常態」只可追溯到2023年。

重建敏捷的準確歷史很困難,這是由敏捷運動自下而上的本性決定的:它的參與者傾向忽視教條和集權。他們接納新想法只因為他們認為這些想法有趣並有效;他們在自己的專案中試驗這些想法,保留有效的並放棄無效的。他們通常不關心這些方法的優先順序和**。

在2023年,敏捷不再等同於那些「流派」,比如scrum、極限程式設計、精益軟體開發或那些聲稱是敏捷先鋒的方法。(對我來說,這是2023年會議的價值,回過頭來看很清楚:它標誌著,不是敏捷運動的開始,而是這些流派衰落的開端。)

然而,現在仍很難確切知道敏捷2011意味著什麼。整十年誘使我們編造故事,製造某種轉折點,如「敏捷已到來」,為某些「到來的」價值。

我視其為黑暗中的呼嘯。

準確理解歷史的價值在於,我們能估計實際能完成了多少,及剩下多少工作要做。

多少:敏捷運動成功的推翻了很多過去的「正統觀念」。不僅僅歸因於敏捷導致瀑布模型的消亡,因為自2023年代boehm的spiral模型提出以 來,瀑布模型已經開始走下坡路。我認為更重要的在於讓「開發人員測試」復興——70年代,我相信很大原因在於glenford myer關於軟體測試的書,「開發人員絕不能測試自己的**」這一見解得以確立,成為公認的智慧型。測試驅動開發的實踐,最初在極限程式設計中形成,但適用於絕 大多數敏捷專案,顯示出如果過度泛化將適得其反。

與之類似,敏捷為很多存在很久的問題給出新的見解,例如軟體設計、專案計畫或程式設計師的管理。本文無法深入討論這些新見解,但我想指出敏捷和其它軟體工程或專案管理方法相比有著不同的原則,既不能減少也不能照單全收。當這些原則最終完整的成長後,會發揮出巨大的潛力。

然而我們必須承認我們實際完成了很少。正如weinberg在他文章中的評價,如今多數團隊聲稱「做敏捷」,其實只是三心二意的執行一些縮水的、理解有限的敏捷實踐的子集。

抱怨「不稱職的敏捷」、「scrum持保留意見」很容易,並容易導致責備受害者——這就像責備學生無法理解那些幾乎沒講解過的東西,而不是責備講師沒盡到責任一樣。

到目前敏捷運動仍然還是乙個運動,乙個社群。我們正在努力,我認為在組織會議、顛覆會議(unconference)、工坊(workshop)、 提出新點子和交換每個人關於軟體的想法方面我們做得很棒。但很多方面還不那麼好,比如踏實工作、鞏固共識、樂於幫助「新手」、也沒有在改變現如今全球大學 生軟體工程教學方面取得哪怕一點兒進展。

我對敏捷社群日益驚人的革新能力充滿希望。特別是,我認為需要新一代敏捷機構——不是替代敏捷聯盟、scrum聯盟和很多小規模但重要的小組,而是 與之共同協作,投入到諸如組織會議、顛覆會議或程式設計道場(coding dojo)之類的工作中。例如,這樣的機構可以開始著手解決如何與研究和教育社群更有效合作的挑戰。

是的,十是乙個好看的整數,但走過十年的敏捷才剛剛開始,尚需努力——通向下一十年。

《十年》 陳奕迅

分手,人生有幾多個十年?會有多少熟悉的陌生的人出現在你的生命裡?十年歌手 陳奕迅 如果那兩個字沒有顫抖 我不會發現 我難受 怎麼說出口 也不過是分手 如果對於明天沒有要求 牽牽手就像旅遊 成千上萬個門口 總有乙個人要先走 懷抱既然不能逗留 何不在離開的時候 一邊享受 一邊淚流 十年之前 我不認識你 ...

十年前 十年後

父母 十年前我們是父母的孩子 十年後我們是孩子的父母 十年前我不知道家的溫馨 十年後我才體會家的溫暖 十年前我渴望離家去遠方 十年後我渴望從遠方回家 十年前我對父母大吵大嚷 十年後我希望父母再罵我一次 愛情 十年前你是我的同桌 十年後你成了別人的妻子 十年前我唱著同桌的你 十年後我想著同桌的你 十年...

十年前 十年後

父母 十年前我們是父母的孩子 十年後我們是孩子的父母 十年前我不知道家的溫馨 十年後我才體會家的溫暖 十年前我渴望離家去遠方 十年後我渴望從遠方回家 十年前我對父母大吵大嚷 十年後我希望父母再罵我一次 愛情十年前你是我的同桌 十年後你成了別人的妻子 十年前我唱著同桌的你 十年後我想著同桌的你 十年前...