l

2013年4月26日 星期五

[工商服務]Design Patterns這樣學就會了--入門實作班第四梯次

Apr. 23 21:48~22:46

461260785531254

 

Design Patterns這樣學就會了--入門實作班」這門課開著、開著沒想到轉眼間要開第四梯次了。為了上這門課,Teddy花了很多時間嘗試從模式的起源--Christopher Alexander所寫的《The Timeless Way of Building》這本書中找出一個系統化的方式讓學員們不只在課堂上學會GoF的23個設計模式,日後還具備分析、取捨、整理其他設計問題與套用模式的能力。

在這堂課中Teddy希望將這個方法分享給對設計模式與追求軟體設計品質的鄉民們。

螢幕快照 2013-01-20 下午10.57.01

螢幕快照 2013-01-20 下午10.56.37

***

本課程適合在軟體開發生職涯中,曾經遭遇以下情況的親朋好友們:

  • 程式寫了好幾年,但對於如何做好設計沒有把握。
  • 看到同事所寫的程式很想請他…過來一點…以便教他如何做好設計,但卻屢戰屢敗,苦無良方可以說服你的同事。
  • 隔壁同事所寫的程式號稱套用了設計模式,但是我怎麼覺得這樣的設計很複雜,反而更難理解啊。
  • Java的語法我都懂,但是JDK內建的類別庫,為什麼要搞得這麼複雜,很難了解它的明白耶。
  • 為什麼自己寫出來的軟體就好難擴充,遇到需要修改的時候就必須要改好幾個地方,而且還很容易不小心就改錯。
  • 想要使用open source的library或是framework,但是看不太懂這些library或是framework的設計思維,學起來速度就是比別人慢不要告訴別人

有上述症狀者,歡迎報名參加「Design Patterns這樣學就會了:入門實作班第四梯次熱戀2013年07月20、21、27日 (六、日、六)。

2012年入門班上課實況

2013年入門班上課實況

***

課程簡介與報名網頁在這裡 http://www.accupass.com/go/pattern1306

***

友藏內心獨白:上一次課勝過自己苦學10年很棒

2013年4月25日 星期四

C. C. Agile聚會Sprint 8精華報導

Apr. 23 18:21~19:08

螢幕快照 2013-04-23 下午6.31.11

4/18號晚上第8次C. C. Agile每月聚會由Joey分享:「BDD in .NET - TDD 在實務上最後一塊拼圖」。這是Teddy第一次見到Joey本人,之前都只有在Facebook互相交流一下各自對於敏捷開發與軟體測試的看法。Joey對於敏捷實務做法的熱血程度破表,思慮與表達也非常清晰,著實令人佩服很棒

Joey當日分享的投影片內容已公開在此http://docs.com/S5QO,有興趣的鄉民請自行參考之。

Teddy內心獨白:耶,有投影片這樣我就不用多做介紹了不要告訴別人

***

以下偷用…嗯嗯,節錄兩張Joey投影片的重點作為當日活動的介紹說明。首先以下這張投影片說明敏捷開發中的story展開成若干的scenario,然後再針對每個scenario寫出驗收測試當作這個story的DoD條件(Definition of Done,完成條件)。

螢幕快照 2013-04-23 下午6.38.02

在這邊Teddy附帶說明一下,傳統story撰寫的格式是:

As a [user role], I want/can do [desire/goal] so that [reason/benefit].

但現在有另一種也很流行的寫法,內容也是包含傳統寫法的三個部分,但是把順序換了一下:

To [benefit], As a [role], I want [desire/goal].

Joey範例裡面採用的是比較新式的寫法。

***

剛剛提到一個story可以有很多個scenario,例如,一個簡單的登入系統的story,至少可以有以下三個scenario:

  • 登入成功
  • 帳號錯誤
  • 密碼錯誤

