CSM 之後 Scrum 總結

  • 什麼是 Scrum ?
  • Scrum 的理想 ?
  • Scrum 怎麼導入 ?
  • 現實的殘酷
  • 仍然存在的疑惑 ?

什麼是 Scrum

「什麼是 Scrum?」,在這之前我們先問一下「為什麼要 Scrum ?」
「Scrum 之前我們怎麼進行專案的?」、「Scrum 之前我們怎麼管理團隊的?」
層層的組織架構、層層的管理人員、層層規劃設計開發…

本來都好好的,為什麼現在不 work 了?

時代正在改變,軟體、網路、行動裝置等…各種技術的成熟,使得整個社會,
不論工業、商業已經往下一個階段邁進,
這是一個VUCA(多變(Volatile)、不確定(Uncertain)、複雜(Complex) 與混沌不明(Ambiguous))的時代,
新的科技帶來新的生活習慣與消費行為,同時機會也再此產生,
不論是巨象還是螞蟻都必須想辦法求生存,而快速適應與改變的能力,成為這個時代必備的能力。

不論是 Agile 或是 Scrum 都是要讓你適應變化,並且活下去。

而 Scrum 是一個框架,三個大原則,透明(Transparency)、檢驗(Inspection)、調適性(Adaptation)
簡單易學,卻難以精通,這句話說得明白一點,就是很容易畫虎不成反類犬。
而 Scrum Guide 用了一句簡單帶過,
「Scrum’s roles, events, artifacts, and rules are immutable and although
implementing only parts of Scrum is possible, the result is not Scrum.
Scrum exists only in its entirety and functions well as a container
for other techniques, methodologies, and practices.」

常見的「Scrum 自助餐」其實不是 Scrum 。

透明(Transparency)

透明的目的是什麼?避免殼倉?曝露風險?取得共識?

CMS 課程帶給我一個很重要的學習,是個很簡單的老故事就說過的道理。
「盲人摸象」,大家應該都聽過這個故事吧,
有的人摸到了扇子(耳朵)、有人摸到牆壁(身體)、有人摸到柱子(腿)、有人摸到水管(鼻子)…
如果大象是你的產品、你的商業模式、你的生存武器,
那麼展現「雅量」就不是一件很好的事了,
當你的 DBA 說了扇子、RD 說了牆壁,PO 說了柱子而 QA 說了水管,
那麼這些的加總就是你的大象(產品)了嗎 ?

盲人的大象

「所有人說都是對,排列組合也是對的,但結果是錯的。」
怎麼解決這個問題?

  1. 讓盲人看見
  2. 讓盲人摸得到別人的區塊

透明的目的是為了看見目標、取得共識
還記得多少浪費生命的會議,有多少會前會?有多少會後討論嗎?
又或是大家都說好,作出來卻是半成品、廢品嗎 ?

取得共識 是困難的,Scrum 提供的機制,
讓回饋在不同的活動(會議)中由不同的角色中產生,
但是如果成員不願意講,這些會議就一點意義也沒有了。

要如何讓成員願意發言?
信任、信賴、安全感,但是這需要時間去打造這樣的文化與環境。
事實上不會喊完口號,成員就彼此互相信任,生產力大爆發。
如何打造一個這樣的環境?是管理職真正的責任所在。
但這種無法立竿見影的工作,喊口號的很多,作的人很少。

檢驗(Inspection)與調適性(Adaptation)

透明在檢驗與調適性之前,是有重要的意義的。
也只有透明,才能讓事實擺在眼前,
不是基於事實的檢驗與修正,只是自慰而已。

無奈的是這個世界是如此的複雜,你幾乎不可能真的看見大象(全貌),
曾經有個創業的朋友說了一個「敏捷無用論」,

沒錯,他說得對。
Agile 與 Scrum 從來不是銀子彈 ,如果要迷信「敏捷」不如迷信「沒有銀彈」吧。
你必需依賴你的情境(Context)來決定使用什麼方法,
在他的情境當中,他們要作得項目已經很明確了,而資金是不足的,所以每分每秒對他們都非常重要,
如果要照表操課這些會議,恐怕會佔據大部份的時間。
但是這些會議都有其背後的意義與目的,如果團隊能與商業目標緊密結合,
甚至是一體同心(比如說:你就是老闆又是開發人員),那麼梳理需求是不是能快速的在幾分鐘內完成 ?
如果你們每個人每時每刻都在一起工作,分享彼此的工作內容,那麼需不需要「每天」開個例會同步資訊呢 ?

反過來說,他說得也不對。
在每個會議與每個會議的產出物的背後都有一個目的與意義,
如果不能讓梳理需求、衝刺開發、展現結果與收取回饋時時發生,
那麼這些會議是最好的機會,更重要的事是 Scrum 給團隊自主權,決定進行的方式,
如果有進行這些活動,卻沒有帶來相對的效益,這背後是不是對 Scrum 沒有深刻理解所造成的呢 ?

這種都對都錯的「盲人摸象」時時發生,
重點是怎麼作「取捨」、怎麼作「選擇」。
也是「Adaptation」的意義,你要欠一些債,爭取提早上市的時間?
你要將一個團隊當作棄子,為了作出一個 POC?
這都是選擇,你是有意識的選擇,還是無意識的呢?

如果你是屬於身不由已的那方,被選擇得對象,那麼你要作出什麼選擇?
讓自已的生存機會提高呢?

Scrum 的理想

Scrum 本身僅僅是個框架,它給了整個團隊非常彈性的空間,
但是仍然有著一些限制。

角色的定位

Scrum Master 要作什麼

Scrum Master 的這個角色,不存在一般的組織架構之中,
這個導致 Scrum Master 的養成非常不易,
偏偏「Master」這個名詞,使得人們對 Scrum Master 有不切實際的期待與依賴
「Scrum Master」本身是個教練型的角色,需要旁觀者的客觀心態,
需要觀察記錄個人、團隊乃至於整間公司文化,
(「記錄與側錄」是重要的,這能讓你從另一個旁觀者角度看事情,不要只有一個視角。)
同時又需要各種方法去教導、引導團隊,這包含「對 Scrum 的理解與實踐」與「工程實踐」
有太多 Scrum Master 常常會犯的錯如下:

  • 淪為安排會議的助理角色
  • 過度將焦點放在 Scrum Master 本身
  • 照表操課的帶四大會議,而不是觀注在團隊的成長與過程
  • 缺乏工程實踐的能力與經驗,導致在引入實踐時淪為空話
  • 身兼不同的角色,造成角色錯亂
  • 無法存活導致被炒,即使有冒出新芽的改變也隨之消失
  • 只顧著存活而無法帶來實踐改變,純粹變成招覽「人材」用的蜜糖(HR:我們有屎逛,很潮喔;進去後才發現是小瀑布,真的很潮)

