l

2014年1月31日 星期五

第八梯次Scrum敏捷方法實作班之Q&A(上)

Jan. 28 09:31~22:28

螢幕快照 2014-01-28 下午5.38.18

 

今天是大年初一,祝福鄉民們馬年找到伯樂。

今年1月11~12日舉辦的「第八梯次Scrum敏捷方法實作班」,學員問了非常多的問題,有些問題還蠻有趣的,利用新年時間來分享一下這些問題。

學員:Taskboard可否用電子系統取代?

Teddy:可以使用電子系統與實體看板並行,但不建議用電子系統取代實體看板。雖然說「老佛爺是要放在心裡面尊重的」,但是三不五時不把「老佛爺」的名號亮出來,誰有知道你真的有把「老佛爺」放在心上。實體看板的好處是可以讓資訊一目了然,電子看板雖然感覺起來比較「高科技」,可以「保存資料」、「分享給不同位置的人觀看」,但這應該算是「次要目的」,而非「看板」的「主要目的」。除非你的團隊是完全分散式的團隊,所有的人都不在同一個地點工作,否則不應該完全捨棄實體看板。

科學人雜誌有一篇文章〈大腦偏愛紙本書〉,裡面提到:「人們閱讀紙本書時,可能會在腦中建立如地形般的心智地圖,比起使用螢幕閱讀,更容易記住內容、提升理解力。」看板和書的首要重點,都是「讓人容易理解某項資訊」,如果只是為了「容易攜帶」、「容易分享」、「容易保存」而犧牲了原本「容易理解」的目的,這樣的決定是否值得就需要團隊自行判斷。

***

學員:案子做到後面工作量變少,可以改變sprint長度嗎?

Teddy:這個問題有點奇怪,如果工作量變少,應該是「提早將產品釋出」,為什麼要改變sprint長度?如果是一個新的Scrum團隊,還不了解自己適合怎樣的sprint長度,此時可以在2~4周內嘗試不同的sprint長度。但是一旦找到合適的步調,Teddy不建議變動sprint長度。

***

學員:Story和task定好之後(sprint planning meeting之後),遇到外部急需的功能,要馬上插入,該怎麼辦?

Teddy:沒怎麼辦,就讓它「插入」啊。按照Scrum的說法,sprint進行中不應該調整sprint backlog,但是實務上如果真的有非常、非常緊急的事情,還是應該要優先處理。重點在於,把這種突發事件當成「例外」,偶一為之還可接受。但是,如果「例外」變成「常態」,那就要檢討為什麼會有這樣的現象,是哪個環節出了問題。例如,如果是因為bug太多,導致「救火」的工作比「種田」的工作還要多,從「碼農」變成了「消防隊員」,那就要擬定改善品質計畫。

***

友藏內心獨白:Scrum只是一種做事的方法。

2014年1月30日 星期四

紀律

Jan. 28 08:35~09:28

image

 

今天是除夕,先祝福鄉民們農曆新年快樂,來年更加進步。

「Scrum敏捷方法實作班」的學員問了一個問題。

學員:在會議中,不活絡的成員一邊聽,一邊忙著完成自己手邊的工作,偶爾才加入討論。該怎麼辦?

很簡單,一句話:「轟出去」

以上情況,Teddy真的遇過,所以除了sprint review以外,基本上所有的會議Teddy是不建議團隊成員攜帶電腦,當然玩智慧型手機也要禁止。鄉民們可能覺得把人轟出去好像太嚴重了,請想像一下這個情境:「在作戰會議中,有人在自顧自的聊天,有人在打電腦處理自己個人的事物,有的人在玩手機。」請問,這個仗,還要不要打?

專案就跟打仗一樣,沒有個人的成敗,只有專案的成敗。在Scrum會議中,例如sprint planning meeting,自顧自地完成「自己手邊工作」的成員,傳遞出的訊息就是:「我的事情比較重要」或是「我不在乎你們在討論什麼」。這種人,要是在古代早就「拖出帳外斬首」,轟出去算是便宜他了挑眉質疑

