l

2014年7月31日 星期四

Kanban沒有Iteration,好棒…嗎?

July 30 12:47~13:55

image

 

Teddy有個朋友,去年剛接觸到Kanban,覺得「如獲至寶」…

朋友:哇賽,Kanban沒有規定固定時間的開發週期(iteration),從工作流(flow)的角度來管理開發流程,真的是太棒了。

Teddy:借問一下,iteration是哪裡得罪你了?

朋友:一開始我覺得IID(iterative and incremental)的開發方式很好,尤其是短時間的iteration(兩周),讓團隊成員可以在限定時間內專注完成工作。

Teddy:那現在怎麼又覺得不好?

朋友:因為我們的需求經常在變。

Teddy:很好啊,敏捷開發本來就是要應付需求變化。

朋友:可是有時候我們在一個iteration還沒結束的時候,需求又變了。之前我想用Scrum,但是Scrum希望在一個sprint之內,不要隨便變動已經規劃好的需求。這一點讓我很痛苦。

***

幾個月之後…

Teddy:你改用Kanban之後,原本需求變動的問題有解決了嗎…

朋友:怎麼說,以前Scrum希望在sprint進行時儘量不要改需求,比較會強迫PO去思考接下來要做什麼,不會隨隨便便亂丟工作給開發人員。改用Kanban之後,沒有PO這個角色,負責訂定需求的人經常隨隨便便就加工作,等到工作被施工之後,開發人員才到處找人問這個工作到底是要做什麼。雖然拿掉iteration好像變彈性了,但是結果拉長了每件工作的完成時間,工作一直拖延,好像有點又回到以前waterfall的情況。

Teddy:Kanban不是說要藉由視覺化的工作流程,來觀察工作流卡住的地方,然後尋求改善嗎?

朋友:講是這樣講,但是大家工作各做各的,忙的人還是很忙,閒的人還是很閒,卡住的人還是卡住。

Teddy:不是說要想辦法減少lead time嗎?

朋友:Kanban不要求估算活動,後來我們也都沒有估算工作大小,所以對於什麼是「合理的lead time」,也很難判斷。每件開發工作,都是看開發人員實際上做多就,就是多久。問他們有沒有問題,大家都說沒有….

朋友:所以我們最近打算回復到過去讓PM來估算每一件工作完成的時間,以此來作為lead time的參考值,用來稽核開發人員有沒有偷懶。

***

Iteration本身代表某種「節奏」,Teddy認為有節奏這件事對於軟體開發是好事。在Scrum中,至少有三中不同的iteration:

  • Sprint:2~4周,這也是Scrum最重要的iteration,許多活動,像是sprint planning meeting、sprint review、sprint retrospective,分別伴隨著Sprint的開始與結束進行。
  • Daily Scrum:24小時發生一次。
  • Product Backlog Refinement Workshop:有兩種方式,一種是在每個Sprint進行到約一半的時候,發生一次。另一種是有需要的時候隨時發生(事件驅動)。如果採用後者,這個活動本身不是iteration-based,就比較像是flow-based或是event-based。

Scrum的iteration,比較僵化的地方,可能在於許多活動(各種會議與開發活動)伴隨著(綁定)iteration而發生,而不是各自有各自的發生時間。如果sprint planning meeting、sprint review、sprint retrospective、daily Scrum、Product Backlog Refinement Workshop這些會議,可以和開發活動脫鉤,各自有各自發生的週期或是節奏,針對某些專案,運作起來會比較有彈性一些。

Kanban沒有iteration,但為了維持工作順暢的流動,在Kanban中有「節奏」(cadence)的概念。Cadence是定期間隔所發生一次的事件,這個「定期間隔」可以是固定的時間,例如2周,也可以是連續、事件驅動。例如,一周重新調整一次待辦需求的優先權、平均18天可以完成一個功能、1個月針對流程改善開一次檢討會議、2周把完成功能能正式對外釋出、只要功能完成隨時招開review會議等。

***

