敏捷宣言第四條:持續學習

我認爲敏捷式管理的最終目的就是建立學習型組織,除了在 Scrum 的活動外,我們還可以經由結對編程,也就是兩個人同時一起處理一件事情,來讓彼此在工作中學習各自的專長。另外企業内外各種技術與學習的分享,比如建立企業中的實踐社區(Community of Practice,簡稱COP),參與產業中的社區活動,都是讓企業保持學習文化的具體方法。

『這個採購案不能進行,因爲去年預算沒有編列。』

聼到類似這種説明因爲去年沒有計劃到,所以今年不能做的説辭,我都會想這個計劃到底是幫助公司,還是限制了公司的成長。

敏捷宣言第四條中說到:回應變化 重於 遵循計劃。

這句話聽起來很簡單,就是如果現實環境改變了,我們應該要更改原本的計劃去適應新的情況,而不是一廂情願的按照原定計劃往下走。但我認爲是最難做的的一條,因爲不管是人還是組織都是由慣性的,人們會習慣跟著過去的計劃往下走,直到走不下去爲止。

在敏捷的各種方法論中,Scrum 是最專注在工作模式上的,所以 Scrum 中的各種活動,都是專注在檢視現狀,然後做出相對應的調整。

在 Scrum 短衝中,每日站會、回顧會議(Review meeting)、與自省會議(Retrospective meeting),都是爲了讓團隊慢下來,停止工作,看看目前的情況是否符合預期,只是檢視和調整的目標對象不同。

在每日站會中,團隊成員檢視的是在短衝中每天的工作情況,比如說工作進度是否有遇到阻礙,團隊成員是否有需要協助的地方,然後團隊成員進行協助或是尋求其他人的協助。

每個短衝結束前回顧會議的重點在於產品本身,藉由邀請利害關係人一同來看看這個短衝所做的成果,是否符合他們的預期,有沒有功能需要修改,或是其他可以讓產品更好的點子。除了這個短衝的成品,過去產品的功能績效也應該被追蹤與討論。產品負責人在會議上搜集這些反饋後,會在產品待辦清單上反應出來,比如新增、修改、或是刪除使用者故事。換句話説,有效的回顧會議應有的影響,就是讓產品代辦清單是活的,代表經常性的變動。如果產品代辦清單上的事項長期沒有改變優先級或是内容,這是一個需要注意的警訊,代表我們可能沒有取得反饋,或反饋沒有被接納並反應出來。

自省會議我認爲是 Scrum 的精華所在,也是讓團隊工作效能提升最重要的會議。在自省會議中團隊檢視的是該短衝中的工作情況,然後決定下個短衝中所需要改善的事情。自省會議最重要,也是最難開好的會議,如果處理的不好會流於形式,大家閑聊一會就散會了。所以在實務上,Scrum Master 需要找各種方法讓團隊願意坦誠面對問題、説出建設性的建議、并且還要保持新鮮感,真的是很有挑戰。自省會議中常見的方法包含時間軸回顧、+ – = (多做、少做、維持)、肯定與感謝、慶祝等等,在 Google 上搜尋 Retrospective games 也可以找到許多自省會議的點子。自省會議中最重要的產出是改善事項,即使只有一件再小的事情都好,只要我們每個短衝都比上一個跟好一點,經過一年團隊就會脫胎換骨了。

在原來你才是絆脚石一書中提到,敏捷宣言第四條:回應變化 重於 遵循計劃,背後的價值觀是持續學習,就如同上文在 Scrum 中的活動,都是觀察現況、做出改變、檢視成效的不斷循環,這就反應到團隊的能力是在持續提升的。

我認爲敏捷式管理的最終目的就是建立學習型組織,除了在 Scrum 的活動外,我們還可以經由結對編程,也就是兩個人同時一起處理一件事情,來讓彼此在工作中學習各自的專長。另外企業内外各種技術與學習的分享,比如建立企業中的實踐社區(Community of Practice,簡稱COP),參與產業中的社區活動,都是讓企業保持學習文化的具體方法。

敏捷宣言第二條:透明化

在『在原來你才是絆脚石』中提到,敏捷宣言中第二條:可用的軟體 重於 詳盡的文件,背後代表的價值觀是透明性。對顧客和利害關係人來說,透明性就是在每個迭代都看到團隊做好的產品,然後給意見。如果我們做的符合顧客需求,那很棒我們可以繼續做其他需求。萬一做的不是顧客要的,那我們最多也是損失一個短衝的時間,而不會像傳統的開發方法,都花了好幾個月的時間開發,顧客一句話就被打掉重練。

敏捷宣言第二條提到:可用的軟體 重於 詳盡的文件,為什麽要特別把文件與軟體做比較呢?