***

分析一下這個現象,團隊中有這樣的成員,有可能是以下這幾種「壞味道」所引起:

  • 團隊只分工,不合作。有些人手邊工作太多,或是自身能力不足以完成手邊的工作,只好利用開會的時候繼續工作。
  • 湊在一起開會的人「根本不算是同一個團隊」,只是剛好需要一起開會。在這種情況下,當然不太需要去理會「別人」的討論內容。
  • 會議進行方式有誤,導致團隊成員覺得太無聊,還不如利用時間處理工作。
  • 團隊開會的時間沒有固定,經常變來變去,導致於開會的時候正好是團隊成員工作到一半的時候,「捨不得」將手邊的工作放下。
  • 團隊成員自視甚高,認為只有自己的事情是最重要的,其他的人事情都不重要。

不管是哪個原因,ScrumMaster都應該要事前預防、當場提醒、事後輔導,或是讓團隊成員在retrospective meeting的時候可以自發性的討論這個問題發生的原因,尋找改善方案。

***

Teddy一直相信discipline * skill = competence(紀律 * 技能 =  能力,請參考〈Scrum團隊如何打考績:有所本篇〉)。紀律不是要求團隊成員唯唯諾諾、拍馬屁、或是爆肝加班,而是要求團隊成員遵守「生活公約」—開會的時候要活在當下、寫程式也要寫單元測試、撰寫程式要符合coding standard、遇到任何問題要即時反應、持續整合系統建構錯誤要立即修復等、開會要準時出席。這些「紀律」並不是Scrum的要求,和採用什麼開發方法沒有關係,而是身為專業人員應該具備的基本行為。

一個沒有紀律的軍隊,跟強盜沒有差別。

***

友藏內心獨白:來人啊,關門、放狗。

2014年1月29日 星期三

如何晉升為軟體設計魔人

Jan. 27 19:00~20:07

螢幕快照 2014-01-27 下午8.00.40

 

農曆年關將近,在「封關」之前,今天Teddy要公布一個「公開的秘密」(疑,公開的秘密還需要公布嗎?!),那就是:要如何才能夠修練成為「軟體設計魔人」,或是好聽一點的「軟體設計大師」?

搞笑談軟工的忠實觀眾可能已經猜出答案,最簡單的方法當然是來上Teddy所開的每一門課,不過如果只有這個方法對於「時間很多,口袋很淺」的鄉民可能就不適用,所以Teddy要提供另外一個「很花時間,但是相對來講比較省錢」的方法,那就是「讀Alexander的書」

***

Teddy在部落格上已經好幾次介紹Alexander的書,例如:

  • Notes on the Synthesis of Form
  • The Timeless Way of Building
  • A Pattern Language
  • The Oregon Experiment

為什麼要讀Alexander的書?很簡單,因為很多「大師」在學習的過程中,也都讀了Alexander的書。例如GoF的Design Patterns,這本書算是設計模式領域的「聖經」,光是把GoF的書讀懂,就已經很厲害了。但是,等一下,GoF的靈感是來自於Alexander的建築模式。如果要真的成為「大師中的大師」、「魔人中的魔人」,光是看完GoF的書是不夠的,還必須要追本溯源,了解Alexander的想法,知道為什麼這些想法會影響GoF。

除了GoF,在很多「大師級」的作品裡面,也都提到了Alexander的書。隨便舉幾個例子:

  • Extreme Programming Explained, 2nd, by Kent Beck(Kent Beck的影響力不用多說了,光是XP與TDD就打掛一堆人了 XD)
  • The Design of Design, by Frederick P. Brooks, Jr.(人月神話作者)
  • About Face 3 : The Essentials of Interaction Design by Alan Cooper(很多UI/UX設計師都讀過About Face 3這本書,但卻很少人讀過Alexander的書)
  • The Psychology of Everyday Things, by Donald A. Norman(這本書更不用說了,看過的人可能比About Face 3更多)