Iteration本身只是「一個固定長短的時間盒(time box)」,拿掉iteration只是讓各種軟體開發活動與單一(主要的)iteration脫鉤,不等於不需要估算、討論需求、排定需求優先權、review、retrospective。軟體開發原本該做的事,並不會因為你用Scrum或是Kanban而消失。Teddy常說的一句話:「能量不滅」,該做的基本功沒做,有一天它會在不預期的地方,跑出來咬你一口挑眉質疑

***

友藏內心獨白:不同活動有各自的節奏,這也算是separation of concern的應用。

2014年7月30日 星期三

心有戚戚焉

July 28 10:41~12:16

螢幕截圖 2014-07-28 12.10.16

 

在上周末(7/26~7/27)「第十梯次Scrum敏捷方法實作班」中,學員A告訴Teddy…

學員A:我來自於遊戲業,我們曾經在公司內試過Scrum,但是試了一陣子,整個工作看板(task board)都掉下來了也沒人發現,最後結果當然是失敗收場。所以想來上課,看看「正常版的Scrum」應該是個什麼樣子。

聽完學員A的「悲慘經驗」,Teddy點頭如搗蒜,非常能夠感同身受。Teddy第一次接觸Scrum專案,是在學校念書,即將畢業的那一年。有幾個學弟被指派用Scrum來進行軟體開發,最後的結果,雖然工作看板沒有整個掉下來那麼慘,不過工作看板上面黏貼著的黃色便利貼,卻像是秋天的落葉一樣,早已掉落滿地無人理挑眉質疑

那種一開始滿懷希望,最後卻以落寞與失望結尾的心情,Teddy懂。

***

「第十梯次Scrum敏捷方法實作班」第二天課程結束之後,另一位學員B留下來聊天…

學員B:(看著書架)我可以直接跟你買這本《笑談軟體工程:例外處理設計的逆襲》嗎?

螢幕截圖 2014-07-28 12.14.34

 

Teddy:當然可以啊,順便幫你簽名。

學員B:(繼續看著書架)Larman的這本《Applying UML and Patterns》,書中提到要建domain model,但是Martin的《Agile Software Development》這本書就沒有提到…

Teddy:Larman的《Applying UML and Patterns》是以前我唸書的時候,OOAD(物件導向分析與設計)課程的教科書,也就是我上Scrum課程的時候提到當年我當助教的那門課。

Teddy:Larman的書從問題分析開始,透過一連串「問題轉換」的過程,把軟體系統設計、開發出來,所以會提到要建立domain model。Martin的這本書,正如書的副標題所提到的,主要在介紹敏捷開發的「principles、patterns、practices」(原則、模式、實務做法)。兩本書的重點不一樣。

學員B:還有像是Fowler的《Refactoring》,書的內容好像都看得懂,但實際應用起來總覺得有點困難。

Teddy:是啊…

***

每一本軟體開發的書,各自成為一個體系,單獨去看都有意義。但是這些書最後運用的對象,還是在軟體開發身上,所以應該把它們放在軟體開發的流程,或是value stream(價值流)上面來評估與取捨,應用起來比較不會走火入魔或是見樹不見林。

這兩位學員所遇到的情況,Teddy也都遭遇過,所以非常能夠體會他們的處境。這也是Teddy在設計課程的時候,所希望解決的問題。Teddy曾經說過,一個(敏捷)軟體開發團隊,應該具備以下三種基本技能。

螢幕截圖 2014-07-28 11.38.20

 

  • 設計與實作能力:上面提到的《Applying UML and Patterns》、《Agile Software Development》、《Refactoring》這幾本書,就屬於這一類。
  • 實務做法:IDE、版控系統、持續整合,這些屬於這一類。有些「設計與實作能力」的內容,像是《Refactoring》,也可以看成是實務做法被分在這一類(屬於那一類其實不是那麼重要挑眉質疑)。
  • 流程:這一類包含流程框架、流程、流程改善方法、所以像是Scrum、Lean、Kanban等,就屬於這一類。

以下是泰迪軟體所規劃的訓練課程地圖,實線外框的課程是已經開課或即將開課的課程,虛線的課程是未來預計開設的課程。開發課程是很花時間與精力的工作,以Teddy一年完成1~2門新課程的速度來看,下圖中的全部課程要設計完成,在最順利的情況下,大概還需要3年的時間。希望泰迪軟體可以撐到Teddy把圖中的課程都開發完成啊不要告訴別人

