l

2014年12月31日 星期三

2014年終心得:專注

Dec. 29 15:13~16:30

image

 

又到了歲末年終寫年度心得報告的時候,前兩年的年度心得分別是〈2012年終心得:堅持〉與〈2013年終心得:淡定〉,今年的心得可以用「專注」兩個字來概括。

「專注」並不是說今年Teddy做事特別專心,或是說Teddy只專心在一件事情上面,而是經過這一年Teddy更加確信,專心做好自己有興趣的事,之後生命自然會找到出路

***

10月初Teddy算了一下今年泰迪軟體的營業額,發現比去年少了XX萬,而今年7月公司搬家又額外花了一筆錢,相比之下今年的「淨利」少很多。怎麼辦?年底又是招生最困難的時候,因為這個時間點個人與公司的教育訓練經費大都已經花光,而且很多專案趕著結案,員工也沒時間到外面上課。也沒其他辦法,只能接受這個事實,按照原定計畫利用年底空閒時間寫書與開發教材。

沒想到過沒幾天突然接到一個敏捷開發顧問與培訓合約,讓原本快乾枯的水塘注入一股活水,當下Teddy才真正體會到「天降甘霖」這四個字的涵義。

有一天跟客戶聊天,對方告訴Teddy他們很久之前就曾經看過「搞笑談軟工」部落格上面的文章,並且還拿來在公司內部討論,但後來有一陣子沒有繼續follow下去。最近因為公司在導入Scrum需要一些協助,因此又想起了Teddy這個傢伙可能有點用處。

Teddy屈指一算,從看「搞笑談軟工」部落格到找Teddy當顧問,這整個過程說不定長達1~2年。要是Teddy沒有堅持且專注地寫下去,可能就沒有這個結緣的機會。

***

就在12月初,有一位素未蒙面的鄉民傳訊息給Teddy,說他是《笑談軟體工程:敏捷開發法的逆襲》的讀者。他們公司正在考慮導入Scrum,剛剛找了專案管理公司來介紹Scrum導入。但他覺得味道怪怪的,所以希望Teddy找個時間去他們公司介紹一下。

剛好當天Teddy有空,該公司也離Teddy家不遠,都在307公車行經路線上。於是在回家的途中直接先殺到該公司,和10幾位同仁花了1小時聊了一下。就在離開該公司不久,還沒搭上回程公車就收到對方傳來的訊息,說他們決定找Teddy去幫他們先上一門Scrum內訓課程。

***

這兩個案子加起來,就讓泰迪軟體的營業額比去年多出一些。如此戲劇化的演變是Teddy在10月初完全無法預估的。

Teddy不懂也不會行銷,唯一能夠做的,就是把自己的興趣與專長持續做到最好,然後丟到市場上看看有沒有人要買。前一陣子跟朋友聊天,Teddy告訴朋友:「我開課、當顧問的主要目的,是希望可以幫助大家做好軟體開發,賺錢是次要目的,是為了讓主要目的可以持續進行下去的一種手段。」聽完之後朋友竊笑:「我又不會跟你搶生意,幹嘛把自己說的那麼崇高」。

這不是崇高,只是做生意的基本原則。對客戶沒有幫助的東西、用了會傷身的東西、自己沒有信心的東西,絕不靠恐嚇、吹捧、造神等行銷手段拿出來賣,僅此而已。

***

友藏內心獨白:專注的缺點就是同時間不能做太多事啊。

2014年12月30日 星期二

敏捷開發與OOAD(上)

Dec. 29 12:55~14:21

螢幕截圖 2014-12-29 14.12.18

 

Teddy當年念書的時候,在學校修OOAD(物件導向分析與設計)課程,主要教科書是Craig Larman所寫的《Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development》,附帶一本指定參考書籍《The Unified Software Development Process》。後來Teddy當了這門課的助教,有一年老師將參考書籍改成《Object-Oriented Modeling and Design with UML, 2nd》這本書,為了跟上修課學生的進度,也把這本書讀了一下。換句話說,Teddy當年學過三本不同教科書所教授的OOAD方法。

螢幕截圖 2014-12-29 14.12.42螢幕截圖 2014-12-29 14.12.25

 

今天不是要標榜自己多厲害,而是想討論一個問題:「傳統OOAD所教的那套軟體開發方法,到了敏捷開發世界中變成了怎麼樣子?」

***

不知到鄉民們是否學過所謂「正規的物件導向分析與設計方法」?在學校修這門課之前,Teddy已經有8年多實際開發商業軟體的經驗,也自學看過GoF Design Patterns、RUP與UML。但是,關於需求分析、物件產生、介面設計的方法,大體還是依靠所謂的「經驗」,並沒有一套特別清晰的流程框架。修了這門課之後,主要依據Larman在書中所介紹的方式(UP;Unified Process),對於OOAD心中總算有了一種參考模型。