PM 可以轉型 PO 嗎

簡單的說,當然可以。
你想改變的是你的 Title 還是你的作事方法 ?
你想改變的是你的 Title 還是你的作事方法 ?
你想改變的是你的 Title 還是你的作事方法 ?
理想的 PO 應該更觀注在產品上面,我們希望你會產品有想法、有願景甚至有策略,
如果沒有策略,只是想作一些嘗試也是可以的。

第二點,排序,「我全都要」是不負責任的說法,是大頭症而且偏離事實的中二病
如果團隊也承諾「我全都給」,就要小心整個組織是不是落入「國王的新衣」,集體自我欺騙的困境了
Walking Skeleton 是一個非常好用的手法,在探索出你的商業策略之後,
要找出關鍵的支柱,儘可能快速的推出你的 MVP ,
實際上如果你要你的產品有 Value,你是很難在一個衝刺中完成一個可發佈的產品的
(Demo 或概念介紹影片是有可能的,如果你也走記者會趨動開發的話…)。

我們理想上不要有半成品,或是讓半成品儘可能的少,存在時間儘可能的短,
我還蠻推崇 User Story Mapping 在排序上的作法,
「二分法」少了它就不行的功能、基礎建設就作,其它就不作。
讓 Walking Skeleton 儘早的串通,拿掉所有不必要的功能,儘可能的輕薄。
端看你的 DoD,要達成 End to End 的 Walking Skeleton。
但是有時候即使你拿掉所有非必要的東西,也需要多個衝刺才能完成 Walking Skeleton,
當你完成之後,你的每個開發就可以在這基礎上進行增量開發,而且每次都可以作端到端的完整測試,
持續的開發增量,直到滿足 PO 對 MVP 定義,才有 Release 的可能。
相同的手法在團隊拆解 Task 也是可行的。

MVP 很大,遠比你的想得大很多
MVP 很大,遠比你的想得大很多
MVP 很大,遠比你的想得大很多

歸納一下重點:

  • 想清楚產品現在最重要的策略
  • 由策略 Break Down 出 Product Backlog Items (User Story)
  • 只有作與不作的優先權
  • 只觀注要作 PBI 與 DoD
  • 找到 Walking Skeleton,在一開始儘可能的薄(這個手法適用 PBI 與 Task)
  • 事實上 MVP 仍然很大,大到你不一定能在一個衝刺中完成
  • 問兩個問題,什麼讓我們變慢?什麼能讓我們更快?
  • 增量不等於 Release
  • PO 要觀注產品的價值,與市場的變化
  • 不要 Management 不要 Dispatch,只要排序並約定最上面的最先完成
  • 進入衝刺後就不要異動排序
  • 保留插件泳道可以帶來一些彈性,但是也是有代價的,請確保放入泳道的 Task 比衝刺的 PBI 更有價值

導入

這幾年 Scrum 或是 Agile 在台灣各地相當盛行,
這是個好事,但同時也意味著各種妖魔鬼怪的出現,
認証單位的出現,品質低下的 WorkShop 出現,
同溫層自 high 喊口號的出現,這些都是一些壞味道,
敏捷是很科學的作法, Scrum 的經驗主義也是有其理論基礎。

在這之上如果變成直銷或是宗教化的宣傳,
我個人認是非常不好的,甚至會成為導入的反動力,
我常常在想,滿牆的便利貼與宗教崇拜這樣不是與彊屍道長沒有兩異嗎 ?

我的建議的導入方法

  • 先觀察找到瓶頸或關鍵人物
  • 爭取組織關鍵人物的支持,如果有老闆的支持更好
  • 帶來變化與作法,更勝於帶來新名詞
  • 一直講一直講,通常講到對方不耐煩才只是開始(小心自已先不耐煩)

現實的殘酷 與 仍然存在的疑惑

最後,記錄一些現在遇到不解的問題

團隊的不穩定

不論是個人的生涯規劃,或是內部的組織調動,
都會讓團隊的成員組成變得不穩定,而基於經驗主義的 Scrum,
如果每個衝刺的團隊組成都不一致,會不會帶來太多的變數 ?
甚至團隊成員是抱著打工的心態,而 Scrum Master 也當作這些成員是別人家的孩子,
而不關心其成長。這樣總體的團隊能成長嗎 ?

過多的變數

承上題,在實驗的過程中,我們會希望儘可能的控制變因,
但是實務上,包含人員、工作內容(可能過度偏向某個 Skill Set)、假期、Deadline 與項目的複雜度/範圍等…
都會帶來很大的變因,這樣的估點是否仍然有意義 ?

規模化

理想的 Scrum 想達到有效溝通,建議人數要在 5~9 人,實際上整個組織一定會遠超這個人數,
雖然現在有 Less 等 solution,但是我仍沒有理解與體會到其帶來的價值,
因此仍然有所疑惑。

跨職能與自組織

本身產品的覆蓋範圍就很大,團隊人數限制在 5~9 之時,
要完成 End to End 變得有些不切實際與困難。
一方面現有的產品欠了相當大的技術債,而團隊欠了相當大的學習債
團隊成員在開發上已經有點捉襟見肘,還要跨領域的學習,又要深入鑽研某項技能。

如何讓團隊認知到清還債務能讓我們變快,並且在工程實踐上達到要求也是需要時間,
而成員確在職涯規劃上,2~3 年就換個工作,而花了時間培養的戰力瞬間飛滅。

更甚是組織內部寧可換用便宜的人材,
而不珍惜自已花時間養成的人才。
對此我深感無力,
跨職能與自組織最後也是淪為口號。

全貌

以上,我仍在觀察、記錄…
並且尋找機會,「Change Your Company」。
做正確的事,然後等著被炒

(fin)

CSM Day2-3 Scrum Master

Scrum Master

哪些人適合作 Scrum Master ?
常見組織轉型時會直覺的找現有的角色作 Scrum Master ,
但是 Scrum Master 是一個 Coaching 的角色,
傳統公司裡面並沒有 Coaching 的角色,通常都行不通的。

從 Manager Driven 變成 Custom Driven

傳統公司裡面的 Manager ,要麼是 R&D 的 Manager ,要麼是 PMO 的 Manager。通常會有幾個問題

  1. R&D 通常由資深 RD 升上來,但是不善於管理(彼得效應)
  2. PMO 會有自已與部門的考績考量,而這不一定能瞄準市場目標
  3. 通常工作都會由 Manager 分派,而不是由成員主動爭取
  4. 失敗的時候,總要有人背鍋,那個人就是 Manager (但是實務上常常看到 Manager 丟鍋給成員)
  5. 不太關注成員的成長。(好啦,也許有的有)
  6. Manager 要作太多的決策

Scrum Master 不是 Decision maker