BDD建議用Given、When、Then的格式來敘述scenario,分別對應到撰寫測試時的:

  • Given:準備測試資料(setup fixture)。
  • When:執行待測程式。
  • Then:比對期待值與執行結果是否相符(expected result VS. actual result)。

螢幕快照 2013-04-23 下午6.48.12

***

Joey寫了一系列關於TDD的文章在此:《[30天快速上手TDD]目錄與附錄》,請鄉民們自行服用。最後看幾張當天活動照片作為結尾。

螢幕快照 2013-04-23 下午7.05.43

螢幕快照 2013-04-23 下午7.05.06

螢幕快照 2013-04-23 下午7.04.48

***

友藏內心獨白:到底哪裡才有價格合理、交通方便、食物與飲料尚可、場地大小也合適的夢幻地點啊?

2013年4月24日 星期三

財富自由 VS. 工作自由

Apr. 22 23:09~23:59

image

前幾天在網路上看到一篇商業周刊的文章,標題是《追求財務自由,不如擁有工作自由》,讀完之後感觸蠻深的。一般上班族和Teddy的處境,大多停留在「工作就是要賺錢,為了賺錢只好工作」這個階段。N年前Teddy第一次聽到「財富自由」這幾個字的時候,才知道原來 奸商 民眾想要 不擇手段 努力賺錢的行為可以用「追求財富自由」這幾個字來包裝。自由、自由,誰不想擁有自由?當然想,所以「追求財富自由」絕對是一個非常正面的行為。

鄉民甲:先別說自由了,你聽過「氨莉」嗎?

Teddy:!@^^%*^*惱怒

***

Teddy也曾為了「培養經濟實力」以達到「追求財富自由」這個目標,「忍辱偷生」了好一段日子。那時候,每個月的財富是暫時自由了,但工作卻不自由。你不能做自己認為有意義的事,因為你只是整個機器裡面的一顆小螺絲釘。由於工作上經常要跟「丁丁」打交道,所以經常要讓自己的心態與智力回到兒時。莊孝維 裝幼稚也是一件很痛苦的事情啊挑眉質疑

***

2012年7月成立泰迪軟體前後,Teddy內心其實是很徬徨與掙扎。泰迪軟體成立之初只有「Scrum敏捷方法實作班」這個「商品」可以販賣,當然一開始也不可能有客戶找Teddy到公司內部導入Scrum。雖然銀行還有點存款暫時不會餓死,但是每天都在想著要如何經營敏捷開發的教育訓練與顧問事業,也是不容易的一件事啊。

經過6個月的努力,今年農曆年前後課程與顧問的生意慢慢有起色。雖還談不上找到穩定的「成長引擎」,但公司成立之初Teddy內心的不確定感已經暫時消失殆盡了。

活到這把年紀,很高興有機會可以把自己的興趣當作飯吃熱戀,在擁有「工作自由」的同時,

還可以填飽肚子,不會給家人與社會帶來負擔。

寫到這邊順便感謝一下幫Teddy「交關」(有買Teddy的書或來上Teddy課程的個人或企業)的朋友,沒有你們的熱情相挺,Teddy可能又回頭去「追求財富自由」了不要告訴別人

***

友藏內心獨白:這一篇的重點到底是什麼?

2013年4月23日 星期二

第一梯次Design Patterns這樣學就會了進階實作班,Day2實況報導

Apr. 21 23:23~23:58

螢幕快照 2013-04-21 下午11.25.35

 

第二天課程要介紹5個設計模式,首先介紹Memento,Teddy設計例子是「遊戲存檔」。

螢幕快照 2013-04-21 下午11.26.12

螢幕快照 2013-04-21 下午11.31.12

 

接下來上場的是Prototype,Teddy設計例子是「遊戲中怪獸使出分身術」。

螢幕快照 2013-04-21 下午11.34.18

 

Prototype在某些特定應用裡面可以大幅簡化程式的邏輯。