***

Donald A. Norman在他的書中說:

…The other architects whose work has influenced me are not builders; they are thinkers and designers, in particular, Alexander and this colleagues at the University of California, Berkeley.

Alexander的書雖然是在談建築的問題,但其實他是一位思想家與設計家。讀了他的書,可以應於在各種不同的「設計領域」,光是軟體設計與UI/UX設計,就有不少人受到Alexander的影響。

讀了大師(Kent Beck、Frederick P. Brooks, Jr.、Alan Cooper、Donald A. Norman)的書,略有小成之後有資格成為大師門派的信徒。讀了大師讀的書,略有小成之後有可能可以自立門派,或是有能力將大師的想法發揚光大。這就是程度上的差別。

***

友藏內心獨白:不就是讀書,有那麼嚴重嗎挑眉質疑

2014年1月28日 星期二

捨我其誰之我不知道要做多久

Jan. 27 23:11~23:53

image

 

上Scrum課程的時候有學員問了一個問題。

學員:有些工作只有一個人可以完成,但是這個人在sprint planning meeting的時候表示他無法估算時間,怎麼辦?

這是一個剛開始導入Scrum很常見的問題,分析一下這個現象,很可能是因為這件工作的內容風險太高,導致不容易估算。但不容易不是代表不能,而是不敢估、不想估、不願意估。因為這件工作擺明了就只有他能夠做,所以估算的時間很可能就是「他說了算」。而最後這件工作也變成只有他才能夠認領,所以他不想承擔這種壓力,導致不願意承諾。

所以「無法估算」只是一種「現象」,真正的問題可能是:

  • 團隊或個人把估算值當成軍令狀,這是對於「估算」本質的誤解。
  • 「有些工作只有一個人可以完成」也隱含著團隊合作模式可能有問題,是不是大家平常都各做各的,沒有互相幫忙,離cross-functional team還有一大段的距離。
  • 既然前提是「只有一個人可以完成」,就代表這個人對於這個工作有基本的了解。就算是口頭上說出「無法估算時間」,也應該對團隊成員說明「無法估算時間的原因」。此外,其他「沒有能力完成這個工作」的團隊成員也應該發問、討論,為什麼這個工作無法估算?不能把所有估算責任都推給那個「只有一個人可以完成」的人。

***

講了這麼多,鄉民們可能會問:「Teddy你還是沒有說該怎麼辦啊」?其實作法很簡單,就是回到Scrum的基本精神:inspect(檢驗)與 adapt(調適)。如果所有的人都說無法估算,那可以先隨便估一個時間,假設20小時。然後等這個工作被認領之後,每天daily scrum再來修正這份工作的剩餘時間(remaining hour)。

鄉民甲:怎麼可以隨便估,萬一做不完怎麼辦?

做不完至少「學習到」這件工作的難度,等sprint review之後如果Product Owner還認為這份工作很重要,就重新安排到下個sprint繼續做。至少下個sprint對這份工作需要做多久就不至於完全沒有頭緒。

鄉民甲:不行啊,如果這份工作所代表的story就是這個sprint最重要的功能,沒辦法在這個sprint完成,那就代表sprint失敗。

如果是這種情況,有兩個可能。第一個可能就是宣告這個sprint失敗,承認團隊沒有事先觀察到有一個風險很高的工作。也有可能是story切得不好,太大了,導致工作過於複雜。至於實際原因是什麼,要讓團隊在retrospective meeting自我檢討,以便下次可以改進。第二個可能,就是在這個sprint先安排一個spike,對這個風險很高的工作先做一點小研究,然後把這個sprint的目標先調整成其他的項目。

***

Teddy經常講的一句話:「能量不滅」,該做的事沒有做到位,套用任何流程、框架、神丹妙藥,也是難以挽救垂危的專案或團隊。