螢幕截圖 2014-07-28 12.02.52

***

友藏內心獨白:不能只為了賺錢而隨便開課啊。

2014年7月29日 星期二

腸胃復健科

July 28 10:14~10:34

image

 

病人:我想掛號。

護士:您要掛哪一科?

病人:我肚子不太舒服,拉了三天。而且年紀大了,肩膀痛的老毛病又犯了。

護士:我幫您掛腸胃科跟復健科好嗎?

病人:蛤,要掛兩科喔。可以幫我掛「腸胃復健科」嗎?這樣我看一次醫生就好了。

護士:欸…醫院沒有「腸胃復健科」這種科別耶。

病人:你們醫院太小了啦,我要去大醫院看。

護士:好吧,請慢走。

***

鄉民:我想詢問顧問服務。

軟體醫生:您需要怎樣的顧問服務?

鄉民:我們打算用敏捷方法來開發一個雲端系統,。

軟體醫生:那你們需要一位敏捷方法專家與雲端專家。

鄉民:蛤,需要兩種顧問喔。可以幫我找一位「敏捷雲端顧問」嗎?這樣我們只要付一份顧問費就好了。

軟體醫生:欸…我們沒有「敏捷雲端」這種顧問。

鄉民:你們的顧問太遜了啦,我要去找大公司。

軟體醫生:謝謝,請慢走。

***

友藏內心獨白:可能需要找怪醫黑傑克來看病吧挑眉質疑

2014年7月28日 星期一

[工商服務] 2014年下半年課程異動與8月份「例外處理設計與重構實作班」招生

July 27 20:45~22:00

螢幕截圖 2014-07-27 21.57.01螢幕截圖 2014-07-27 21.53.54螢幕截圖 2014-07-27 21.54.13螢幕截圖 2014-07-27 21.54.46螢幕截圖 2014-07-27 21.55.05螢幕截圖 2014-07-27 21.55.39

 

課程意願調查

今天(7/27)上完「第十梯次Scrum敏捷方法實作班」,有學員問Teddy…

學員:「8月份的例外處理課程和12月的軟體重構,會開班嗎?」

Teddy:你對這兩門課有興趣嗎?

學員:對啊,我已經把這兩個時段預先空下來了。

Teddy:呵呵,我以為這種冷門的課沒什麼人有興趣。只要有10個人報名我就會開課,但是說真的每次課程會不會開成功我也不知道不要告訴別人

和Erica討論之後,決定建一個「泰迪軟體最新課程消息通知」清單,對泰迪軟體課程有興趣的朋友,可以填寫該表單,待課程開始招生時,泰迪軟體會主動通知學員。

***

新課程:Kanban方法與精實開發

有很多朋友陸續問Teddy:「Kanban課程何時會開?」忙完搬家的事情之後,Teddy重新調整了泰迪軟體下半年公開班課表,新增「Kanban方法與精實開發實作班」課程,開課時間在「9月27、28(六、日)」。原本該時段安排的「軟體重構入門實作班」,由於詢問度沒有Kanban來得高,所以把優先權往後調整,改到「12月06、07、13(六、日、六)」。本課程預計8月初開始開放報名。

***

8月份例外處理設計與重構實作班招生中

8月23、24日舉辦的「例外處理設計與重構實作班」開放報名,報名網頁在此。8/13 前報名並完成繳費享早年優惠,並加贈好禮二選一:「笑談軟體工程:例外處理設計的逆襲」或「例外處理設計馬克杯」

***

最後,依據開課時間先後列出泰迪軟體下半年開課時間表:

  • 例外處理設計與重構實作班
  • 敏捷體驗設計工作坊
  • 單元測試與持續整合實作班

    • 09月13、14(六、日)。
  • Kanban方法與精實開發實作班
    • 09月27、28(六、日)。
  • Design Patterns這樣學就會了--入門實作班
    • 10月18、19、25(六、日、六)。
  • Design Patterns這樣學就會了--進階實作班
    • 11月01、02、08(六、日、六)
  • Scrum敏捷方法實作班
    • 11月29、30(六、日)。
  • 軟體重構入門實作班
    • 12月06、07、13(六、日、六)