我認爲這一條的背景是在傳統的軟體開發模式中,因爲比較像流水綫形式的分工,比如專案經理跟客戶訪談拿需求,專案經理訪談後要整理需求並撰寫需求文件,然後把需求文件交給軟體開發單位的主管,開發單位的主管再依據需求寫出技術設計文件,最後把技術開發文件交給開發人員進行程式開發,而這邊還沒有提到與其他單位所需要的文件,比如說給品質保證部門的測試案例,或是之後程式上綫前的發佈文件。

如果你能充滿耐心的看完上面的流程,就會發現依照傳統的瀑布式開發流程,在開始寫軟體之前,就會需要寫出一堆文件。而且在之後任何的需求變更或設計變更,都需要把文件更新,萬一沒有更新到,後續接手的人就會像是看天書一般,有看沒有懂。而在軟體業界混久的人,都會知道開發文件的作用不大,這主要有三個原因。

第一個原因是軟體專案時程都很急迫,在壓縮專案時程的同時,第一個被放棄掉的都是寫文件,然後把時間留給寫軟體。反正寫文件是爲了讓之後接手的人看懂,現在我顧自己都來不及了,哪有時間考慮未來的事情呢。好一點的就是寫個大概,差一點的就直接把以前的文件複製貼上,當作文件完成了。

第二個原因是軟體是相對抽象的概念,不像是蓋大樓,把藍圖畫好後看圖的人可以視覺化的看到完成的具體形狀。所以顧客只能大略的描述他想象中的情況,也許可以加上圖示 Mock up 幫助顧客想象使用的流程,但許多問題還是在實際使用的時候才會被發現。所以當專案經理在寫需求文件的時候,也沒辦法照顧到太多細節。

最後一個原因也是最根本的原因,更新軟體太容易了,改一行程式碼,也許就需要更新到好幾份文件。更新軟體的速度遠遠快過更新文件的速度,工程師就會想那我等更新程式碼多幾次後再來更新文件,省的麻煩,最後連更新文件都省了。造成很多的文件不如説是歷史記錄。

因爲以上的這些原因,在敏捷開發中提倡的做法是讓程式碼本身就是文件(Code as documentation),就是讓後續接手的人,可以光從程式碼與測試案例就知道大部分的資訊,並可以開始維護與更新程式碼。當然這是個理想中的狀態,所以宣言中説的是『詳盡的文件』而不是說『文件』。能被及時更新的關鍵文件,還是有需要的。

而爲什麽說『可用的軟體』而不直接說『軟體』呢?在傳統專案管理中,客戶大都是接近結案的時候才會看到產品的狀況,而如上面所說的軟體是個抽象的概念,客戶期待的都會跟實際做出來的差很多,然後團隊就會進入不斷修改需求的無間地獄。

俗話說:醜媳婦總得要見公婆。

所以敏捷開發中認爲與其早晚都要見公婆,不然早一點見,讓公婆給些意見和反饋,好讓我們可以儘快改善讓以後的生活更幸福。

在『在原來你才是絆脚石』中提到,敏捷宣言中第二條:可用的軟體 重於 詳盡的文件,背後代表的價值觀是透明性。對顧客和利害關係人來說,透明性就是在每個迭代都看到團隊做好的產品,然後給意見。如果我們做的符合顧客需求,那很棒我們可以繼續做其他需求。萬一做的不是顧客要的,那我們最多也是損失一個短衝的時間,而不會像傳統的開發方法,都花了好幾個月的時間開發,顧客一句話就被打掉重練。

而透明化這個價值觀的體現,在 Scrum 中則是團隊成員都彼此互相理解工作的情況。在企業中的透明化則包含對流程和制度的透明化,和可以方便地取得完成工作所需要的文件。比方説知道什麽職務可以決定交際預算的使用,或是產品的營運狀況如使用人數等等資訊。

透明化的目的是爲了讓大家工作更順暢,所以過度透明會造成資訊爆炸,比如過度會議,反而使得工作的效益降低,所以透明化拿捏要以工作為核心出發,而不是所有事情或資訊都要透明化。

別高談敏捷式管理說說如何落地(1) – 手把手打造敏捷團隊

為了更好的應對變化和增加企業的可持續性,敏捷式管理以團隊為核心來運作,並希望團隊可以:
擁有共同的目標、自行交付端到端的產品或服務、跨職能的團隊成員、穩定的團隊組成、依照 Scrum 或看板的方式來運作

『面對敏捷轉型的浪潮,你準備好了嗎?』一文中我們介紹了敏捷轉型(Agile Transformation)的由來和精神,這一切聽起來都無限美好,但具體要如何落實呢?

我們接下來分別來看看針對團隊和企業的敏捷方法,這篇文章的重點在於如何讓團隊敏捷化。

