Waterfall 陰魂不散

更新於 發佈於 閱讀時間約 6 分鐘
此為過去的舊文,2015 年 8 月 25 日初次發表於 logdown。
圖片來源:www.freepik.com

圖片來源:www.freepik.com

2015 年隨著團隊組織方式的改變,個人在團隊中的角色也有了改變,改變至今大概有三個多月,從不同的角度在看事情時,也能得到許多有趣的想法,加上幾次參加C.C. Agile也都能得到意外的驚喜,讓自己反省:自己真的Agile了嗎?真的了解scrum?

敏捷宣言 (Manifesto for Agile Software Development)可能很多人都能朗朗上口(事實上,若隨堂考我,書上或網路上能查到的東西,我通常背不出來,除非我是一個指導別人怎麼跑敏捷開發的顧問,不然背的滾瓜爛熟有什麼意義?),但其中一句:Responding to change over following a plan,就這樣的一句,都不見得是容易做到的,有時內心其實是在抗拒的,因為人本質(well,我不是心理學家,我可能無法證明這件事)上是有點害怕改變,因此做任何事前,都會有計畫並希望所有的事情都照計畫走。

過去的軟體開發便是想管控變化,很多團隊都使用瀑布模型、使用CMMI...,有趣的是,Royce在論文中提瀑布模型的目的,是要拿它當例子來說明軟體開發不能這樣做!有了完整的分析、設計和計畫,然後盡可能避免變化,但大家都知道這不可行,於是有人提倡了敏捷開發,但即便用了某某敏捷開發方法,擁抱改變依舊不是件簡單的事,因為內心還是有waterfall依舊陰魂不散地在很多小地方出現。在敏捷團隊中,還是有可能聽到這些對話:

  「因為沒有細部設計,到時候可能會重工...」
  「因為沒有細部設計,我無法決定...」
  「某某某又改了什麼設計,重工浪費很多時間...」

回頭想想,敏捷精神到底是什麼?我覺得最核心的部分是快速取得回饋並盡快做調整(或稱trial-and-error process),如果在這個核心上來看scrum的幾個活動、產出或實踐,也許就能知道自己是否做得好或不好?

Planning meeting - 重點不在於設計是否一定要細到如規格書一樣才能估時數,細節足於開工就夠了,重點在於團隊的理解是否偏離使用者的需求,一些細節在實作的過程中都還能跟PO確認與調整

Daily scrum - 重點不在於昨天做了什麼?今天要做什麼?還需要多少時間?重點在於我遇到什麼困難,是否需要援助,在會後,scrum master或團隊是否能幫助有困難的人解決問題

Burn down chart - 重點不在於進度是在線上或線下,重點是在線上時團隊能做出怎樣的調整?在線下時,是否有細節被隱藏,當提前完成時,是否還能再加入新的story

Review meeting - 前陣子曾在C.C. Agile聽到一個團隊,因為平時story一完成馬上就跟PO驗證,因此除非真的要展示給stakeholder看,或是要跟團隊討論product backlog的優先順序,不然是不舉行review meeting,若核心精神是快速取得回饋並盡快做調整,那當一個story完成馬上與PO確認,有問題在還有時間的情況下,可以調整不是更好嗎?所以重點還是在於如何快速驗證story是否完成

Retrospective meeting - 重點在於團隊是多認真看待持續改善這件事,願不願意說真話,能不能提出有意義的建言。更重要的是團隊能獲得多少自主調整的空間,在獲得這空間後,團隊是否努力改善自我

Continuous integration and regression testing - 這幾乎是最能反映核心精神的實踐,由於就是有持續整合與回歸測試,因此能快速取得回饋(建置失敗或無法通過測試),才能快速調整(修正)。

在原始的scrum中並沒有明確提到user story refinemenet meeting,但在後來很多scrum教材或實施上,都會有這個會議來釐清stakeholder的需求,團隊過去也在這個會議的進行方式上做過多次調整,在團隊分組後,到目前也調整了兩次進行方式,但運作起來總覺得哪裡卡卡的,最誇張的一次是分組後的第一次refinement meeting:全員加班到隔天凌晨,那一次對團隊士氣的殺傷力其實很大,個人認為PO與團隊之間出現了些小裂痕。

