Odd-e CSD Course Day 1

First 強烈的建議,記得準備好當地的 SIM 卡及插座轉接頭,在這五天中很好用的 Smile

接下來,我就各個主題來介紹一下相關的心得。首先我們這五天裡會依照 Scrum 的流程,完全的跑過一次,從一開始的需求定義,到最後的 Sprint Review 一個都沒有少

Requirement workshop / A-TDD

在 Workshop 練習中,PO 會針他的需求不明確的地方做講述,身為 Agile developer 你需要做的是,先問出他實際的需求,再轉化成 A-TDD ,A-TDD 這個名詞有些人比較不常聽過,但教練一提到 BDD ,大家其實就都明白了。

所以在 Product Backlog Refinement (PBR) 裡,「討論」與「釐清」是一件很重要的事。並且這當中也提到了,何時該做 PBR , Before Sprint or After Sprint . 這裡提的是 Before Sprint (通常在Sprint Review 之前)

另一個更重要的是,開發團隊在這時候是協助 PO 去釐清一些真相,為什麼要特別提這事呢?

想像一下 PO 今天說,我想要能夠登入系統,但這是 PO 的需求嗎?

也許他只希望進入系統後能顯示使用者的姓名 (在這裡開發團隊就相較之前多了好幾種解決方案)
有趣的事,最近看到一張圖來說明,為什麼我們需要「討論」

image

(人類已經演化成發現別人錯誤的最有效生物)

from: https://www.slideshare.net/ziobrando/the-sweet-spot-41853270

在分別寫下 A-TDD 的案例過程中,也引發了蠻多的討論。

e.g.

1. 當寫了多組相似的 A-TDD , 如何重新組合成單一案例? (keyword: Scenario Outlines)

2. 當 A-TDD 完成了,如何應用這個案例產生 Business Rule 或是反過來產生新的案例

3. A-TDD 的內容該怎麼寫? (只有工程師看的懂就好嗎?或是應該要讓 PO 也看的懂)
這裡想起以前 91 (Joey Chen) 在 TDD 課程中提的,如何讓 PO or PM 一起加入寫 BDD Case

除了 Nature Language 外,另一個就是團隊成員如何一起協助你的 PO or PM (適時的提出一些技術面的想法或常見的做遙)

現在開始別讓你的 PO or PM 成為邊緣人。一起完成 A-TDD 的案例吧!

「let me alone」的圖片搜尋結果

from: http://physicalculturist.ca/leave-me-alone-collection/

並在中間舉了 Parkinson's law of triviality 做為團隊在討論問題時常見的迷思 Laughing out loud

此外一個重要的點我覺得是先前提的如何產出你的 Business Rule

「specification pyramid」的圖片搜尋結果

from : https://www.slideshare.net/tcmak/adopting-technical-practices-2013

從這張圖可以看出,開發團隊在開發的其實是在最下層的 Technical Activity

但 Technical Activity 事實上是從 Workflow 而來,而 Workflow 是由 Rule 決定的

這裡存在一個很大的風險是,當在你的 Rule 不明確時就進行開發,這不叫 Agile 這叫 idiot

所以透過 A-TDD 與 PO 反複進行討論的同時,其實是要把 Rule 與 Workflow 訂出來

才能讓在最後需求變動時,影響的範圍較小,而且比較不會 Over Design


SCM,Build Automation and other tools

在這個單元中,其實著重在的是如何進行你的流程。工具其實真的不是太重要

(Day 2 會特別詳細討論這個)

在這裡介紹了許多常見的 Build Tools

e.g.  cake 、 coypu

中間其實有提了這次 Sprint 裡我們的 Definition of Done

Sprint Planning

在 Sprint Planning 中,我們一共做了兩次,兩次其實都隱含了對 Product backlog 做出承諾這件事

Sprint V1

在 Sprint V1 中 跟以前玩的打牌遊戲不太一樣,感覺更簡單許多。直接將費式數列排出後,由某個成員選出一個他認為相對最小的 backlog 做為基準,在 1-2 輪中每個成員就依序進行 backlog 移動,並且在這當中"絕對不要進行討論" ,最白話的理由便是,不要讓你提出的理由影響到其它人的決定。

但在後面幾輪中,移動 backlog 時就需要提出你的理由了!而有趣的是,在這此 Spring Planning 中,我們團隊中其實有兩個需求不明確的 backlog ,在某次移動的當下我便直接詢問 PO 他對於這個 backlog 的想法為何,經過再次澄清後,其實就很容易能相對估算出這個 backlog 的大小為何了!當然我們在這當中也有犯了一個小小的錯,我們在其中一個 backlog 還不明確的清況下,將它估算的相對太小。 這時候 PO 也直接提出了,如果實際上我的需求其實難易度很高,那這個 backlog 是不是就會相對來說變的比較大?

(簡單來說,任何在這過程中不清楚的通通都要提出來問,問 Team member 、 PO 、 Scrum Master 、 balala… )

而當 PO 在我們估算結束後,進行排列時。 有成員提出了,如果按照 backlog 上的估算來進行 backlog  priority 的排列是不是比較好?

但事實上, PO  並不在意估算, PO 關心的是在他排列完之後,他的需求能不能被完成
另一點是,有小夥伴提出了,如果 backlog 裡有相依性該怎麼辦

其實答案也一樣,對於 PO 而言不關心使用者故事相依性,關心的是你怎麼實現他的夢想

Sprint V2

在 Sprint V2 中,我們將上一輪最後評估能做的 backlog 做"細節拆分"外,一樣透過團隊成員來決定這樣的拆分是否可行,只要有一個人說 NO 。這時候就必需停下來,傾聽成員解釋相關原因

這裡用了很簡單的 Fist of Five  ,具體可以參考這裡 (簡單的說是透過1到5只手指來做投票)
http://agileforall.com/learning-with-fist-of-five-voting/

Pair Programming

最後就進行了第一天的 Pair Programming ,第一天的過程其實就比較順利

因為我的夥伴聽不太懂我在說啥,只能用文件進行溝通。不過最後算是有順利完成我們的目標啦(茶)

當然我其實是蠻喜歡 Pair Programming 的,透過這樣的方式去觀察其它人遇到問題時的解決方式,來偷學幾招。其實蠻有趣的!其中一個點是,我發現印度人在遇到問題時,第一個不會先找 Stackoverflow ,而是先翻文件。跟我的習慣不太一樣,通常一般的錯誤丟 Stackoverflow 就有了!但翻文件的時間可能就會比較久。

另外在每天結束時,每個人都會針對今天的內容做短暫的回顧分享。透過反饋來重新學習與複習今天所學到的內容

繼續閱讀 Odd-e CSD Course Day2

對課程有興趣的同學,可以到以下網站找到相關的資訊

https://www.odd-e.com/

 

 

posted @ 2018-03-28 22:28  KingJaja  阅读(455)  评论(0编辑  收藏  举报