***

友藏內心獨白:請幫Refactoring拉票XD。

2014年7月27日 星期日

2014京都考察之旅Day3-D記錯時間之夜訪六角亭前的晚餐 & 京都車站

July 12 23:07~23:46

離開舊京都府廳,晚上打算去六角亭看夜櫻。搭地鐵來到六角亭附近,大約16:40。時間還早,有點累肚子也餓了,先在附近找的地方吃晚餐,等18:00再去六角亭。

螢幕截圖 2014-07-12 23.11.30螢幕截圖 2014-07-12 23.12.21螢幕截圖 2014-07-12 23.12.00螢幕截圖 2014-07-12 23.11.41螢幕截圖 2014-07-12 23.12.40螢幕截圖 2014-07-12 23.12.49螢幕截圖 2014-07-12 23.12.58螢幕截圖 2014-07-12 23.13.24螢幕截圖 2014-07-12 23.13.35

 

繞了快30分鐘,才找到一家在2樓,看起來還可以的店。東西還不錯吃,一份日幣1500,飲料冰紅茶日幣300元。

螢幕截圖 2014-07-12 23.19.24螢幕截圖 2014-07-12 23.19.16螢幕截圖 2014-07-12 23.18.05螢幕截圖 2014-07-12 23.17.56螢幕截圖 2014-07-12 23.18.41螢幕截圖 2014-07-12 23.18.50

***

吃到18:00離開餐廳走往附近的六角亭。耶,奇怪,怎麼沒開?繞到另外一邊,是一家星巴克,咖啡廳背面有一大片透明玻璃,玻璃的另一頭就是六角亭。的確沒開,「都斯跌?」啊,原來4月11~4月13才開放,今天是4月5號,記錯時間了。還好這次待的時間比較久,過幾天再來吧挑眉質疑

螢幕截圖 2014-07-12 23.22.16螢幕截圖 2014-07-12 23.22.24螢幕截圖 2014-07-12 23.22.34螢幕截圖 2014-07-12 23.22.55螢幕截圖 2014-07-12 23.24.11螢幕截圖 2014-07-12 23.23.06

***

六角堂沒開,臨時決定到京都車站逛逛。先到拉麵小路看看,改天再來吃拉麵。還有Skyway也要例行性的去走一走。

螢幕截圖 2014-07-12 23.24.11螢幕截圖 2014-07-12 23.31.54螢幕截圖 2014-07-12 23.32.15螢幕截圖 2014-07-12 23.32.25螢幕截圖 2014-07-12 23.32.42螢幕截圖 2014-07-12 23.32.52螢幕截圖 2014-07-12 23.33.01螢幕截圖 2014-07-12 23.33.11螢幕截圖 2014-07-12 23.33.39螢幕截圖 2014-07-12 23.33.55螢幕截圖 2014-07-12 23.34.15螢幕截圖 2014-07-12 23.34.30螢幕截圖 2014-07-12 23.34.43螢幕截圖 2014-07-12 23.34.52螢幕截圖 2014-07-12 23.35.14螢幕截圖 2014-07-12 23.35.30螢幕截圖 2014-07-12 23.35.43螢幕截圖 2014-07-12 23.37.13

 

逛著、逛著,意外看到一個京都車站的樂高積木模型,花了720小時才拼成,好壯觀。算是此行額外的小驚喜很棒

螢幕截圖 2014-07-12 23.36.04螢幕截圖 2014-07-12 23.36.16螢幕截圖 2014-07-12 23.36.30螢幕截圖 2014-07-12 23.36.42螢幕截圖 2014-07-12 23.36.53螢幕截圖 2014-07-12 23.42.36螢幕截圖 2014-07-12 23.42.48螢幕截圖 2014-07-12 23.43.03螢幕截圖 2014-07-12 23.43.15

***

友藏內心獨白:六角亭的廣告在地鐵站看到好幾次,對於開放時間居然都視而不見嚎啕大哭