螢幕快照 2013-04-21 下午11.33.21

 

第三個介紹的是Flyweight,接續剛剛Prototype所舉的「遊戲中怪獸使出分身術」範例,這次希望當產生大量怪獸的時候,可以節省記憶體的使用。

螢幕快照 2013-04-21 下午11.43.32

螢幕快照 2013-04-21 下午11.45.46

 

第四個介紹的是Decorator,Teddy舉了一個最常見的修飾串流內容的例子。

螢幕快照 2013-04-21 下午11.48.33

 

第五個也是第二天最後一個設計模式是Chain of Responsibility ,Teddy舉了一個簡化版log4j的例子。

螢幕快照 2013-04-21 下午11.54.07

***

上完第二天之後,全部23個GoF設計模式的學習進度已經達到驚人的82.6%了,幫自己按個讚很棒

螢幕快照 2013-04-21 下午11.55.19

***

友藏內心獨白:一天練練習5個設計模式還真充實啊不要告訴別人

2013年4月22日 星期一

第一梯次Design Patterns這樣學就會了進階實作班,Day1實況報導

Apr. 21 21:39~22:41

螢幕快照 2013-04-21 下午9.48.22

 

上禮拜六(4月20日)是第一梯次「Design Patterns這樣學就會了:進階實作班」第一天上課日。

螢幕快照 2013-04-21 下午9.51.33

 

以下是本日課程大綱。

螢幕快照 2013-04-21 下午9.50.08

 

進階班第一天上課首先快速複習一下入門班的課程重點,包含模式的定義、模式的六大元素、Force的重要性、還有12個物件導向設計觀念與原則。

螢幕快照 2013-04-21 下午9.54.23

螢幕快照 2013-04-21 下午9.56.06

螢幕快照 2013-04-21 下午9.56.24

 

最後複習一下入門班教過的11個設計模式。

螢幕快照 2013-04-21 下午9.56.34

***

複習完畢,接下來開始進階班的課程內容。首先帶領學員從物件導向語言(OOP)與程序導向語言(POP)的角度來分析GoF設計模式的設計思考邏輯。

螢幕快照 2013-04-21 下午10.02.19

 

這個比較表雖然很簡單,但對於理解GoF設計模式的背後設計原則卻有很大的助益。

螢幕快照 2013-04-21 下午10.02.32

 

下面這個問題的答案,要到現場才聽得到熱戀

螢幕快照 2013-04-21 下午10.05.27

 

接下來幫學員快速導讀一下SOLID這五個物件導向設計原則。

螢幕快照 2013-04-21 下午10.09.27

***

接著開始介紹今天登場的三個設計模式:Builder、Mediator、Bridge。以下是套用Builder的範例。螢幕快照 2013-04-21 下午10.14.17

 

實作班當然要動手把設計模式寫出來微笑

螢幕快照 2013-04-21 下午10.18.03

***

這是Mediator的例子。

螢幕快照 2013-04-21 下午10.20.32

 

每個範例都是用Step by Step的方式告訴學員實作的技巧與注意事項。

螢幕快照 2013-04-21 下午10.20.02

***

第一天課程的最後一個設計模式是Bridge,現場調查的結果這個模式曾經實際使用過的學員很少。

螢幕快照 2013-04-21 下午10.24.15

 

Java AWT也套用了Bridge。

螢幕快照 2013-04-21 下午10.26.28

***

來上進階班的學員都曾經上過入門班的課程,聽過入門班的「context—>problem—>force—>solution」 系統化模式思考分析方法,再加上進階班第一天介紹的「OOP與POP比較分析」,Teddy相信學員們除了學會GoF這23個設計模式以外,日後對於物件導向設計以及設計模式的掌握,會有很「獨特」的見解。希望對於學員回去之後「說服同事也來一起採用設計模式」這件事能夠幫上忙挑眉質疑

***

友藏內心獨白:POP還是有可取之處啊。