後來Teddy畢業之後第一個參與的Scrum專案,一開始Teddy就是混用之前所學的OOAD方法,加上Scrum框架來進行開發。在Scrum專案開始之前,需要花一點時間準備product backlog。這段時間所要進行的活動在Scrum框架中並沒有特別著墨,反正Scrum只要求有product backlog便可開工,至於如何產生product backlog,是否需要一個軟體架構來支援後續開發活動,則並沒有規範。

後來Teddy借用UP的方法,把這段時間視為inception階段,用來釐清專案最重要10%~20%的story,以便產生初始的product backlog。之後,便可開始第1個sprint。

 

螢幕截圖 2014-12-29 14.20.32

UP的四個階段,節錄自《The Unified Software Development Process》。

***

這個專案的特性,需要一個具有擴充性的軟體架構,以變應付日後各種不同的軟硬體設備。但是Scrum與敏捷開發都說,軟體架構是「長出來的」,不能像waterfall時代保留好幾個月什麼事都不做,專門用來設計軟體架構。怎麼辦?不知道,Scrum沒教。不過沒關係,回到UP的框架中,基本軟體架構是在elaboration階段所建立起來的。看到這邊鄉民們不要以為elaboration階段是waterfall方法中的「分析」或「架構設計」階段,而是借用完成一個個end-to-end story(或use case,UP稱此種開發方式為use case driven)的過程中,逐一「長出」架構的雛形所以這樣的架構是「可執行的軟體架構」,而不是一個沒有任何功能的空架子。

因此,依據敏捷開發value-driven的精神,在初期的sprint中,先挑選對使用者價值高,同時對於軟體架構成長有決定性影響的story出來開發。在elaboration階段結束之後,軟體架構的基本雛形也就完成了。

在inception與elaboration初期,Teddy曾經開過幾次分析會議,用來和團隊成員討論架構設計的問題。先確定一些想法的大方向大家是否同意,然後就透過完成幾個簡單的story來驗證這些觀念,這些story有幾個特性,首先當然需要具備end-to-end的特性,這一點很重要。其次,為了快速驗證架構設計的可行性,story可以沒有GUI,而是透過文字介面來操作。

***

看到這邊Teddy先做兩點結論:

  • 敏捷開發建議不要做Big Up-Front Design,但這一點並不是說不要做任何的Up-Front Design。常常有人誤會敏捷開發不需要做任何的事前設計,這是錯誤的。至於怎樣的Up-Front Design是剛剛好,不至於走回傳統的Big Up-Front Design,這個界線的拿捏,就需要一點功力。
  • 如何將傳統OOAD方法融入到敏捷開發之中?如果是Larman所介紹的UP方法,因為該方法本身就是iterative與incremental,理論上應該是可以「無縫接軌」的在敏捷開發中直接套用。但實際上還是有需要調整的地方,例如Larman的方法採用Use Case撰寫需求,而主流的敏捷開發採用user story,這兩者的顆粒大小不一樣(後者比較小)。在一個需求粒度小很多的開發周期中,要套用OOAD那套建立use case model、概念模型(conceptual model)、設計模型(design model)的步驟,這中間存在著不小的缺口(gap)

***

以上兩個問題有一個很簡單的解法,就是Teddy在本篇提到的,套用UP的觀點把專案開發看成4個不同階段(phase),然後在inception與elaboration初期從主要的user story中嘗試建立起可執行的軟體架構雛形。為了達到這個目的,在專案初期分析、設計活動所佔比例或稍微高一點,但是這些活動的產出物不是傳統的分析、設計文件,而是透過實作一個個user story而「長出來」的可執行軟體,以及支援這個可執行軟體的架構雛形。

***

友藏內心獨白:這一篇要花一點腦筋。

2014年12月29日 星期一

從五個小故事看敏捷開發精神

Dec. 29 09:00~09:28

螢幕截圖 2014-12-29 09.28.10

再不改變自己就快成為古蹟了XD。

 

耶誕節當天下午Teddy到某公司介紹敏捷開發精神,投影片內容改自2012年9月Teddy在C. C. Agile活動中的講題「敏捷精神是什麼?」當時Teddy用3個小故事來介紹敏捷開發精神,這次配合聽眾的特性,修改了第一個故事的內容,另外增加了2個小故事。這5個故事分別是:

  • 學開車
  • 宏碁平板電腦
  • 火災
  • 馬蓋先
  • 英法聯軍

 

 

投影片已分享至Slideshare,有興趣的鄉民請自行餵食。

***

友藏內心獨白:這什麼亂七八糟的故事。

2014年12月28日 星期日

2014北海道考察之旅Day4-F美瑛晚餐與夜景

Dec. 01 19:43~20:04

回到住宿處Hotel lavenir,難得在日本住這麼大的房間。打開電視隨便亂轉,看到一個猜謎的節目蠻有意思的。還看到日本火山爆發,救難人員上山搜救的新聞。

