l

2014年2月28日 星期五

還想回去當上班族嗎?

Feb. 24 09:02~10:25

image

 

前兩天Kay突然問Teddy:「你還會想回去當上班族嗎?」

「不想」,Teddy說。

2012年7月成立泰迪軟體至今,收入雖然沒有以前當上班族來的高,但應付家裡的支出與生活開銷也還過得去,還不需要動用到之前的存款。光是這一點,就已經很感恩了。內心非常感謝自掏腰包來上課的朋友們,還有願意花錢讓員工來上課的公司,以及請Teddy去企業內訓和執行敏捷開發導入顧問案的公司。沒有你們的支持,也就沒有泰迪軟體。

***

人生在世所追求的東西很多,金錢只是其中一項。不少人,包含Teddy在內,從小到大總是被灌輸「人生以賺錢為目的」的觀念,好像錢賺得越多,人生就越成功。日本作家「千田琢哉」說:「年收入再多、社會地位再高,無聊的事情就是無聊。做無聊事的時候,如同一具行屍走肉,跟無聊分子打交道,亦是浪費時間。一但覺得無聊透頂,感受到自己無法成長,就要趕快脫離那群人。」《20幾歲要比別人幸運就靠這50個好習慣》。以前覺得只要有還不錯的穩定收入,就應該可以忍受一些「狗屁倒灶的無聊事」,最近越來越發覺這種想法有害身心健康挑眉質疑

上禮拜Teddy在上「第三梯次例外處理設計與重構實作班」的時候有一位學員提到:「台灣人很重視吃到嘴裡的東西,但卻不太關心放到腦袋裡面的東西」,還真有幾分道理。如果上班都在「不花腦筋做無聊的事」,下班之後也就只想靠大餐來彌補一下空虛的心靈,用偶像劇來消磨時間。

***

Teddy以前念書的時候讀了幾本Christopher Alexander的書:《Notes on the Synthesis of Form》、《The Timeless Way of Building》、《A Pattern Language》、《The Oregon Experiment》、《A New Theory of Urban Design》、《The Production of Houses》。非常喜歡Alexander的書,值得一讀再讀。畢業之後「二度投入就業市場」,赫然發現工作上需要的專業知識,大部分只需要用到大學程度就足夠應付了,主要心力都花在「對付嘴砲」以及培養自己「變成嘴砲」上面不要告訴別人。俗話說:「如果你身邊的人都是派大星,你大概離海綿寶寶不遠矣」,還真的沒錯。

***

今年農曆年前Erica找Teddy二月份去C. C. Agile分享,過年的時候一直在想要分享什麼題目。後來想到今年剛好是GoF Design Patterns出版20周年紀念,想說利用這個機會整理一下GoF Design Patterns的來龍去脈,以及Alexander的《The Timeless Way of Building》這本書倒底談些什麼,為什麼對軟體開發領域造成那麼大的影響。

有了這個目的之後,再次重讀《The Timeless Way of Building》,發現又有不同層次的領悟。這本書的五個主要概念:The Timeless Way、Quality Without A Name、Gate、Way、The Kernel of the Way,要在短時間說清楚還真的不容易。

螢幕快照 2014-02-24 上午9.55.43

 

為了把這些觀念用淺顯易懂的方式介紹給參加C. C. Agile的朋友,Teddy特別花時間用「達摩祖師傳」這部電影的片段來解釋以上這五個觀念。依據當天C. C. Agile參加者的反應,相信對於《The Timeless Way of Building》這本書應該有了基本的了解。

***

其實這整個準備的過程,雖然花了不少時間,但最快樂的是Teddy自己。《The Timeless Way of Building》這本書讀了好幾次,只知道這本書很好,但卻無法用「鄉民們」也聽得懂的語言來說明這本書到底好在哪裡。經過這次的準備,功力又更上一層樓。

如果Teddy還是上班族,也許永遠無法領悟《The Timeless Way of Building》與「達摩祖師傳」之間的關係。智慧的增長,有時千金難換啊。

***

友藏內心獨白:隨緣不變。

2014年2月27日 星期四

找一個令你明白的人

Feb. 26 11:20~12:00
螢幕快照 2014-02-26 上午11.40.24