***

友藏內心獨白:失敗是一種選項,請安心服用。

2014年1月27日 星期一

Fault Handling(缺陷處理)

Jan. 26 21:45~22:15

image

 

系統失效的原因是因為程式的執行引爆了某個fault,導致error,最後形成failure。當例外發生之後,如果希望系統可以持續提供服務,除了修正error狀態,還需要進一步把存在於系統中的fault給排除,否則系統繼續執行下去還是有很高的機會再度引爆同一個fault,結果還是產生failure。

Fault handling就是探討如何排除fault的方法,雖然屬於比較偏向容錯處理的領域,但是在某些特定的狀況之下,例外處理還是可以應用fault handling的技巧來提升系統的強健度。

依據Avizienis等人[1]的分類,fault handling包含以下四個操作:

  • 診斷(diagnosis):鑑定與紀錄錯誤發生的原因,包含錯誤發生的位置與種類。
  • 隔離(isolation):將失效的元件從系統中隔離,以防止後續的操作繼續使用到這個失效的元件。
  • 重新組態(reconfiguration):如果系統有冗餘或是備用的元件,則將系統重新組態以便使用這些冗餘或備用元件。或是重新指派工作,讓沒有發生問題的元件來取代被隔離的元件。
  • 重新初始化(reinitialization):確認重新組態之後的系統是可運作的之後,重新設定系統以便採用這個新的組態。

Fault handling的四個操作在日常生活中也經常會套用。例如,鄉民們連續三天使用電腦打報告或是寫程式,最後搞到自己的右手很痛,幾乎無法使用滑鼠(發生failure)。經過醫生或是自己自行檢查之後(診斷),判斷是手腕出了問題,要休息一個禮拜不能使用滑鼠(隔離)。但是公司並不會因此允許你一個禮拜不用上班,你還是要想辦法維持自己處在強健度等級三。因此你嘗試重新調整工作模式,改用左手來使用滑鼠(重新組態)。改變之後發現雖然工作速度變慢了一些,但是至少還可以繼續幫公司賣命。最後你決定重新安排桌面,把滑鼠和滑鼠墊移到左邊,改用左手來操控(重新初始化)。

***

雖然容錯設計的成本比例外處理要高出許多,但了解一些容錯設計的方法,有時候對於例外處理設計還是很有幫助的。

***

友藏內心獨白:不找出內奸,當然會屢戰屢敗啊。


[1] A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr, “Basic Concepts and Taxonomy of Dependable and Secure Computing,” IEEE Transactions on Dependable and Secure Computing, vol. 1, no. 1, 2004.

2014年1月26日 星期日

2012緬甸考察之旅Day9-C翁山市場附近逛大街

Jan. 25 00:00~00:20

離開翁山市場之後在附近閒逛,附近的人行道上也有不少的攤販,賣書、光碟、吃的、日用品,種類非常多。

螢幕快照 2014-01-25 上午12.01.44螢幕快照 2014-01-25 上午12.01.51螢幕快照 2014-01-25 上午12.02.02螢幕快照 2014-01-25 上午12.02.12螢幕快照 2014-01-25 上午12.02.21螢幕快照 2014-01-25 上午12.02.41螢幕快照 2014-01-25 上午12.02.50螢幕快照 2014-01-25 上午12.02.59螢幕快照 2014-01-25 上午12.03.12螢幕快照 2014-01-25 上午12.03.35螢幕快照 2014-01-25 上午12.03.48螢幕快照 2014-01-25 上午12.03.57

 

逛到一家店好像有在賣HTC手機,不過架上擺的HTC手機全都是…「樣本」,不是真的手機。

螢幕快照 2014-01-25 上午12.10.12螢幕快照 2014-01-25 上午12.10.28

 

繼續走到一個搭公車的地方,很多人在這裡搭車。