以團隊為核心的敏捷工作方法

敏捷式管理是以團隊為運作的核心,對主管的要求是成爲僕人式領導,也就是支持團隊的成功與成長,而對團隊的組成有下面幾個要求:

團隊需要有共同目標

團隊成員要有個共同的目標,通常是提供給顧客某一種產品或服務。如果團隊沒有共同的目標,那就只是一群人,不能稱之為團隊。 閱讀全文 別高談敏捷式管理說說如何落地(1) – 手把手打造敏捷團隊

團隊決定的跟我想的不一樣!- 談參與式決策的技巧

在敏捷組織中,參與式決策被大量的使用,因為現在的環境變動太快,有成員的買單和真心認同,在執行時決策的意圖才能被真正落實。參與式決策的重點,在於讓大家覺得自己的觀點和想法都有被聽到,所以流程的設計是一門學問。

最近看到一則議題是總統擔任主席時,不認同投票表決的結果要求重新表決。

先聲明非關政治,我也沒有研究此會議的流程所以沒辦法判斷對錯。但這是很好的案例,來探討一個所有主管都會遇到的問題:『團隊決定的和我想要的不一樣怎麼辦?』 閱讀全文 團隊決定的跟我想的不一樣!- 談參與式決策的技巧

五育中消失的群育 – 談如何團隊合作

今天聽實習生們四個月實習的心得分享,蠻多的共通收穫是『第一次以團隊方式把事情做出來』,即使之前在學校有專題團隊,但也是各自分工不合作,大家分派工作最後再組合起來。而在實習過程中,成員利用 Scrum 的方式,及時了解每個工作的進度,互相支援遇到的問題,密集的分享和學習,還有一群很雞婆的哥哥姐姐們噓寒問暖,都是之前沒有的體驗。

回想我們從小都聽說要『德智體群美』五育俱全,但我之前也從來不知道群育是什麼,頂多就是玩玩團康,組組球隊。學校不但不鼓勵還懲罰合作的行為(比如作弊 XD)。但不能怪老師,我想除了投票『服從多數、尊重少數』,老師也沒有受過如何教導團隊合作的訓練。

我也是在這幾年在 Scrum 中找到答案,除了快速迭代、適應變化這個優點外,我覺得 Scrum 的重點價值是以團隊為主體運作,讓團隊取得個人所沒有的特性,比如團隊比個人反脆弱、團隊比個人的視野更廣、盲點更少。但要讓團隊有這些特性不是容易的事,我認為有三個觀察點:

  1. 成員是否都能安心的表達自己想法?
  2. 成員的個性與觀點是否夠多元?
  3. 團隊有沒有好的決策模式?

閱讀全文 五育中消失的群育 – 談如何團隊合作

看歷史學敏捷 – 從人性出發

【一千年前的敏捷宣言】

很久很久以前,唐太宗李世民放了三百多個死刑犯回家,說明年秋天時回來報到再殺他們頭。到第二年時,没想到神奇的事情發生了,死刑犯竟然一個没少的回來送死。

在那個時代,没有半個人在路上病死、老死、或被野獸吃掉,真的是老天保佑。唐太宗龍心大悦,認為在自己用心良苦的教化下,連死刑犯都變好人講信用,就把三百多個犯人都大赦放生,傳為千古佳話。

直到宋朝反骨的歐陽修把這事件批評說這是從上到下串通演出的撒狗血劇情(上下交相賊),從一開始就劇透了。皇帝要聖名,放走了就算不回來也没損失。萬一真的有人跑了,長眼的官員也知道要抓幾個替死鬼充數。囚犯也不是白痴,知道皇帝要耍仁慈,回來的一定不會死,打個折大不了去邊彊種菜。

歐陽修在《縱囚論》說:『不可爲常者,其聖人之法乎?是以堯、舜、三王之治,必本於人情,不立異以爲高,不逆情以幹譽。』

超譯:『有智慧的人不會笨到去設計不能普遍適用的規定。規定要從人性出發,不是跟大家不一樣就是厲害,也不要挑戰人性來刷版面。』

簡單的說,就是敏捷宣言第一條所說的:

【個人與互動 重於 流程與工具】

只要是有權限可以制定規定的主管,都應該好好思索這句話。

 

圖片來源:https://memesuper.com/categories/view/37ee3d0030e724c6a90cd001224b8d7fa07d1569/human-nature-meme.html

Agile Tour Taichung 2017『空手、緊握、到放手 – 敏捷路上學到的5件事』台中敏捷旅程分享心得

收到 Max Lai 關於敏捷旅程台中的 Keynote 分享邀請時,我真的蠻高興的。第一因為出生於台中,對台中總是有一份特殊的情感。第二是分享的主題是組織轉型,剛剛好跟十月在新加坡敏捷年會分享的主軸相同,只要英翻中就好,順便一魚多吃