本篇照片節錄自「達摩祖師傳」電影畫面。

 

1992年上映的香港電影「達摩祖師傳」是一部非常有意思的電影,內容講述中國南北朝時代達摩大師從天竺(印度)東來中國傳法(禪宗)的過程。電影中的對話,仔細品味,會發現不管是在日常生活待人接物上,或是在開發軟體上,都一體適用,已經達到Quality Without A Name的境界。

***

今天談一下電影中的一個橋段,達摩大師在南朝的佛寺中傳法…

僧人甲:啊,我明白了。

大師兄:你又明白? !你明白什麼啊? !

僧人甲:大師之言一切隨緣不要執著。普通人隨緣即變,得道者隨緣不變

大師兄:說來說去模棱兩可,我不明白。

達摩大師:你最好能先去找一個令你明白的人。

大師兄:說了半天我看那個人就是你。

螢幕快照 2014-02-26 上午11.20.15


達摩大師:不是我!而是你自己。
螢幕快照 2014-02-26 上午11.20.29

***

自己內心 牲畜 深處壓根不想弄明白,就算是肉體去上了再多的課,聽了再多的方法,只是徒具形式,白忙一場。

老闆:嗯,好,我知道敏捷開發與Scrum要做什麼了。可是我們公司「體質特殊」,所以只要取Scrum的「每日立會」以及敏捷開發的「隨時都可以修改需求」這兩點來實施就好了。大家沒問題吧?沒問題的話今天案子比較趕,請大家繼續留下來加班,公司會統一幫大家訂便當。

專案經理:嗯,好,我知道自動化測試要做什麼了。可是我們專案進度延遲,「額外增加」自動化測試這項工作雖然可以增進品質,但是會拖慢我們的開發速度。為了「趕上進度」,還是把測試時間省下來吧。頂多就是軟體釋出之後讓客戶花六個小時登記結婚或離婚,沒什麼大不了的,死不了人。搞不好大家嫌離婚花太多時間,最後就不離了,這也是功德一件啊挑眉質疑

工程師:嗯,好,我知道例外處理要做什麼了。可是我功能都寫不完了,哪有時間處理例外。江湖傳言「例外不意外」,例外就當作送給客戶的surprise好了。

***

友藏內心獨白:找我之前,要先找到你自己。

2014年2月26日 星期三

[例外處理設計與重構實作班] 第三梯次課程實錄

Feb. 25 17:35~18:37

螢幕快照 2014-02-25 下午6.20.14

 

例外處理設計與重構實作班」第三梯次,已經在2月22~23日順利結束。2013年上過兩梯次一日班,但因為課程內容「太豐富」,以至於壓縮到練習的時間。所以今年特別把課程調整成兩天,增加很多練習活動,還有把之前一日班無法排入的重要教材也一併加入。

以下是兩日班的課程大綱,除了練習活動以外,主要增加了「例外處理的4種Context」、「Checked和Unchecked Exception的優缺點比較」、「強健度等級1~3的實作方法」、以及「例外類別設計方法」。

螢幕快照 2014-02-25 下午5.43.59

***

這裡有之前「一日班課程實錄」,今天僅介紹2日班增加的內容。首先Fault分類除了原本的design fault與component fault,增加了以「發生時間長短」來分類的三種缺陷。這三種不同的缺陷也會影響例外處理策略的選擇。

螢幕快照 2014-02-25 下午5.53.24

 

例外處理機制由原本的6大因素增加為10大因素。

螢幕快照 2014-02-25 下午5.57.03

 

例外處理的四種context:exception、object、local、architecture,對於例外處理設計有非常重要的影響。

螢幕快照 2014-02-25 下午5.58.58

 

接著是checked exception與unchecked exception的介紹與比較。介紹完畢之後Teddy問了一個要花點腦筋思考的問題:

螢幕快照 2014-02-25 下午6.06.07

 

這次還有認真的練習一下try-catch-finally block的責任。

螢幕快照 2014-02-25 下午6.08.13

 

大家來動動腦,看看…要填些什麼內容。

螢幕快照 2014-02-25 下午6.10.14

 

接下來介紹達到強健度等級1、2、3的實作方法。

螢幕快照 2014-02-25 下午6.12.37