因為團隊成員或多或少對於設計有高度的興趣,因此後面的幾次調整還是讓團隊能參與what的設計,個人提出了一些建議,至今我仍然還在想:以我的角色,我當時應該出手建議嗎?後來這建議和其他團隊成員與PO的意見變成了一個新流程。即使是分組後新的流程,回頭看看過去執行的情況,腦海中浮現過去scrum master說過的一句話:我們該不會是mini waterfall吧

當refinement meeting的重點不在於釐清問題與背後的情境,不在溝通和確認需求,不在找出what,馬上投入到how的細節設計,這設計真的滿足stakeholder需求嗎?當設計細節已經細到UI上的某個元件如何呈現、要有哪些多國語系的key時,這和過去waterfall的差別又是什麼?當為了避免開始施工時發現問題,回頭大幅修改設計(這個自己可能也要反省,因為自己也曾抱怨類似的問題),因此希望能夠在refinement時確認所有細節時,這樣真的算是擁抱改變嗎?

過去我很喜歡《搶救貧窮大作戰》這個節目,節目尋找經營不善的店家,協助老闆到其他的店進行非常嚴苛的訓練,在獲得技能後改善原有的經營方式,這節目後來有回去追蹤過去參加受訓的店家,有的能延續好的成績,有的則變回跟受訓前沒兩樣,現在想想,這會不會是在守、破、離的成長過程中,其實並沒有在守的過程中,真正理解那些規則、教條背後的意義,並自以為是地進到破與離的階段?或是只在守這個階段原地踏步?

回到敏捷開發或是scrum的方法中,這些活動或教條,依樣畫葫蘆,反覆練習,直到熟練,但真的了解背後意涵嗎?當要根據團隊的情況對現行方法進行調整,進一步到破的階段時,是否沒有偏離原先的價值?是否能擺脫waterfall的心魔?這或許是轉換角色後,我思考最多的問題。當然,如果一開始抓住的核心觀念是錯的,那自然會練成九陰白骨爪或是逆練九陰真經。