情境:當 Team Member 無法決定求助 Scrum Master 時。
解法:也要看情境,干預或不干預是要付出成本的。
你要關心「風險」與「成長」,在沒有風險的情境下 Scrum Master 應該引導團隊自行作決定。
問問題是一個好的引導方式,過多的干預會讓團隊無法成長。

以小孩作比喻

情境 作法
小孩爬桌子(低風險) 讓團隊試試看,讓團隊學習、成長。
小孩爬馬路(高風險) 作出 Decision,避免失敗(失敗就沒有下一次)
別人家的孩子爬桌子(不穩定的團隊) 防東防西,風險至上(他成不成長干我啥事?)

如果把時間拉長一點,可以觀察出自已的取捨是否太偏向某一方(風險 or 成長),
比如說幾個月,如果團隊仍無法自行決定,可能是你( Scrum Master )干預太多了,
Scrum Master 每一個決定都會影響到團隊。
Scrum Master 應該給自已訂一些目標,來判斷自已的取捨是否合理。

Ex:

  • 團隊是否會自行分工
  • 團隊是否會自行作決定
  • 團隊是否會蜂擁處理最高優先權的東西
  • more…

更多情況 Scrum Master 不見得能作 Decision。

Scrum Master 的責任

  • Coach PO

    • 消除客戶與開發之間的障礙
    • 教導 PO 如何透過 Scrum 最有效率達到目標(How to maximize ROI and meet their objectives through Scrum )

    以下圖來說,Y 軸代表價值,X 軸代表時間。上圖的策略表示產品初期就發佈高價值的增量,
    隨著時間過去,單位時間能帶來的價值太少時,也許我們就不作了(虛線之後),因為不符成本。
    而實務上,可能會更接近下圖,在初期有些基礎建設,這些建設不一定能帶來較高的(客戶)價值,
    但是可以降低風險,有時候更可能是初期必要的相依項目。這兩種策略沒有好壞,關鍵點仍是要能結合你的產品,
    與 PO 共同討論出取捨的方向。 User Story Mapping 是一個工具,怎麼樣找到 Walking Skeleton ,
    怎麼在這個基礎上豐富你的產品,這都是 Scrum Master 的職責。

兩種不同的迭代策略

  • Coach Team

    • Improving the lives of the development team by facilitating creativity and empowerment

    • 以任何可能的方式提高開發團隊的生產力

      團隊常見的兩個問題,作太少或是作不完。可以嘗試一些工程實踐,但是別忘了工程實踐的目的是讓 Sprint Done。
      比如說:

      mini-waterfall 的流程可能會導致 Item 作不完,原因是 Testing 的角色在最後面才會進來,會有 Items 作不完,
      提早發現其實是件好事,不論是全都作不完高優先權的作不完或是低優先權的全都作完都是很好的干預點,
      只要在 Retrospective 將作不完的東西攤開(透明),分析問題就可以有機會改善

      引入不同的流程、開發方式都會有一個學習與生存的焦慮在裡面。可以透過 Coaching 降低學習焦慮,
      你要尋找適合的人選與資源,這是 Scrum Master 的職責。
      有的團隊的抗拒會比較強,Scrum Master 要找好時機進行,例如:Sprint 失敗時。

    • Improving the engineering practices and tools so each increment of functionality is potentially shippable。

      實例化需求(SBE)、驗收趨動開發(ATDD)
      實踐上怎麼作呢 ?
      在 Sprint 中的 Item 應該都有驗收標準( Acceptance Criteria),
      這都應該在 Planning 或 Refinement 的階段被列出來,更進一步應該變成 test case。
      Example :
      Sprint 裡有 Item1、Item2、Item3、Item4

      Item1 應該會有 test case 1.1,test case 1.2…,Item2 應該會有 test case 1.1,test case 1.2…,
      正常一個 Item 應該在兩三天完成這個功能。
      這時候就可以測試 test case,假設 test case 4.3 作不完就不作了,這樣就不會留半成品。

      再透過持續整合(CI)的實踐,避免後面的改動,影響到前面。

      實務上,一種是團隊很喜歡作這類的實踐與改變,另一種更多
      「團隊作不到 Done,在 Retrospective 階段來趨動改善的過程」,為了解決問題。

1
2
3
4
5
Question:
1. Item1、Item2、Item3 會改到同一個模塊,所以 RD 會習慣同時開發(F2E反應)
2. 沒有持續集成(CI),或是 CI 不包含自動化測試怎麼辦?
- 如何快速寫出一個自動化測試試?
**

問一個問題,「什麼讓我們慢下來?,什麼讓我們不能更快?」

通常第一線的人員(Developer)不覺得慢是一個問題,甚至不會在 Retrospective 提出。Scrum Master 的職責是找到這個問題。

小結:

  • Scrum Master 要讓團隊與 PO 深入理解 Scrum
  • Scrum Master 就像是牧羊犬要保護羊群(團隊),因為會有狼(插件 or something…,或是羊群裡有狼)
  • Scrum Master 不作決策,更多是關心決策的過程甚於決策本身
  • 具有生產力的團隊就是 Scrum Master 的產出
  • Scrum Master 要發揮影響力(知易行難,怎麼作?)

情境題

避免爆雷,不描述課堂上的情境,但是將一些原則列下:

  1. 很多人第一時間會找 Scrum Master 問問題。
    • 這是好事 Scrum Master 要發揮影響力
    • Scrum Master 可以籍些說明 Scrum 在作什麼,團隊是怎麼運作的。
    • Scrum Master 不作決策更關注過程。
    • 不要急著解決問題。
  2. Product Owner 要基於 Product Value 作排序
    • 如果要最大化價值,一個產品就一個 Product Backlog,不管是多少個 Team。
    • 一個插件有幾種可能
      • 放進下面幾個 Sprint Backlog。
      • 放進 Product Backlog。
      • 很異常的情況,才會終止 Sprint。
    • Scrum Master 要關注 Root Cause
  3. 保持團隊與 Product Owner 的連結
    • 有時候 Product Owner 也身不由已。
    • 如果 Product Owner 不在決策圈或未被授權,要了解背後的原因。
    • 如果 Product Owner 太忙,想辦法減輕他的壓力。
    • 如果 Product Owner 有別的角色(Sales、Boss…),找個適合的人作 Product Owner。
    • 改變文化 改變組織 改變作法。
  4. 讓 Product Backlog 作為團隊工作項目唯一的入口
  5. 在不被 fire 的情況下,對組織帶來改變與價值!要有勇氣。
  6. 不要讓團隊與 Product Owner 成為甲方乙方。
  7. 讓團隊自已挑選工作,而不是分派工作。
  8. 觀注事實。
    • 團隊的 Velocity
    • 上個 Sprint 完成的點數
    • 誠實面對失敗( _柯語錄:面對挫折打擊不是最困難的;最困難的是面對各種挫折打擊,卻沒有失去對人世的熱情_)。
    • 思考著如何讓 Product 的 Impact 發生
      • 昧著事實去滿足時程與範圍,可能會為此喪失品質與生產力(欠債…)。
      • 找到正道,但是也許會更花時間。
      • Change Your Company。
    • 觀注 Product 的成功勝於作了多少工作。
    • 盲人摸象的故事,每個人都對,也都不對。