螢幕快照 2014-02-25 下午6.12.49

螢幕快照 2014-02-25 下午6.13.23

 

最後提到六個例外類別設計技巧,每一個都非常實用。

螢幕快照 2014-02-25 下午6.15.40

***

很多練習活動。

螢幕快照 2014-02-25 下午6.17.58螢幕快照 2014-02-25 下午6.18.58螢幕快照 2014-02-25 下午6.19.12螢幕快照 2014-02-25 下午6.21.14螢幕快照 2014-02-25 下午6.24.14螢幕快照 2014-02-25 下午6.25.34

 

部分練習題,有業界實際案例分析。

螢幕快照 2014-02-25 下午6.26.53螢幕快照 2014-02-25 下午6.27.16螢幕快照 2014-02-25 下午6.29.08

***

兩天的課程時間安排了大量的練習,可以讓學員們當場印證Teddy課堂上所講的內容,效果更佳。

***

友藏內心獨白:例外處理是一條鞭。

2014年2月25日 星期二

如何選擇第一個Pattern來設計軟體架構?

Feb. 24 13:00~14:40

螢幕快照 2014-02-20 下午2.36.00

先打個廣告,「第六梯次Design Patterns這樣學就會了:入門實作班」已經確定開課了,早鳥優惠到今天(2014/2/25 23:59)結束。

***

Teddy每次上「Design Patterns這樣學就會了:入門實作班」都會舉一個如何以「一 次套用一個pattern」的方式來設計軟體架構的例子,這個方法就是Alexander在《The Timeless Way of Building》所提到的Pattern Language方法。

前幾天在C. C. Agile Sprint 18活動中Teddy也快速介紹這個方法,有人問Teddy:「一次套用一個pattern,請問如何選擇第一個pattern?」

螢幕快照 2014-02-24 下午1.27.32

 

Pattern和Pattern Language的關係,就好比「英文單字」和「英文」的關係。要學英文(或是其他語言也一樣),總是需要先「背單字」,累積足夠多的字彙量。這個「背單字」的學習過程就類似學習單一pattern的過程。學習GoF Design Patterns、Kent Beck的Implementation Patterns、Martin Fowler的Enterprise Application Architecture Patterns和Analysis Patterns、《Pattern-Oriented Software Architecture》與《Pattern Languages of Program Design》這一系列的書,都是在「背單字」。

背單字有兩層涵義,不是把pattern的名稱,例如MVC、Observer、Command這些名字記下來就好了,還要知道怎麼做。

螢幕快照 2014-02-24 下午1.45.11

 

Pattern同時具備process與thing這兩個面向,thing代表「要做出什麼東西」,process代表「要怎麼做」。學習pattern如果不知道這兩個面向,花再多時間K書、參加讀書會,也是枉然不要告訴別人

***

Teddy發現,不少人學pattern,只學得process,「我知道怎麼實作Observer、Command、Singleton」,但卻不知道「為什麼要套用這些pattern」,那就是對於要產生什麼東西(thing)沒有真正理解。也就是說,沒有觀察到pattern的force。

另外一種情況,則是「說得一口好pattern」,知道每一個pattern所要達成的目的,但卻沒有實作能力。這種情況,也只能算是「投降輸一半」挑眉質疑

回到原本的問題:「一次套用一個pattern,請問如何選擇第一個pattern?」。會有這樣的疑問,首先一定是pattern的單字量不夠多,或是pattern的單字量夠了,但是學習的「質」不夠,沒有了解pattern的process與thing這兩個面向。大部分的人,都還處於這個階段。

***

如果pattern的單字量與質都夠了,還是存在「一次套用一個pattern,請問如何選擇第一個pattern?」的疑問,這時候才牽扯到pattern language層次的問題,也就是如何以pattern作為單字來講出一段話(做出一個設計)

螢幕快照 2014-02-24 下午2.00.59

***

Alexander說,套用pattern形成pattern language的精神是一種「整體先於部分,然後透過差異化的過程將整體逐步展開」。這句話聽起來有點玄,弄清楚之後卻覺得很簡單。就跟講話一樣,一定是在腦中先有一個想法(整體先於部分),然後在由上而下用一個字、一個字,一句話、一句話慢慢將想法(整體)逐步展開。