螢幕截圖 2014-12-01 19.47.02螢幕截圖 2014-12-01 19.44.20螢幕截圖 2014-12-01 19.44.30螢幕截圖 2014-12-01 19.44.40螢幕截圖 2014-12-01 19.44.53螢幕截圖 2014-12-01 19.45.08螢幕截圖 2014-12-01 19.45.21螢幕截圖 2014-12-01 19.45.38螢幕截圖 2014-12-01 19.46.02螢幕截圖 2014-12-01 19.46.29螢幕截圖 2014-12-01 19.46.39螢幕截圖 2014-12-01 19.46.48

***

下午5:20準備出門吃晚餐,來到網路上鄉民介紹的大丸家庭餐廳,這裡的咖啡烏龍麵味道還不錯吃,還有記得點一杯北海道的鮮奶。吃麵配鮮奶還真是有印象以來第一次。

螢幕截圖 2014-12-01 19.51.58螢幕截圖 2014-12-01 19.52.16螢幕截圖 2014-12-01 19.55.45螢幕截圖 2014-12-01 19.52.29螢幕截圖 2014-12-01 19.52.36螢幕截圖 2014-12-01 19.52.42螢幕截圖 2014-12-01 19.52.51螢幕截圖 2014-12-01 19.52.57螢幕截圖 2014-12-01 19.53.04螢幕截圖 2014-12-01 19.53.15螢幕截圖 2014-12-01 19.53.30螢幕截圖 2014-12-01 19.53.48

***

最後欣賞一下美瑛市區的夜景。

螢幕截圖 2014-12-01 19.55.45螢幕截圖 2014-12-01 19.58.42螢幕截圖 2014-12-01 19.59.06螢幕截圖 2014-12-01 19.58.50螢幕截圖 2014-12-01 19.59.20螢幕截圖 2014-12-01 19.59.31螢幕截圖 2014-12-01 20.02.58螢幕截圖 2014-12-01 19.59.42螢幕截圖 2014-12-01 19.59.49螢幕截圖 2014-12-01 20.00.00螢幕截圖 2014-12-01 20.00.09螢幕截圖 2014-12-01 20.00.29螢幕截圖 2014-12-01 20.00.40螢幕截圖 2014-12-01 20.00.58螢幕截圖 2014-12-01 20.01.05螢幕截圖 2014-12-01 20.01.12螢幕截圖 2014-12-01 20.01.20螢幕截圖 2014-12-01 20.01.28

***

友藏內心獨白:可以睡個好覺了。

2014年12月27日 星期六

2014北海道考察之旅Day4-E市區與北工房咖啡

Dec. 01 18:23~18:54

還了電動自行車之後徒步在美瑛市區閒逛。經過一段人行道正在施工的道路,順便研究一下為什麼人家的人行道可以鋪的那麼平。一段短短的人行道動用了10幾個人,如果是在台灣相同的工作應該不會超過5個人。也許台灣的人行道施工可能沒有減料,但偷工的嫌疑很高。

螢幕截圖 2014-12-01 18.26.12螢幕截圖 2014-12-01 18.26.23螢幕截圖 2014-12-01 18.26.37螢幕截圖 2014-12-01 18.26.47螢幕截圖 2014-12-01 18.26.58螢幕截圖 2014-12-01 18.27.21螢幕截圖 2014-12-01 18.27.36螢幕截圖 2014-12-01 18.27.52螢幕截圖 2014-12-01 18.35.55

 

接著走到美瑛市公所之類的地方,這裡有一個全美瑛最高的建築四季之塔

螢幕截圖 2014-12-01 18.28.11螢幕截圖 2014-12-01 18.28.27螢幕截圖 2014-12-01 18.28.36

 

繼續閒逛,看到不少住家的庭院都有種植蔬菜。逛到ㄧ家屋頂正在加裝太陽能板的咖啡廳北工房咖啡。走到腳痠,進去喝杯咖啡吃點東西。這咖啡還真好喝,蛋糕也不錯吃。

螢幕截圖 2014-12-01 18.28.45螢幕截圖 2014-12-01 18.28.53螢幕截圖 2014-12-01 18.29.01螢幕截圖 2014-12-01 18.29.12螢幕截圖 2014-12-01 18.29.23螢幕截圖 2014-12-01 18.29.30螢幕截圖 2014-12-01 18.29.41螢幕截圖 2014-12-01 18.29.49螢幕截圖 2014-12-01 18.30.05螢幕截圖 2014-12-01 18.30.21螢幕截圖 2014-12-01 18.30.28螢幕截圖 2014-12-01 18.30.39

 

美瑛地圖一角。

螢幕截圖 2014-12-01 18.30.58螢幕截圖 2014-12-01 18.31.17

***

友藏內心獨白:意外喝到好喝咖啡。