Part-time or Full-time

Scrum Master 觀注改進,同時兼任多個角色時,容易陷入可量化產出的角色之中。
要想辦法讓 Scrum Master 的工作可視化,不然容易淪為開會召集人或訂訂便當與飲料的角色。
實踐:

  • 使用 Scrum Master Check List http://scrummasterchecklist.org/
  • 建立 Scrum Master 的改善 Impact Backlog,並且設定優先級。
  • 按優先級逐步的改善。
  • 尋找一組 Scrum Master 彼此討論與評量,讓這個流程形成一個循環。
  • Less 的解決方式是 Full-time Scrum Master 兼任多個 Team。

相同的作法,對不同的 Team 不一定有用, Scrum Master 如果能接觸不同的團隊是好的。或是從其它 Scrum Master 汲取經驗。

呂毅老師的實務分享

常見一個問題,Product Owner 常常單向對 Team 輸入訊息,導致最後的結果與 Product Owner 的想法有落差。

一些壞味道

  • Planning 的時候大家「帶電腦」作自已的事或是在「滑手機」。
  • 開會人數太多,部份人在討論時,其它人放空。

Solution:

  • 讓成員不要帶電腦,收走手機
  • Product Owner 講完換 Team 講
  • 測試
  • 拆散小組至 2-3 人
    • 有點類似 Lean Coffee 的作法,讓團隊拆成小組討論 。
    • PO 輪流在小組之間被問問題。
    • 如果等不到 PO 可以先寫在便利貼貼到白板上。
    • 設定 Time Box ,時間到請 PO 回答問題。

Ending

不要反射性的去解決問題,讓子彈飛一會兒…。

  • 讓問題變透明,讓團隊看見問題
  • 不急著干預,試著讓團隊自行解決問題
  • 讓 Team 與 PO 直接交流,不要成為 PO 與 Team 的傳話筒。
  • 要保持「意識」,不要條件反射去干預,要克服這個心魔。

Real Team

  • 所有人的目標是一致的,而不是臨時組成的一群人。
  • 俱備 End to End 的完整。
  • 有限的人數,Scrum 建議 5~9 人。
  • Mutual accountability
  • Agreed way of working

Scrum Team 是自組織的團隊

一個好的 Scrum Master 的產品是 Well-Working Team, 這需要時間(以年計算…)。
如何打造一個 Team ,這比 Scrum Maser 有更多的討論,但是實務上在成為 Scrum Master 時,大多數人打造 Team 的基本功是缺乏的(彼得原理?),這需要更多的學習…

參考

心得小結

  1. 還好上課有記錄,課程很有料,過了一個月想法仍源源不絕的出來。
  2. 你可以繼續 Scrum 自助餐,但是那個不是 Scrum 不是守破離。
  3. 一邊觀察 N 社團隊的運作一邊寫筆記,Change My Company。
  4. GitBook 也很方便的筆記工具,寫完後同步到 Github 就能拿到九成完美的 markdown 。
  5. Scrum 給團隊更多職責,所以團隊要更強才行。
  6. Cross Learning 不僅僅是溝通層面而已,而是為了真正的 End to End。你的 End 到底到哪裡 ?如何 DoD?
  7. 所有聲音都是真的,不要急著說服別人,記住盲人摸象沒有一個瞎子說謊。
  8. 第二步我在哪裡?第一步看見全貌、先要透明,透明的意思是有共識,再此之上是溝通與信任…不要把人僅僅當作 Resource。
  9. 團隊裡面不要有小團隊/人數控制在 5~9/保持團隊穩定/Real Team,好難…實務上怎麼作 ?
  10. Walking Skeleton 可以貫通在 PBI/User Story/Task 之間,要盡可能的薄但暢通,再此之上才有增量。
  11. 可交付的增量不是 Release,也不是 MVP。MVP 比你想像的還大。
  12. Sprint 的觀念在蕃茄鐘或 GTD 也有反覆出現過,在 TimeBox 中反覆實驗,尋求改善。

(fin)

[實作筆記] Git 批次刪除分支

要知道的事

  • OS : Windows 10

易學難精的 Git 與 Flow

在使用 Git 時,分支的策略往往比 Git 本身更複雜。
Git 在建立分支是成本非常低的一件事情,
也因此很容易開出一堆分支,
這與團隊規模和 PR 的流程有關,可以參考文末的分支策略聯結。
因為 Git 開分支實在太便宜了,
我的 Remote Repo 不知不覺中竟然有了破千的分支。
大量的分支意味著大量的需求,其實是好事,
但是大部份的分支都已經功成身該退了,
當我使用一些 GUI 工具,為了顯示這些分支時,
這樣的數量反而成了阻礙。

解法

大量刪除遠端分支的方法

Step1. 可以透過正規表示式查詢大量分支。

1
git branch -r | awk -Forigin/ '/\/feature\/BTS14/{print $2}'

Step2. 同上的語法,但是後面 pipeline 串接 xargs push 到指定的遠端(這個例子是 origin)

1
git branch -r | awk -Forigin/ '/\/feature\/BTS14/{print $2}'| xargs -I {} git push origin :{}

特別看一下 {} git push origin :{} ,我們實際上是透過 push 語法刪除分支的。

補充

2019/05/09

大量刪除本地分支的方法

Step1. 可以透過正規表示式查詢大量分支。

1
git branch | grep "pattern"

Step2. 同上的語法,但是後面 pipeline 串接 xargs push 到指定的遠端(這個例子是 origin)

1
git branch | grep "pattern" | xargs git branch -D

參考

(fin)

[N社筆記]敏捷路上跌倒站起來 2018/11 月

2018/11/30

Planning 有沒有優先討論重點項目?

  1. 最先討論上個 Sprint 的 UnDone
  2. 順序等於優先權嗎?
  3. 工作是事先 Assign 好,而不是
  4. 兩個 Team 的 Backlog 放在一起,結果順序是
    • A Team (B Team 發呆)
    • B Team (A Team 發呆)

PO 只作明顯短期可見效果但低價的項目(沒有 Focos 價值),如何引導 ?

Scrum Master 消失 ,Planning 沒有 Couch PO

  • Scrum Master 兼任主管
  • Scrum Master 兼任開發人員