螢幕快照 2014-01-25 上午12.04.04螢幕快照 2014-01-25 上午12.04.12螢幕快照 2014-01-25 上午12.04.21螢幕快照 2014-01-25 上午12.04.33螢幕快照 2014-01-25 上午12.04.51螢幕快照 2014-01-25 上午12.05.02螢幕快照 2014-01-25 上午12.05.11螢幕快照 2014-01-25 上午12.05.38螢幕快照 2014-01-25 上午12.05.55螢幕快照 2014-01-25 上午12.06.15螢幕快照 2014-01-25 上午12.06.29螢幕快照 2014-01-25 上午12.06.49螢幕快照 2014-01-25 上午12.07.00螢幕快照 2014-01-25 上午12.07.19螢幕快照 2014-01-25 上午12.08.11

 

最後逛到兩間緊鄰的電影院,居然有上演「血滴子」和「大上海」,難道這邊的人也愛看陸片?

螢幕快照 2014-01-25 上午12.13.27螢幕快照 2014-01-25 上午12.13.36螢幕快照 2014-01-25 上午12.13.44螢幕快照 2014-01-25 上午12.13.55螢幕快照 2014-01-25 上午12.14.04螢幕快照 2014-01-25 上午12.14.35

***

友藏內心獨白:少年Pi居然也有,還是3D版的,好先進。

2014年1月25日 星期六

2012緬甸考察之旅Day9-B翁山市場瞎逛

Jan. 24 23:26~23:52

仰光不虧為緬甸第一大城,路上找吃的容易多了。走了一早上也累了,在翁山市場附近找了一家餐廳吃午餐順便休息一下。

螢幕快照 2014-01-24 下午11.30.45螢幕快照 2014-01-24 下午11.31.14螢幕快照 2014-01-24 下午11.31.27螢幕快照 2014-01-24 下午11.30.29螢幕快照 2014-01-24 下午11.31.05螢幕快照 2014-01-24 下午11.30.55

***

吃完午餐之後到翁山市場瞎逛,附近有可以兌換緬幣的地方,錢快用完了順便去換一下。這次來緬甸和2006年第一次來的時候差很多,之前在緬甸可以直接使用美元,而且很受歡迎。事隔六年,現在很多地方都只接受緬幣。要去緬甸旅遊記得要帶「美元新鈔」,他們很不喜歡舊鈔,甚至有一點汙損就拒絕接受的也有。

螢幕快照 2014-01-24 下午11.38.58螢幕快照 2014-01-24 下午11.39.05螢幕快照 2014-01-24 下午11.40.06螢幕快照 2014-01-24 下午11.39.19螢幕快照 2014-01-24 下午11.39.31

 

翁山市場還挺大的,逛了一大圈什麼東西也沒買。這裡有不少賣玉石、首飾的商店,不過完全不懂,也沒錢,所以逛逛就好。市場內部有一些賣小吃的,因為剛剛才吃過午餐,肚子還很飽,所以也沒有買東西來吃。

螢幕快照 2014-01-24 下午11.34.37螢幕快照 2014-01-24 下午11.48.20螢幕快照 2014-01-24 下午11.34.58螢幕快照 2014-01-24 下午11.35.07螢幕快照 2014-01-24 下午11.35.21螢幕快照 2014-01-24 下午11.46.54螢幕快照 2014-01-24 下午11.35.41螢幕快照 2014-01-24 下午11.36.19螢幕快照 2014-01-24 下午11.36.37螢幕快照 2014-01-24 下午11.36.54螢幕快照 2014-01-24 下午11.37.04螢幕快照 2014-01-24 下午11.37.17螢幕快照 2014-01-24 下午11.37.48螢幕快照 2014-01-24 下午11.46.06螢幕快照 2014-01-24 下午11.46.19螢幕快照 2014-01-24 下午11.46.36螢幕快照 2014-01-24 下午11.46.46螢幕快照 2014-01-24 下午11.38.09

***

友藏內心獨白:逛了一圈,腳又酸了。