根據我在新加坡年會的經驗,原本預計講個40分鐘,但30分鐘就說完了,幸好因為談的是大家都會有的痛點和共同經歷,所以發問很熱烈,十多個提問把時間完美的佔到45分準時結束,大家都以為我是故意留很多時間提問的XD。比預期時間快的原因是上臺後的緊張語速加快,而且每次準備的故事都會東漏西漏,時間一定會快一些。而台中的分享時間是一個小時,讓我有點傷腦筋,要如何補足剩下的20分鐘又可以彌補我口條不好的缺點呢。 閱讀全文 Agile Tour Taichung 2017『空手、緊握、到放手 – 敏捷路上學到的5件事』台中敏捷旅程分享心得

螞蟻、好自在、情欲流動 – 新加坡敏捷年會參與心得 Agile Singapore Conference 2016

新加坡敏捷大會也到『守破離』中的『離』了,在年會中已經沒人談 Scrum 或 Agile Mindset,主要談的是團隊的協作和怎樣的技術能力才能快速產生價值。

團隊協作談的是運用引導薩提爾模式、與認知心理學,來增加團隊溝通的效率。技術面主要是 Microservice,其他 Technical Practice 如 Automation Test,Refactor 和 Continous Delivery 已經是老生常談。雖然聽了很多,但要實做還是難度很高,根據 Agile Fluency,需要3-24個月的時間,團隊的技術能力才會跟上市場需要的發佈節奏,人生苦短啊。

關鍵字:Microserivce, Event Bus, Anti-Fragile, Facilitation, Safety, Collaboration 閱讀全文 螞蟻、好自在、情欲流動 – 新加坡敏捷年會參與心得 Agile Singapore Conference 2016

找出組織無法變敏捷的阻礙 – 團隊共創法實做

14441077_10154328911255751_5785789802293353355_n當敏捷遇上引導的談話發生後,David, Abraham 和 Vicky 就進入了籌備模式,花了不少時間研究如何設計流程,才能讓參與的夥伴可以在表訂時間2.5個小時內得出共識。

當場 Vicky 的引導創造了讓大家安全說話的環境,我自己感覺到大家發言到欲罷不能,如沒有受限於時間因素,命名出來的群組名字有機會更直指核心。由於參加的夥伴來自個個不同組織,有開發團隊、ScrumMaster、Product Owner、主管等等角色,產出的結果應該蠻有代表性。

結論是推行敏捷會遇到以下的阻礙:

1. 現在好好的幹嘛改變
2. 團隊不知道如何建立信任
3. 對敏捷的導入沒有共識
4. (主管/ScrumMaster) 的引導技巧不夠
5. 團隊溝通不夠有效
6. 高層的信任和支持不夠
7. 傳統的績效管理不適用
8. 不知道如何用 Agile 處理(範圍時程)硬梆梆的專案
9. 工程和領域的技能不夠
10. (因資源有限)角色重疊混淆
11. (不知道如何)讓member 感受到結果的價值
12. 缺乏跨界交流的機會 閱讀全文 找出組織無法變敏捷的阻礙 – 團隊共創法實做

敏捷X引導 – 讓Scrum團隊自組織的具體方法

在開始時跑 Scrum 時就自己腦補,所謂引導就是『引誘+誤導』團隊乖乖按照自己的既定方向走 XD。所以去讀了些心理暗示與影響力的書,在會議前先設想期待的結果,設下陷阱讓團隊講出自己的答案。

大多數時候過程都可以按照自己的劇本發生,而當自己預期的答案沒有出來時,就用誘導式問題(Leading Questions)讓團隊就範,讓自己的答案從團隊成員的嘴巴中說出來。如果爭議太大的議題,就先埋好暗樁,適時的跳出來帶一下風向。

(English version published on T.8ytes 英文版發表於 T.8ytes)

在我2014年剛剛開始接觸 Scrum 的時候,覺得 ScrumMaster 是個神一般的存在,不但要幫助團隊了解 Scrum 架構與敏捷精神、支持團隊提升技術能力 、教導團隊如何自組織、移除團隊成長的障礙、協助 Product Owner 產出價值最大的化的 Product Backlog、解決組織中影響團隊運行的阻礙,更扯的是他跟團隊是平行單位,完全沒有叫人做事的權力,乾脆找超人還比較容易 XD

以上職責要一個人全部做到非常挑戰,但一個個分開個別來看,至少都還看得懂要做些什麼。但其中最令我困惑的是提到 ScrumMaster 要引導團隊的部分,而且還特別強調這部分的重要性,但引導(Facilitate)到底是什麼意思呢? 閱讀全文 敏捷X引導 – 讓Scrum團隊自組織的具體方法