KA 後台要中文 / 前台要英文

  • 要問 Why:KA 面對的客戶也以中文為大宗,為什麼要英文?

2018/11/28

Demo 會議是由「 PO 介紹給 stackholder ?」

還是「 Team 介紹給 PO ,有 stackholder 最好。」
如果可以看錄影就當作 Demo 過了,那還需要 Demo 嗎 ?

三個 Team 各自有各自優先級最高的項目,這樣會不會陷入局部優化,過早進入細節 ?

  • 無法集中火力處理優先度最高的需求

最大的 PO 沒進來

會後主管和小 PO 們再討論,有好有壞?
Scrum 怎麼說?

  • 主管應該不要進來
  • PO 最好能夠進來
  • 不要在團隊裡形成小圈圈

2018/11/26

無限站立會議之卷

10:10 SRG 站立
10:20 A Team 站立
10:30 B Team 站立
11:30 RD1 周會

2018/11/23

  • 你需要一個旁觀者,不然只是自 high

    • 觀查群眾的反應
    • 客觀點出講者的優缺點
    • 再好的內容沒有人聽也是枉然
  • 成為 SM 之前要小心,不要急著成為 SM (特別是你是兼職的 SM 時)

    小心過早聚焦到細節,例如:安排會議/主持/作簡報
    不然你會變成「借會議室的人」、「照表操課的 Scrum Master」

  • 用誇張口吻重複他說的理想,你就會知道他是在說理想還是說幹話

2018/11/22

情境:
團隊開發會與其它團隊開發相依或衝突,導致 Release 的品質有所缺陷。

  • 用更多的會議/文件/Check List 作控管,有沒有辦法從 root cause 解決問題 ?

  • 主管為什麼會想看「沒意義」又「不真實」的東西 ?

主管為什麼會想看「沒意義」又「不真實」的東西

2018/11/21

  • 口頭敘述

2018/11/19

  • Scrum 不要拿 A 會議的時間作 B 會議的事
    • 觀注目的
    • 作該作的事

有關進步

運動員是否真的變得更快、更好、更強 ?

(fin)

如何讓 windows 也有美美命令提示視窗

目的

就是要美美命令提示視窗
常常在一些社群看到,大神都超會下 command,
開始學習使用各種 command 之後,才發現那個美美的 terminal 不只是華麗而已,
實際上也可以加速閱讀,而且潮指數也是怒加一波(畫錯重點),
當然要研究一下如何讓自已擁有一個賞心悅目的 commander 囉

作法

使用 Cmder , 這是一個 Windows 的開發人員常用的 terminal 介面,
他可以執行一般的 CMD、Bash 與 PowerShell ,別想得太複雜,就是一個命令提示視窗。

安裝字型 on Windows 10

  1. 下載 powerline,選擇 Clone or download > Download ZIP
  2. 解壓縮後,選擇使用 AnonymousPro 字型(主要是要那些git icon的圖案,如果別的字型有 也可以使用)
  3. 控制台>字型 把 ttf 拖進去安裝

設定 Cmder

  1. Win + Alt + P 開啟設定畫面
  2. Cmder > Settings > General > Fonts > 下拉選單選 Anonymice PowerlineCmder

使用 lua Config

  1. 下載cmder-powerline-prompt,選擇 Clone or download > Download ZIP
  2. 開啟 Cmder 安裝檔所在位置,找到 Config 資料夾
  3. 將下載的所有 *.lua 檔放入 Config 資料夾

最後重啟 Cmder 就可以有一個美美的命令提示視窗了。
lua 也是一個程式語言,你大可開啟文字編輯器,看一下裡面作了什麼。

2018/12/02 補充

追加讓 PowerShell 在 cmder 裡面也美美的方法

步驟

  1. 下載cmder-powershell-powerlin-prompt,選擇 Clone or download > Download ZIP
  2. 解壓縮 ZIP 檔
  3. 開啟 Cmder 所在的資料夾,如下圖 > 開啟 config 資料夾
  4. 將壓縮檔內的 user_profile.ps1,取代 config 內的 user_profile.ps1
  5. 將壓縮檔內的 profile.d 資料內的所有檔案,全數貼到 config 內的 profile.d 資料夾內,如果不存在就建立一個。
  6. 開啟 config\profile.d 資料夾,重新命名 goToFolder.config.example 為 goToFolder.config
    • 這個檔案內會設定一些目錄與 alias 。
    • 使用方法,在使用 cmder 開啟 powershell 的情況下,輸入 g + alias
    • 比如說在 goToFolder.config 中,設定一組 m, C:\User\Marsen
    • 在 cmder 輸入 g m 就會自動切到 C:\User\Marsen 的路徑底下
  7. 還有很多 Alias 請自行研究。
  8. 重啟 cmder 後就會載入新的設定,變成美美的 powershell 了

參考

(fin)

[實作筆記] 用 Command Line 取得資料夾內包含特定檔案的子資料夾

情境

  • OS : Windows 10

在一個巨型的 Git Repo 當中,底下依專案分了許多專案資料夾,
參考下圖。
擁有多個專案的Repo

而今天發生了一件事情,我需要更新某幾個子專案的 POCO 的 .tt 檔,
這裡不說明 POCO 是什麼;簡單的說,有的專案會有 .tt 檔,
有的專案會沒有,而每個專案的資料夾結構又不一定相同,
所以要找出這些 .tt 是有點麻煩的,另外我的目標並不是 .tt 檔,
而是所在的專案,再用 IDE 開啟進行修改,
為此我需要列出專案資料夾

目標

用 Command Line 取得 Repo 資料夾內包含.tt 檔案的專案資料夾名稱

作法