avatar-img
53會員
104內容數
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Spirit的沙龍 的其他內容
這名字是刻意取Stop starting, start finishing的相反,有一陣子在觀察團隊時發現,story/task 的 burn-down線圖會發現到task幾乎都完成了,但story卻還懸在半空中,甚至在sprint結束前一天,還是有不少stories接近完工卻還沒完工。
Acceptance criteria 確保 do the right things,DoD 則是確保 do the things right,兩者合在一起,才會 do the right things right。
一般來說,會斤斤計較估算的數字,一個可能的潛在原因是來自管理層,忘記從哪看來的一句話:總是會得到想要的 KPI。意思是當制定一個指標,總是能得到期望的數字卻不一定能達到預期的效果。
過去擔任 Scrum Master 時,曾觀察團隊用 planning pork 估時超過三或四輪仍無法取得共識,但點數或時數有時只差一點點 (2 or 3),或是差距很大 (3 or 8),若仔細聽他們的討論會發現,之所以會沒有共識,是因為成員都帶入一個心態:如果我做這個 task 要多久?
如果工作的預估和實際的執行是一致的,就不會有《人月神話》中那一句話:用人月的前提必須是人力與工時可以互換的情況下。我並不是說反正執行結果都不會跟預估的一樣,所以團隊成員在 planning meeting 裡可以亂估,而是要回頭想一下,Scrum 裡 planning meeting 的本質是什麼?
之前讀《Refactoring: Improving the Design of Existing Code》,書中提到了若干個smells,用來聞出程式設計不太理想的地方,那在用Agile或Scrum方法時,是否也能聞出哪裡有些問題呢?可以的,我把過去參與過的經驗整理成幾個 smells。
這名字是刻意取Stop starting, start finishing的相反,有一陣子在觀察團隊時發現,story/task 的 burn-down線圖會發現到task幾乎都完成了,但story卻還懸在半空中,甚至在sprint結束前一天,還是有不少stories接近完工卻還沒完工。
Acceptance criteria 確保 do the right things,DoD 則是確保 do the things right,兩者合在一起,才會 do the right things right。
一般來說,會斤斤計較估算的數字,一個可能的潛在原因是來自管理層,忘記從哪看來的一句話:總是會得到想要的 KPI。意思是當制定一個指標,總是能得到期望的數字卻不一定能達到預期的效果。
過去擔任 Scrum Master 時,曾觀察團隊用 planning pork 估時超過三或四輪仍無法取得共識,但點數或時數有時只差一點點 (2 or 3),或是差距很大 (3 or 8),若仔細聽他們的討論會發現,之所以會沒有共識,是因為成員都帶入一個心態:如果我做這個 task 要多久?
如果工作的預估和實際的執行是一致的,就不會有《人月神話》中那一句話:用人月的前提必須是人力與工時可以互換的情況下。我並不是說反正執行結果都不會跟預估的一樣,所以團隊成員在 planning meeting 裡可以亂估,而是要回頭想一下,Scrum 裡 planning meeting 的本質是什麼?
之前讀《Refactoring: Improving the Design of Existing Code》,書中提到了若干個smells,用來聞出程式設計不太理想的地方,那在用Agile或Scrum方法時,是否也能聞出哪裡有些問題呢?可以的,我把過去參與過的經驗整理成幾個 smells。
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在現代專案管理領域中,瀑布式(Waterfall)與敏捷式(Agile)是兩種被廣泛採用的管理方法。這兩種方法各具其特點與適用場景,深入了解其差異有助於管理者選擇最適合的策略,以確保項目順利完成並達成預期目標。
Thumbnail
「"衝刺 Sprint"是“敏捷開發 Agile Development”的“爭球法 Scrum”中的用語。 首先設定一個產品使用流程作為目標, 然後在一週至一個月期間內,將能夠做到這個使用流程的功能製作出來。 這段預設用來迅速進行開發工作的期間,就叫做衝刺期間。」 「精
Thumbnail
敏捷開發的實踐方式有很多,其中以簡單、易懂的 Scrum 框架最廣為大家接受。 2024年7月 LeSS 網站發布了新一版的《Scrum 指南》,其中調整的內容我覺得讓這個框架更符合實務上的應用,因此就其內容並結合個人經驗與見解撰寫這篇短文,希望幫助大家快速了解這套能幫助團隊適應變化的敏捷開發方法。
Thumbnail
如何有效運用Scrum的船舶理論來主持專案檢討會。船舶理論將專案比作船,通過風帆、礁石、錨等元素可視化檢討內容。會議前的準備、進行步驟及專案經理的主持技巧,幫助團隊在輕鬆愉快的氛圍中總結經驗、識別問題、制定改進計劃,從而提升未來專案的成功率。
Thumbnail
在數位時代,Scrum已成為專案管理的利器。本文介紹Scrum的核心角色、工件和事件,並結合我開發CDP的實際經驗,分享如何通過產品待辦清單管理、Sprint計劃與執行、每日站會和Sprint回顧來提升專案靈活性與效率。希望能啟發更多專案經理運用Scrum,優化專案流程。
Thumbnail
敏捷的成功需要整個團隊參與及沉浸式敏捷體驗,本文以失敗案例為例,探討敏捷失敗以及如何成功。作者認為,成功源於做對很多事,而失敗往往只因為少做了或做錯了一件事,敏捷的第一步是找到對的人,開始第一次的沉浸式敏捷體驗並獲得第一次成功經驗,讓團隊直接做中體驗與感受敏捷的好處,就會啟動敏捷在組織內的擴散與成功
Thumbnail
在瞬息萬變的商業環境中,如何引領團隊從被動執行轉為主動思考?這篇文章分享了一個部門營業目標的轉型實例,包括轉型契機與挑戰、設定績效目標的關鍵步驟、轉型後的成果與反思,並給予其他主管的建議。透過明確的目標、可量化的指標、有效的溝通與回饋,成功實現了從被動到主動、從執行到創新的轉變。
Thumbnail
本文介紹了在公司專案中採用敏捷(Agile)方法,並分享了Scrum的好處、成員負責工作以及工作流程。希望可以掌握Scrum的核心:透明度、檢視和調整的核心,來推動敏捷工作。
Thumbnail
敏捷測試能有效幫助科技公司應對網路興起、軟體當道和資訊爆炸的挑戰,透過小型、跨功能團隊的協作與快速執行,並以用戶反饋進行快速迭代以測試產品假說。本文談到敏捷開發的迷思、MVP的重要性以及風險的注重,以及精實創業中如何驗證市場假說。同時提出敏捷的問題點,並結合同理心設計以滿足消費者情感上的需求。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在現代專案管理領域中,瀑布式(Waterfall)與敏捷式(Agile)是兩種被廣泛採用的管理方法。這兩種方法各具其特點與適用場景,深入了解其差異有助於管理者選擇最適合的策略,以確保項目順利完成並達成預期目標。
Thumbnail
「"衝刺 Sprint"是“敏捷開發 Agile Development”的“爭球法 Scrum”中的用語。 首先設定一個產品使用流程作為目標, 然後在一週至一個月期間內,將能夠做到這個使用流程的功能製作出來。 這段預設用來迅速進行開發工作的期間,就叫做衝刺期間。」 「精
Thumbnail
敏捷開發的實踐方式有很多,其中以簡單、易懂的 Scrum 框架最廣為大家接受。 2024年7月 LeSS 網站發布了新一版的《Scrum 指南》,其中調整的內容我覺得讓這個框架更符合實務上的應用,因此就其內容並結合個人經驗與見解撰寫這篇短文,希望幫助大家快速了解這套能幫助團隊適應變化的敏捷開發方法。
Thumbnail
如何有效運用Scrum的船舶理論來主持專案檢討會。船舶理論將專案比作船,通過風帆、礁石、錨等元素可視化檢討內容。會議前的準備、進行步驟及專案經理的主持技巧,幫助團隊在輕鬆愉快的氛圍中總結經驗、識別問題、制定改進計劃,從而提升未來專案的成功率。
Thumbnail
在數位時代,Scrum已成為專案管理的利器。本文介紹Scrum的核心角色、工件和事件,並結合我開發CDP的實際經驗,分享如何通過產品待辦清單管理、Sprint計劃與執行、每日站會和Sprint回顧來提升專案靈活性與效率。希望能啟發更多專案經理運用Scrum,優化專案流程。
Thumbnail
敏捷的成功需要整個團隊參與及沉浸式敏捷體驗,本文以失敗案例為例,探討敏捷失敗以及如何成功。作者認為,成功源於做對很多事,而失敗往往只因為少做了或做錯了一件事,敏捷的第一步是找到對的人,開始第一次的沉浸式敏捷體驗並獲得第一次成功經驗,讓團隊直接做中體驗與感受敏捷的好處,就會啟動敏捷在組織內的擴散與成功
Thumbnail
在瞬息萬變的商業環境中,如何引領團隊從被動執行轉為主動思考?這篇文章分享了一個部門營業目標的轉型實例,包括轉型契機與挑戰、設定績效目標的關鍵步驟、轉型後的成果與反思,並給予其他主管的建議。透過明確的目標、可量化的指標、有效的溝通與回饋,成功實現了從被動到主動、從執行到創新的轉變。
Thumbnail
本文介紹了在公司專案中採用敏捷(Agile)方法,並分享了Scrum的好處、成員負責工作以及工作流程。希望可以掌握Scrum的核心:透明度、檢視和調整的核心,來推動敏捷工作。
Thumbnail
敏捷測試能有效幫助科技公司應對網路興起、軟體當道和資訊爆炸的挑戰,透過小型、跨功能團隊的協作與快速執行,並以用戶反饋進行快速迭代以測試產品假說。本文談到敏捷開發的迷思、MVP的重要性以及風險的注重,以及精實創業中如何驗證市場假說。同時提出敏捷的問題點,並結合同理心設計以滿足消費者情感上的需求。