無法一次套用一個pattern來設計軟體架構的原因,大的方向就是Teddy上述提到的這樣。其實要學會pattern language,概念很簡單,但是「箇中修行之道」還是有一些小竅門。很可惜在台灣,絕大部分的軟體開發人員在學習pattern的時候,大概只看過下列這幾本書(中文英不拘)。只知道背單字,卻不知為何背單字,不要說一個打十個,就連「釘孤支」都有點勉強啊。

Image (8)

***

Alexander說:「If your language is empty, your buildings cannot be full. If your language is poor, you cannot make good buildings until you enrich your language.(如果你的語言是空泛的,你的建築物不可能充實。如果你的語言是貧乏的,你不可能造出好的建築物直到你豐富你的語言)」

結論就是:快去背單字吧。

***

友藏內心獨白:不是要先學ABCD還有五十音嗎?挑眉質疑

2014年2月24日 星期一

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

Feb. 21 16:04~16:20

螢幕快照 2014-02-21 下午4.05.59

 

今年剛好是GoF Design Patterns這本書出版20周年紀念,二月份的C. C. Agile Sprint 18由Teddy分享「那一夜我們說Pattern:Design Patterns 20周年紀念」。為了準備這次分享,前前後後可是花了50小時的時間準備。

Teddy首先簡介一下Alexander的身平,以及他早年的四本著作(他寫了超過10本書)。

螢幕快照 2014-02-21 下午4.08.41

 

接著用一張圖依據時間來介紹GoF Design Patterns出版之前軟體界發生了那些與Pattern有關的大事,導致做軟體的人將原本應用於建築領域的Pattern,借用到軟體開發上面。

螢幕快照 2014-02-21 下午4.08.23

 

接著介紹《The Timeless Way of Building》這本書倒底在講些什麼重點,有以下五個層次。

螢幕快照 2014-02-21 下午4.13.31

 

修練到最後,如果可以達到直接從Force產出Solution,基本上已經離得道成仙不遠挑眉質疑

螢幕快照 2014-02-21 下午4.15.14

***

當晚的投影片重點Teddy已經分享到slideshare上面,有興趣的鄉民請自行觀看。

***

友藏內心獨白:還是要看現場比較有fu啊。

2014年2月23日 星期日

2013北京考察之旅Day1-B逛王府井大街

Feb. 13 21:48~22:50

住宿地點在「王府井」地點站附近的「都季商旅」,是Teddy找了老半天,地點適中價錢可接受而且還有空床的旅館。出了地鐵站拉著行李還小迷路了一會才找到,途中問了2~3個人,回答也都很「精簡」,只說「前面唄」…真可謂「惜字如金」。

入住之前發生了一件有趣的事,辦好手續之後櫃檯的人打電話給某人說要「住房安檢」。什麼,「住房安檢」?這房間不是你們自己管理的嗎,怎麼入住之前還要先找人去「安檢」一下?!這是什麼情況。聽到Teddy這樣問,櫃檯的人也笑了出來,原來被「安檢」的對象不是房間,而是住客。沒過多久一位保全大哥拿著金屬探測器來掃描Teddy和Kay的行李。這還真的是前所未有的經驗啊。

最好笑的還沒完,金屬探測器居然檢查出Teddy從在台灣的日本藥妝店所購買的日本進口奶茶包和咖啡掛耳包有金屬反應。保全大哥還問:「這是什麼東西?」這…反正不是「火藥」就對了挑眉質疑

螢幕快照 2014-02-13 下午9.50.45螢幕快照 2014-02-13 下午9.50.57螢幕快照 2014-02-13 下午9.49.36螢幕快照 2014-02-13 下午9.50.17螢幕快照 2014-02-13 下午9.50.25螢幕快照 2014-02-13 下午9.50.34

***

房間比想像中的還要大,也算乾淨。廁所設備稍嫌老舊了一點,不過也還可以接受。放好行李之後出門到附近的王府井逛逛。

下午4:15分,肚子有點餓了,走到王府井小吃街,糊里糊塗吃了羊雜湯和奇怪的羊內臟。味道普普,吃得不太習慣,環境有點小髒亂,而且還不便宜。北京的物價感覺和台北差不多了,有些吃的東西還比台北貴。