1
2
D:\Repo\Taiwan\******.******.Repofolder
λ Get-ChildItem -Path .\ -Filter *.tt -Recurse -File -Name | ForEach-Object { $_.Split('\')[0] } | Group {$_} | select name
1
2
3
4
5
6
7
8
9
Name
----
FacebookShop
LineOrderFinish
LineOrderNotify
Mail
NMQMonitor
OrderMonitor
SyncImageToOthers

小結

總覺得寫得有點又臭又長,希望有更好的作法可以提供給我,
不限於 powershell 就算是 Linux 的語法也可以讓我參考一下。

(fin)

[踩雷筆記] BDD 跑3個失敗就停止

原文描述

Visual Studio 的 Test Explorer 在跑測試,
如果遇到失敗,會直接中斷,
比如說有 2000 個測試案例 跑到第 1300 個時測試失敗就會中斷
剩下的 700 個案例會不執行直接略過。

情境

實際狀況

並不是一跑到錯誤就會中斷測試,而是跑了 3 個失敗後中斷測試,
另外執行的測試專案,是使用 SpecRun.Runner 撰寫 Cucumber 語法跑 BDD 測試。

原因

當使用測試專案使用 SpecRun.Runner,預設 stopAfterFailures 是 3,
所以 3 個失敗就會略過。

更多

正常的測試都是會全跑完的。因為 Test Framework 標示 Test Method 的部份,
都是幫你內建 Try/Catch 攔下所有 Exception 的。

MsTest 的 [TestMethod] 或是 NUnit 的[Test](XUnit 是 [Fact]),其實就是層 Wrapper
你在方法裡面寫的內容,只要有引發 Exception 的例外,
都會被這層 Wrapper 攔下來,轉成測試結果的內容。

解決方案

測試專案根目錄應該有一份 Default.srprofile 檔,如下
stopAfterFailures 調整至適當的值(ex:500),將會顯示所有失敗測試。
本案例開啟後,實際失敗的測試有 37 個

1
<Execution stopAfterFailures="3" testThreadCount="1" testSchedulingMode="Sequential" />

參考資料

特別感謝 91、Green、余小章的協助

(fin)

[N社筆記] 敏捷路上跌倒站起來 2018/11/18

工程人員一定要分析後才能投點嗎 ?(有關 Planning 會議很長)

記得設定 TimeBox
Scrum 是經驗法則,可以拿已經作過投點的 Item 作為比較基準。
如果有未知與風險,當下不要過度鑽入細節。
你可以

  • 開一個小的 Task 用來作調研與評估
  • 開一個很大 Task 之後再用來 BreakDown
  • 如果它是高價值又高風險,就優先作它吧

如何加速會議進行?

決議與會議之外。先讓人看見問題與目標,與可能的方向。
SM 應該更關注決定的過程,而非決定的本身。

焦點討論法(如何問問題)

O↓ 事實(每個人看到的都不一樣)
↑R 感受(相同的事實不同的人不同的感受) → 往複 OR ,取得共識(有共識才透明)
Interpretive 意義與價值觀
Decisional 決定

Business DevOps

Concept to Market
ah ha! to ka ching!

迭代與增量真的有幫助嗎 ? (Agile 之前我們怎麼工作的?/Scrum 真的好嗎 ?)

看情境

Agile 適合應付變化,而目前的世界變化很大。
不要為了 Scrum 而 Scrum 。
那樣會變成盲從,看見你的需要,務實的變革。

用一個問題打敗一個問題(Ruddy 老師引導法)

找到核心的問題,然後問 「怎麼作 ?」
學員回答後,老師常常會說「這是一個方法」,然後給予回饋。

這句話的潛台詞是「還有其它的方法」。

團隊成員恐懼端到端的開發(新手 SM 與新手團隊)

  • 讓 1 個 Sprint 先完成 1 個最高優先級的 Item (初期導入 Scrum 怎麼作?)

Scrum 對團隊的要求其實蠻高的,
但是我們不需要端到端的工程師,而是團隊。
巴士因子可以是個判斷指標。
另外限制理論[求補充]告訴我們瓶頸會跑來跑去,所以要持續觀注與改善。

團隊估點從 100 → 200 (Data Team 從沒有信心 Commit 到 $#@…)

這個點數的增長不合理,而且還是以時數點數,
沒有任何東西可以讓一天變成 48 小時(喔…有人說,加班可以讓 8 小時變 16 小時)
持續觀注,如果失敗了就讓它失敗吧…
但是要失敗的有意義。

後續

11/23 團隊作的工作量實際上達到 254/3xx (Commit 3xx,完成 254。),
sprint 是成功的,但是 Velocity 是失準的。

小心得:

  1. 所謂的 Commit 如果不是對自已 Commit 起不了激勵作用,
    如果 Team 與 PO 不認為「我們是一個 Team」,而還是分 PMO 與 R&D
    那麼 Commit 就會變成畫押背鍋的儀式。
  2. 氣象報告失準怎麼辦,颱風沒來大家都開心嗎?(從 100→254,是效率大爆發,還是浮報點數了?)

Scrum 的神奇魔力

Scrum 的神奇魔力

當老闆就是 PO (PO 與 Scrum Master 出現了階級關係)

  • 找一個小 PO (作 PO 真正該作的事)

正視真正的問題是「你沒有 PO」

當 Team 在兩個作法兩難的時候

  • 作一個 Check Point,保留可以回來重新審視的機會

現實中有遇到類似的狀況,
執行的當下會列出所有的優缺點,再作選擇。
作完之後問自已,再作一次你會怎麼選擇 ?

成員本來會多作優化,跑 Scrum 之後沒在 Task 之上的事不作了。ex:重構、優化…)

在 DoD 應該可以解決這個問題,如果現況不會有問題,為什麼要作?
先作 Task 有列出來東西我覺得基本上是對的。
SM 的問題是「認為該作,但是沒有技術 Know How 所以不知道該列什麼?」
那還沒有跑 Scrum 前如何評量這個項目的效果呢?
至少在 Scrum 中我認為可以透過 Velocity 作為指標。
也可以透過 DoD 決定品質的程度(ex:)。
另外,重構不是重作,
重構應該是時時發生的,寫測試可以讓這件事被量化,
難以測試的代碼本身就有一定的壞味道(工程實踐與遇到的困難就以後再寫了…)。

Team 不該 Challenge Item Value 嗎 ?(這樣跟以前需求來就作有什麼不同?)

在 Scrum 中,
PO 觀注 Why ,觀注產品價值 ,觀注市場與策略
Team 可以決定怎麼作,與 PO 討論理解為什麼要這麼作,
並不是所謂的「需求來就作」,而把 PMO 的角色拿掉,
是為了減少隔閤,讓團隊更接近商務端。
聽起來這個情境,Team 與 PO 仍有抗拒心理…

身兼開發的 Scrum Master

Team(1+1+1+1…) x SM (0.9 or 1.1) = 生產力
讓 SM 成為乘數,而不要成為加數

小地雷:如果乘數小於 1(如何評量 SM 指數?)

業務單位的務實

業務/老闆會說,我才不管什麼開發方法,
作出來就好了(黑貓白貓能抓老鼠就是好貓…)
很務實,但是很傷害團隊…,不要有機會讓團隊聽到這種話

結束就結束了

參考

(fin)

[N社筆記] 敏捷路上跌倒站起來 2018/10 月到 11 月

2018/11/16

Bussiness Feedback

  • T 國全 ○ 國,農曆年前啟動
  • M 國的, Mxxxx 有 SKA 等級
  • H 市場,百家等待中
    原訂
  • KA MIRGRATION
  • KA 12 月上線
    順序可能會再調整…,
    市場有反應是好的,
    只是我們還沒有產品準備好(或是跨一國要準備好久好久…)

團隊

  • 抽一個 Scrum Team 的 Members 組成新的 Team ?
  • 又變成 Project Team ,呂毅:「如果只有兩個月你還會關心團隊的成長嗎 ?」

2018/11/12

  • 線上緊急狀況,周會取消、例會取消,如果一個會議可以隨時被取消,是否有必要開?
  • 真實狀況是每個人都找到一個位置,讓事情發生;務實比「跑敏捷」重要
  • 不儀式化,人性會躲避 ; 儀式化卻會導致效率低下(習慣成自然 or 麻痺)

2018/11/10

情境
團隊反應沒有時間 Code Review / 寫 Unit Test,
Pair Programming 隨你便,上級的反應說「有,最好」結果,「都沒有」

  • 要求很強的個體,卻沒有任何練習;這樣的團隊會強嗎 ?
  • 擁有很強的個體,卻沒有任何協作;這樣的團隊會強嗎 ?

2018/11/09

陶侃跟西西弗斯,兩個類似的故事

心態致勝? 還是自以為勝 ?

2018/11/06

沒有創業精神錯了嗎 ?

  • 成就感從何而來 ?

    • 把事情完成
    • 把品質作好
    • 作得快
  • 受雇階極一定要被激勵才能作好事嗎 ?

  • 雇主與雇員的本質上的不同

    • 風險
    • 獲利

2018/11/02

時間

  • 早上生病 約 10:30 到
  • 站立 到 10:50
  • 1-1 到 12:00
  • 午休 到 13:00
  • .Net Core 到 15:30
  • 看 PR 到 16:12
  • 開發 到 17:26
  • HOTFIX 討論 17:45
  • 開發 到 19:50

當會議吃掉了所有的時間…

重要性

你很重要,Why ? What ? How ? 或只是暗示你 TTL(Time to leave)

2018/11/01

planning for all day half day

不透明

  • Item 拆成 Task 的過程中釐清,可能會因細節不清、沒有權限、左右兩難、等待資源、等待許可等…導致進度緩慢耗時
  • 為了對焦開了會前會,但不包含 A Team PO,結果 Planning 後半 A Team 又增加許多項目反而失焦
  • 很簡單的事,因為複雜的系統變得沒有勇氣(信心)去執行

如何測量

本日佳句

  • 這個不能作,不然會被罵喔

Action Item

CSM 心得第二篇寫到 Sprint Backlog , 越寫看到越多實踐「怪怪的」地方…

2018/10/31

Blue Demo Day

  • Demo 失敗
  • 檢討

不透明

  • 分了 A Team / B Team ,Items 有 Dependcy ,導致工作互卡。
  • 跨國團隊很多項目需要台灣 Tech Leader 決策

Team sol:

  • 中間插入一個 Sync
    • 實務上跑起來不 Work ?
  • 大家一起站立
    • → 很花時間
  • 由某一個 Team 全部領走整群的 Item
    • → 主流程難以被切分
  • 除了站立之外,團隊也要時時 Sync
    • → 當 member focus on Item 時,對其它人尋求協助的反應可能會變慢。

Action Item

2018/10/30

為什麼無法跟團隊成員說明自已的想法,原因還是出自於不信任?
每個人(含主管)在面對什麼? 或許知道了也幫不上…
還有「主管」這種思維,不是一種文化不敏捷的味道;
表示著你還需要被管理,才知道該作什麼。

使命與遠景

  • 8 億 : 開發者會覺得與我何干。所以我們調整成…○○?
  • ○○ : 開發者會覺得?
    • A. 太棒了,激勵人心
    • B. 干我屁事
    • C. 聽起來很棒,可是…
    • D. 蛤?那是什麼,可以吃嗎?

抽樣調查

L●●:整合線上線下讓客戶更容易銷售產品,消費者有更好體驗
A●● 等 3 人:賺錢 x3
T●●:作出讓客戶達到業績的產品
A●●:改善現有線上電商的使用環境與體驗
R●●:開發良好的軟體改善客戶與使用者的體驗

小結:第一時間大部份是賺錢,或是不知道。少數第一時間說出來的,
又各不相同,每個人的目標不同,真的能有「使命感」?真的會有「成就感」?
沒有共識,何來透明?

OKR 與 DoD

  • OKR 適合用在 Sprint 嗎 ?
  • 每個 Sprint 為了討論 KR 而放棄投點值得嗎 ?
  • KR 與 DoD 是否能結合 ?

(fin)

CSM Day2-2 Daily Scrum 與 Sprint Review 與 Retrospective

課程簡介

Daily Scrum

  • 建議 Time Box 15 mins,每日同時同地進行,注意避免超時。
  • 目的是 Adapt,觀注 Item 而非 Task。
  • Scrum Master 不是會議的中心;避免讓團隊成員變成對 Scrum Master 或 PO 報告。
  • Scrum Master 應減少(避免成為中心)
    • 發言
    • 眼神接觸
  • PO 不一定需要每天參與 Daily Scrum,但參與有助於問題的釐清
  • 不討論細節,只確認現況(Reality Check)與目標(Goal)的差距,細節可會後釐清

補充

  • GROW
  • 有的人就是很話澇,曾有團隊給每個成員紅/黃牌,當有人說得太久就給牌警告 XDDD
  • Scrum Master 可以作的事
    • Does the team find the daily scrum useful ? 成員有沒有發現站立的好處 ?
    • Do they manage themselves ? 團隊是否自組織了?
    • Do they share their work ? 他們的工作是共享的嗎 ?
    • Do they come prepared ? 他們(這個 Sprint/Item/Task)準備好了嗎 ?
    • Do they report unclear ?他們的說明是否易懂?
    • Does it take too long ?是不是太耗時了?

我在 C 社是下午 5:30 執行 Daily Scrum,在 N 社是早上 10:30。
個人比較喜歡 C 社的作法,但有可能是被制約了,因為那是我第一個跑 Scrum 的團隊。

主觀的比較一下優缺點

優點 缺點
下午執行的 站立完就可以下班了。 站立講不清楚就會拖到下班,人性會選擇甘脆不講。
一早來就可以根據昨天的站立進行開發。 第二天一來忘了昨天說什麼了啦
上午執行的 站完就可以開始一天的工作。 10:30 站立就會有人 10:30 才進公司,提早來反而沒人問(但是安靜)
剛站完比較不會忘 如果有會後討論,一不小心就中午了呢(一 ω 一)

Sprint Review & Retrospective

Review

  • 展示我們完成了「什麼(What)」(面對 Stakeholder 練習別說技術語言)
  • 建立 Product Owner 與 Stakeholder 的信任
  • 取得來自 Product Owner 與 Stakeholder 的 Feedback
  • 圍繞著 Product 進行 Inspect 與 Adapt
  • Team Member 完成某些 Task 或 Item 之時,就可以找 PO 進行 View (Just In Time Review)

-

Retrospective

  • 觀注我們是「怎麼(How)」作的
  • 圍繞著 Process 進行 Inspect 與 Adapt
  • 從經驗中學習,增進溝通
  • 幫助團隊關注改善 Process
  • 關注重複發生的問題
    • 有時是組織性的問題
    • 有時是團隊的問題

「每個人的觀點都是對的;但不完全是對的。」
上面這句話,要兩句同時看才完整。

回饋

盲人摸象的啟示,沒有人錯;但組合起來就不是大象。
不論那隻大象是你的團隊、組織、公司或是這個社會。
專案開始之初,首重看見全貌看見全貌之後,確認自己在哪裡! — Ruddy Lee(李智樺) N 社敏捷教練
幸福的秘密,就是去欣賞世界上所有的奇特景觀,但不要忘記了湯匙裡的油。 — 牧羊少年奇幻之旅

Product Owner & Product Blog & Refinement

Product Owner

  • 對產品有遠景
  • 定義產品的功能,決定發佈的日期與內容
  • 對功能作排序(價值、成本、風險…etc)
  • 對產品獲利能力負責

為什麼 Scrum 的設計上只有一個 PO ,這讓下決定變得簡單;但實務上這件事不容易。
在 C 社期間與 Boss 的距離較短(公司規模小), 但是 Boss 也是喜歡透過一個 PM 來作代理人,在 N 社公司規模更大,PMO 基本上是個巨型團隊,即使是 PO 仍需要與其它部門確認、核可、討論才能決定。不論大小,在工作實務上仍然像個 PM 或是窗口與代理人。

Product Backlog

  • 要包含功能性與技術性的需求 Items
  • Items 將被拆解為工作項目(Tasks)
  • 只對高優先的項目作細部分解。
    • 價值、緊急程度需要可測量
  • 多個團隊應該共用一份 Product Backlog
  • 由商業計劃驅動,有時候你需要客戶的協助

好的 Product Backlog ,可以協助團隊 Refinement

  • Ordered
  • Detailed Appropriately
  • Dynamic
  • Estimated

Refinement

  • 最高優先的 Item 可以提前 2-3 個 Sprint 執行 Refinement
  • PO 與 Team 一起進行
  • 你可以在 Sprint 中期進行一次
  • 可以透過 User Story Mapping 進行討論

User Story 的目的是用來達溝通的,
溝通最大的目的在於分享觀點與學習,不要僅僅流於形式。

實務上 Refinement 隨時會發生,關鍵的成員討論並決策。
而且不難實現,隨時 Refinement 是第一線的開發人員很自然的思維與生態。
PO 在場的話更好,但是不是必要的。特別要記得設定 Time Box,避免討論多與實踐。

Walking Skeleton

這裡有關一些 User Story Mapping 的東西,我不清楚故不作說明,未來再作補充。
我們可以把 Y 軸的分群當作一個一個 Feature,很明顯我們不需要把每件事作到 100% ,那樣太慢而且沒有意義。

我們應該先完成 X 軸最上方一列的 Items ,要儘可能的簡單
完成一個完整可動的骨架。

它的圖形會如下;

Walking Skeleton

它不代表要被交付,它只完成了一個最簡單的閉環,能提供最基本的回饋(不需來自真正的客戶)。
當完成了 Walking Skeleton ,在這個基礎上我們可以填加其它的增量,應該在前 1~2 Sprint 就完成它。

Scrum Master 應該與 PO 一起找到 Walking Skeleton,在一個 Release 前 1/3 的時間就應該完成 Walking Skeleton。未必要 Release 它,因為它很可能是相當粗糙的,但是儘早完成可以幫助團隊降低風險,而且完成後 Value 的選擇將可視化,同時也完成了基本的 Architecture 。

當然所有部份都不完整,但是可以隨著時間逐漸完成。有些項目我們可能永遠不會作,因為不符成本。另外如果一個完整的 Walking Skeleton 無法在一個 Sprint 裡完成,請選擇 Risk 高的優先作。

估時

對每個 Item 估點數,請參考 Planning 的部份;但是點數對客戶與老闆其實沒有辦法理解,最重要轉換成時間。關鍵還是 Velocity ,這是團隊的戰鬥力,假設總共的點數估計為 50 點,團隊每個 Sprint 可以完成 10 點,團隊就需要 5 個 Sprint,以一個 Sprint 2 周來算,這樣就可以向客戶或老闆承諾 10 周的時間。

這裡的例子有點不懂,正常的 Scrum 估時只會專注在一個 Sprint,而 Product Back Log 如果沒有被估點的話,如何換算成點數?更如何向客戶或老闆提供這樣的數據?

估時很適用 Fibonacci 數列,F: 1、2、3、5 、8、13、21、…,很多的工具都有提供,主要以相對大小來比較對一件事情的看法。此外,不要因此被工具限制住了,比如說團隊無法在 8 跟 13 之間,就選擇個中間值吧,「?」也是一張重要的牌,這代表未知、混沌與風險。可以在所有的 Item 中挑選一個的當作基礎,每比較完一個項目,也再次作為比較基礎。「40」、「100」這樣的大牌也有其意義,這意味著 Item 過大,可以再作分解。

較成熟的團隊,也可以拿過去曾經估計過的 Items 作為一組「Reference Pool」,通常不需要估到很精準。

這樣的估計方法,需求的 Items 類型是不是需要很穩定 ?舉例來說,我們的產品如果包含 App、Web 與 Desktop ,團隊成員的 Skill Set 又很小,某些類型的工作只能由少數人開發,隨著 Sprint 有時候需要作 App、有時候需要作 Web;有時候兩者都需要作,這樣的估時算穩定嗎 ?
這是不是表示說 Scrum Team 所需要的團隊組成其實很高?又或是我需要將產品拆成 App、Web 不過這樣不就又回到 Component Team 了 ?那在導入 Scrum 的初期,人員的挑選要找通材,或是學習能力極強的人?

Splitting

The perfect is the enemy of the good

Task 也可以應用 Walking Skeleton 的方式切割,儘早讓整合測試發生,不用一步到位。如果有外部相依,可以考慮先用 Stubbing 的方式隔開,這可能會讓「整合測試」不完整 。

Splitting Ways

用 Walking Skeleton 的方式開發,QA 會反映沒有什麼好測試的,Sprint 的初期 QA 都在寫測項,等待 RD 完成開發,最後幾天拼命測試。如果先開發 Walking Skeleton QA 會反應這樣的測試並不完整?而 PO 會反應這樣的東西沒有商業價值。

開始第一個 Sprint

  1. 組成團隊(PO、SM、Team),這會挑戰目前的組織架構,這是難的地方。
  2. 創建最初的 Product Backlog
  3. 決定 Sprint 長短
  4. Define Value & DoD

參考

(fin)

Please enable JavaScript to view the LikeCoin. :P