這幾年在工作上,除了寫程式及其他本業之外,很多的時間其實花在專案的時間管理及資源分配。
專案管理不是只有Project Manager一個人的工作,所有參與的團隊都必須合作及分擔才能成立,在現今的工作環境中已是一個重要的常態。
有鑑於此,今天跟大家來聊一聊我工作中的日常 - Scrum。
Scrum是專案管理(Project Management)中的一門作法。它的名字來自於美式橄欖球的一種陣形。
大家應該都做過某種Project,不管大或小。根據國際專案管理學會(PMI),Project的定義是:期間內創造出某種產品、服務或價值的行動。
"Temporary endeavor undertaken to create a unique product, service or result"
只要符合上述的定義都可以稱之為Project。除了工作,個人方面像是計畫旅遊 、購屋、辦活動、建立個人網站,都可以稱之為Project。
既然跟我們生活習習相關,那應該值得我們探討一下,也許有些方法,可以增進效率或改善體驗吧😀?
先說,就像各種學說理論都會發明一些有點難懂的專有名詞...Scrum也不例外😣。這些名詞我們先大概知道就好,畢竟重點還是在認識整個流程,以及如何應用在我們的工作或生活中。
Agile(敏捷)
談Scrum之前,先來看一下最近幾年常常聽到大家說的Agile(敏捷)。
Agile其實比較是一種價值觀,或者說是心法。
核心價值是在於以漸進式(incremental)的方式提供價值給客戶,並接受需求在專案過程中的改變是一個現實,講求持續學習改進並擁抱改變的態度。
舉個例來說,就像是吃鐵板燒一樣。
廚師炒好一盤豆芽菜就先給客人吃,讓客人不會餓著肚子等。如果客人吃到一半覺得他主菜想吃鱈魚排而不是牛排,可能還來的及做變更。如果是吃套餐定食的話,就得等到所有的菜色都準備好了才能上桌,中間想做變更大概也很困難,客人點單一多,搞不好還得等很久。
聽起來很合理吧?
相較於傳統的專案作法偏向先將所有事情規劃好,然後按照計劃實行,最後再交貨(稱為Waterfall),Agile認為要著重在小部分的區間,有彈性及持續性的提供價值。
圖片來源:https://hygger.io/guides/agile/agile-vs-waterfall/
問題是,心法這一類的東西往往是說起來容易,做起來難。尤其是要改變人的想法這一件事是有相當高的難度(想想你如何說服長輩接受新觀念)。
但是,要改變「作法」可能相較簡單一點。今天政府立定了法案要求你出門一定要戴口罩,即便你心裡覺得戴口罩沒用,因為怕被罰錢,大部分的人還是會乖乖戴口罩。
Scrum就是幫助大家能夠實行Agile理念的「作法」,進而讓人習慣用Agile的方式來思考。
那,到底什麼是Scrum?
Scrum基本上是一個框架(Framework)。
框架,就像是一個平台具有一定的SOP,大家按照規矩來辦事。
Scrum的基礎來自於剛剛提到的Agile,意即持續性的學習以及對於改變(Change)快速做出應對。由於這一點相當符合現今軟體開發的需求,造就Scrum在該領域中的主流地位。當然,這並不代表Scrum只能用在於軟體開發。
所以接下來,我們就以下的故事例來看一下簡化版的Scrum是怎麼運作的吧。紅色字體的部分將會帶入Scrum的用語。(免責聲明:為了讓例子貼近生活化,當中的應用可能跟一般在軟體開發的情況有不同)
故事例
假設我今天想要跟幾個朋友加盟一家手搖飲料店。
我與友人們的任務分擔如下:
友人P:曾經開過Pizza店,對於開店有經驗,知道我們需要做哪些事情。
友人S:當過專業經理人,擅長召開會議及流程輔助。
我與友人D:充滿熱情的創業執行者。
我們把友人P稱作 Product Owner。
我們把友人S稱作為 Scrum Master。
我跟友人D稱作為 Development Team。
一開始,友人P列出了我們需要做的主要課題,像是:
我們必須要決定加盟品牌...
我們必須要租個店面...
我們必須要辦銀行貸款...
我們必須設備投資及廠商接洽...
我們必須確保原料供應...
我們必須要做店面裝潢...
我們必須做好法令登記...
我們必須徵人...
我們必須準備員工訓練...
...
這些課題稱之為 User Story。
看著這一堆課題,我與友人D更詳細的列出了工作項目 (task),例如:
決定加盟品牌
品牌以及產品研究並鎖定五家目標品牌
聯繫各品牌取得訊息(如加盟金,利潤分配)
...
租店面
決定地點
尋找適合待租店面
實地觀察及聯絡屋主
...
銀行貸款
申請表及相關資料
準備商業計畫書
選擇銀行
...
...
我們把這個清單叫做 Product Backlog。
接著,友人S說要來決定接下來兩個禮拜的工作事項,並希望大家估計每一項工作可能的花費時間。
我們把這個兩個禮拜的期間叫做 Sprint。
於是我們就開了一個會,討論了一下後決定在這兩個禮拜做下列幾個項目:
決定加盟品牌
...
租店面
...
這個會議叫做 Sprint Planning。
決定在該Sprint要做的項目叫做 Sprint Backlog。
決定好了之後,大家就開始上工了。
接下來的每一天早上,友人S都把大家聚在一起,利用15分鐘的時間快速的讓大家講一下工作的進度。
譬如說,第二天我跟大家說,我已經鎖定幾家不錯的連鎖品牌,並且著手進一步的分析。友人D說,他還在評估開店地點要在大學城還是商業區。
這樣每天的短會議我們叫做 Daily Scrum。
就這樣很快的,還有兩天就到兩個禮拜了。
友人S找大家開了一個檢討會議,討論我們之前決定的工作內容是否有達到進度,是否有哪個環節不順利或需要改進等等。
這樣的會議稱作為 Sprint Review。
同時,友人S加碼一個會議來討論團隊的合作狀況,以及大家在這樣的流程下是否工作順利。
這樣的會議稱作為 Sprint Retrospective。
隔天,大家再度聚在一起,討論接下來的兩個禮拜的工作事項...
這裡回到 Sprint Planning 的階段,並重複接下來的步驟。
就這樣,10個禮拜過去了,我們的手搖飲料店終於開張了~🎉🎉🎉
~故事結束
OK,上面的例子當然是過分的簡單化了😅,但是我們其實已經跑過了Scrum的基本架構。
現在有個基本的認識之後,再回頭來看看這些名詞,相信大家就能夠更能體會Scrum的做法。
Scrum Team
一個團隊最重要的就是人。就像RPG的遊戲,每個人在Scrum team會擔任某種角色,主要為:
Product Owner:通常是代表Business或是用戶端的人,負責提出產品需求以及代辦事項(story)。當然這個人必須是懂產品且掌握大方向的人。
Scrum Master:Scrum特有的角色。負責引導團隊在Scrum的流程下運作,協助資源分配以及鼓舞成員。正如其名Master,這個人需要很懂Scrum這個框架以及理念。
Team members:主要的執行人員。一般如果在軟體開發的Project的話就是Development Team。
Scrum構造
Scrum的核心,是一個叫做Sprint的概念🏃🏻♀️。
Sprint是一個工作週期,通常是兩個禮拜。團隊一起設定每個Sprint要達到的目標或是成果(Deliverable),並制定工作事項。
Scrum認為,每一個Sprint中,應該具備以下的項目(這些項目又稱為Ceremony):
Sprint Planning:計畫該Sprint的工作事項。可更細分為:
Backlog Grooming/Refinement:確認待辦事項是否還正確反映目標,以及是否已被排定重要性(prioritization)。
Actual Planning:實際的計畫,確定欲達成的目標並將適當的Backlog事項移至Sprint。
Create Action Items:製作細項的工作清單。並清楚定義何謂完成(Done Definition)。
Daily Scrum:每天早上約15分鐘的快速站立會議(又稱Daily Standup,站著開會- 就像日本的立食的感覺),立即反應每天的進度及確認事項。
Sprint Reviews:在Sprint快結束時,針對產品(Deliverable)回顧整個Sprint的進行以及討論需改進的地方以達到客戶的需求。
Sprint Retrospectives:類似Sprint Review,但是針對不是產品而是團隊。討論如何讓整個團隊更有效率的來達到目標。
Scrum透過重複每一個Sprint來提供漸進式(Increment)的價值、服務、或是產品以滿足客人的需求。每一個Sprint過程中都提供團隊機會去學習、改善、或根據情況迅速進行調整。
這個,就是Scrum最重要的中心思想及作法。
結論
今天跟大家粗略的介紹了一下Scrum的核心理念以及它的作法。希望能對有興趣的朋友有點幫助。
話說,使用Scrum是要付出一點代價(Overhead)的。在上面的例子中,大家應該有注意到,Scrum所帶來的會議數量,以及某種程度的密集管理。總的而言,所有人花在開會上的時間可能遠遠超過傳統的專案作法(個人經驗)。
也因此,Scrum不見得適用於所有的Project。這部分得自己與團隊好好評估。
話說,我個人是蠻喜歡Scrum的基本理念。雖然Scrum的組成是以團隊(Scrum team)為前提,但是核心觀念還是可以適用在個人(Psesonal Scrum)。
大家或許聽過這句話:如果你每天進步1%,一年下來你會進步37倍。
“If you start out with $100 at the beginning of the year and you were able to increase what you have by 1% every single day, at the end of the year, you would have $3,778.34 = $100 * (1 + 1%) ^ 365. That is 37.78x what you had at the beginning of the year. Get that 1% every single day! "
- Zappos
譬如說我們把目前的職涯看作是一個(中長期)Project,當我們用Scrum的方式來思考的話,在訂定大方向的目標之後(譬如說,你眼中的role model,i.e., 你想變成的樣子),接下來就是思考我們該做的事情,譬如:
自我學習:像是學習Python😎
充實社交網絡:像是參加社群活動,充實LinkedIn
建立個人品牌:像是寫寫部落格
接著將過程切分成很多個小階段(Sprint的概念)。
在每個小階段中,我們計畫該做的事情。
透過反覆的(計畫 -> 執行 -> 產出 -> 檢討 -> 改進)),每一個Sprint產出一些可利用的價值並更接近最終目標。(不要忘了對於每個action item,定義何謂完成(Done Definition),並固定檢驗產出)
在數個Sprint之後,累積的產出一定會是相當的驚人的👍🏻 。
或許,有些人早已在不知不覺中已經實踐Scrum這樣的原子作法,那非常好。Scrum提供的是一個框架,或者是一個契機,讓我們重新省思並有意識的去執行🌸。
Opmerkingen