螢幕快照 2014-02-13 下午10.08.05螢幕快照 2014-02-13 下午10.10.06螢幕快照 2014-02-13 下午10.08.19螢幕快照 2014-02-13 下午10.08.29螢幕快照 2014-02-13 下午10.08.39螢幕快照 2014-02-13 下午10.09.04

***

來到緊鄰小吃街旁邊的王府井大街,這裡人也是很多,不過因為街道與兩旁的建築物都非常的,所以不會有很擁擠的感覺。

螢幕快照 2014-02-13 下午10.14.53螢幕快照 2014-02-13 下午10.15.26螢幕快照 2014-02-13 下午10.15.39螢幕快照 2014-02-13 下午10.15.57螢幕快照 2014-02-13 下午10.16.13螢幕快照 2014-02-13 下午10.16.32螢幕快照 2014-02-13 下午10.16.43螢幕快照 2014-02-13 下午10.16.56螢幕快照 2014-02-13 下午10.17.15螢幕快照 2014-02-13 下午10.21.20

***

找了一家很大的書店逛了一下,大馬路上很冷,書店裏頭卻十分悶熱了,沒待多久就匆匆離開,本來想買一些簡體中文電腦書帶回台灣的說挑眉質疑。後來又看到一間Apple專賣店,講到這個就覺得Apple實在是對不起台灣,連一間Apple直營專賣店都沒有。

螢幕快照 2014-02-13 下午10.22.15螢幕快照 2014-02-13 下午10.22.22螢幕快照 2014-02-13 下午10.22.33螢幕快照 2014-02-13 下午10.22.49螢幕快照 2014-02-13 下午10.22.56螢幕快照 2014-02-13 下午10.29.05

 

Apple專賣店位於一間很大的百貨公司裏面,順便逛一下百貨公司。

螢幕快照 2014-02-13 下午10.28.32螢幕快照 2014-02-13 下午10.29.59螢幕快照 2014-02-13 下午10.28.40螢幕快照 2014-02-13 下午10.28.47螢幕快照 2014-02-13 下午10.29.50螢幕快照 2014-02-13 下午10.31.34螢幕快照 2014-02-13 下午10.32.56

 

逛著、逛著有點累了,想吃點甜點,居然看到鮮芋仙,吃一碗要價將近台幣100元的芋園N號,比台灣還要貴…Orz。鮮芋仙在台灣不是都快倒光了,原來是跑來對岸賺錢了。

吃到一半又發生一件讓人非常傻眼的事,Teddy背後有一桌客人,媽媽居然當眾幫小孩換尿布,而且把換完的尿布就放在桌上。真是聞名不如見面,中國的「雷人」還真是很多啊不要告訴別人

螢幕快照 2014-02-13 下午10.33.44螢幕快照 2014-02-13 下午10.33.52螢幕快照 2014-02-13 下午10.33.58螢幕快照 2014-02-13 下午10.34.08螢幕快照 2014-02-13 下午10.34.16螢幕快照 2014-02-13 下午10.34.28

 

吃完之後繼續逛,見識到「視紅綠燈為裝飾品」的行人。沒想到對岸的行人比汽車駕駛還猛,用肉身自行開闢一條人行穿越道出來。

螢幕快照 2014-02-13 下午10.42.01螢幕快照 2014-02-13 下午10.42.13螢幕快照 2014-02-13 下午10.42.23螢幕快照 2014-02-13 下午10.42.34螢幕快照 2014-02-13 下午10.42.44螢幕快照 2014-02-13 下午10.42.54

 

又走進百貨公司裏面,看到一家Starbucks,也走累了喝杯咖啡休息一下。

店員:要不要辦一張會員卡。

Teddy:不用了,謝謝,我不住這。

店員:我們的卡「全國通用」喔。

Teddy:我住台灣。

店員:!#$%^*(

螢幕快照 2014-02-13 下午10.45.34螢幕快照 2014-02-13 下午10.45.41螢幕快照 2014-02-13 下午10.45.52螢幕快照 2014-02-13 下午10.46.06螢幕快照 2014-02-13 下午10.46.53螢幕快照 2014-02-13 下午10.47.01

***

友藏內心獨白:全國通用但不含台灣。