l

2009年11月30日 星期一

Forest People VS Mountain People

11/29 22:40~23:55

西元3000年,地球人滅亡後800年,一群外星人移民到地球。為了避免步上地球人因為過度使用資源而導致滅亡的下場,這些外星人決定要過著節能省碳、自給自足的自然生活。他們分成兩個團體,一群住在森林中,另一群住在高山上。

森林中自然資源豐富,水源不虞匱乏,隨處都有自然生長的果樹、野菜可採食,野生動物也很多。這些住在森林中的外星人,大家互相合作,每天只要花 8 小時便可備妥生活所需的一切 準時下班。剩下的時間,他們可以有自己的生活,可以玩跳格子遊戲、和野馬賽跑、研究地球人的歷史、打地球人留下的PSP。他們遇到 bugs 困難時會嘗試釐清問題,彼此互相幫忙共同解決問題。有時候隔壁村的原始人會跑過來搗蛋,森林中的外星人會團結一起抵抗外侮,決不會發生捅自己人一刀的行為。社會上一團和氣,沒有犯罪事件發生,因此不需要柯南或是金田一。森林中的外星人每天過著快樂的生活,已達到夜不閉戶,路不拾遺之大同世界境界。

選擇住在高山上的外星人就沒有那麼好狗運了。由於山上空氣稀薄、雨量不足、紫外線已達到危險級,因此動植物都長的不好。在資源匱乏的情況下,高山上的外星人每天至少要花 12~16小時才可 下班 勉強填飽肚子。剩下的時間,其實也沒剩下多少時間,他們除了睡覺以外,幾乎沒有什麼生活品質可言。他們遇到困難時第一個反應就是找代罪羔羊,使出乾坤大挪移把所有的壓力轉嫁給這個 菜鳥 倒楣鬼。為了不要成為代罪羔羊,久而久之每個存活下來的人練就了一身打嘴砲的功夫,彼此高來高去。當受到隔壁村原始人騷擾時,意志不堅的人馬上見風轉舵,出賣自己人以求榮華富貴的 漢奸 行為屢見不鮮。由於社會上人心險惡、爾虞我詐,因此 方丈 村長派出了不少長江一號與錦衣衛,隨時監控民眾的行為並且以「看到黑影就開槍」的警覺心,隨時準備參一本。森林中的外星人過的水深火熱的生活 (村長與皇親國戚除外),許多人隨時都想落跑。可惜 經濟不景氣 路途遙遠,恐怕還沒走到森林中就已經葛屁了,只好委屈過一天算一天。可想而知,住在山上的外星人由於壓力太大,脾氣都很不好,隨時都可能爆發。

***********************************************************************

以上想法是從 Kent Beck 在 Extreme Programming Explained: Embrace Change 這本書的參考讀物中偷過來的,以下節錄自書本內容:

Colin M. Turnbull , The Forest People: A Study of the Pygmies of the Congo, Simon & Schuster, 1961; ISBN 0671640992.
A society with plentiful resources. My dream is that it is possible to create this feeling within a team.

____, The Mountain People, Simon & Schuster, 1972; ISBN 0671640984.
A society with scarce resources. Aptly describes several projects I've been on. I don't ever want to live that way again.

很多搞 agile methods 的人,都抱持的類似的價值觀,強調人性、自我管理、團隊精神、相互扶持。但是這種價值觀不可能在一個資源極度匱乏、壓力大到想扁人的環境中發生。所以對於團隊負責人而言,營造一個森林就是你最大的責任。相對的,團隊成員如果有快要被綁架到高山之中的情況,也要主動呼叫。畢竟,魯賓遜漂流到荒島上如果不求救,別人又怎麼知道要去救他。

友藏內心獨白:得罪了方丈,還想走!

2009年11月28日 星期六

PAUL: 法國頂級麵包店之還我雨傘篇

11/28 21:18~22:50

上禮拜六起了個大早,被 Kay 抓著到位於仁愛路圓環旁,傳說中的法國頂級麵包店 PAUL,吃早餐 (Teddy 沒帶像機出門,要看照片的鄉民們可參考這裡這裡)。最倡導節能 減炭的 Teddy,當然是選擇搭捷運前往。從捷運忠孝敦化站往仁愛圓環走沒多久,先經過敦南誠品,不久後便可到達目的地。當天下著小雨,經過誠品時,有一個勤勞的攤販已經在擺攤賣雨傘。Teddy 出門有帶傘,只好跟馬總統說聲對不起,少了一個幫台灣拼經濟的機會。

大概 9:30 左右到了 PAUL 的門口,耶,雨傘怎麼辦?來這種高級法國麵包店,帶一把100元又有點爛掉的雨傘進去,合適嗎?因為 Teddy 有將雨傘放在圖書館門口被幹走的經驗,對此頗為掙扎。此時 Kay 說話了:「這裡可是仁愛路耶,不可能有人偷雨傘的」。說的也是,這邊地價最便宜起碼也是幾十萬上下,會來光顧 PAUL 除了效法劉姥姥逛大觀園的 Teddy 之外,應該都是達官貴人或是田之驕子,放心把雨傘放在門口的傘架上。

進入店內,Teddy 鬆了一口氣,好佳在沒把雨傘帶進來。這麼高級的法國麵包店,怎容的下一支 Made in China 小雨傘。就在 Teddy 暗自竊喜的片刻,一位帶著白色圓帽,穿著白色制服的 小護士 服務生將我們引領到假壁爐前的昏暗兩人座位。Kay 點了一份 巴黎人早餐,Teddy 點了Omelette (事後據鄉民甲告知,Omelette 中文叫做 歐姆蛋,難道  Teddy 吃的是電阻,救人喔!)。飲料都是熱咖啡。

東西好不好吃?說真的,還不錯吃。不過,如果以 Teddy 曾經到法國旅遊,在 2 星級小旅館吃過的免費早餐相比,C/P 值頗不.不.不.不.不高 (Teddy 不小心口吃)。應該是 Teddy 窮不受補,吃不出箇中巧門。不過對於 PAUL 的咖啡,Teddy 倒是很有意見。咖啡本身普普,勉強接受 (人家要喝生態綠咖啡啦)。不過,裝咖啡的杯子太大,失敗。「蝦米,咖啡杯大,可以多裝一點你也給人家嫌?難道 Teddy 是遠從澳洲來的客人」。當然不是!PAUL 的咖啡是可以免費續杯的,這一點還不錯。但是由於杯子太大,Teddy 才喝不到 1/3 咖啡就冷掉了,還要硬著頭皮把剩下 2/3 的冷咖啡喝掉,才能續杯再喝到熱熱的咖啡 。(鄉民甲:你自己咖啡喝太慢還要怪人家杯子太大,還說你不是澳洲來的,真是太超過了。)

在用餐過程中,服務生頗為親切。不過阿共的陰謀到了結帳的時候被 Teddy 發現,原來用餐要加服務費,Teddy 吃了頓 627 NTD 的早餐。看來以 Teddy 的身分,還是比較適合到 IKEA 新莊店吃 39 NTD 超值早餐 (PAUL = IKEA * 8,吃ㄧ次 PAUL 高級法式早餐可以去 IKEA 吃八次超值早餐)。好歹人家 IKEA 也是瑞典外商耶,新莊店地方大、視線好、燈光美、氣份佳、咖啡無限續杯喝到胃潰瘍病發,氣勢上完全不輸給 PAUL (可以這樣比嗎?)。IKEA 真的很挺吳院長,不虧是庶民經濟的典範 (這就是愛台灣啦!)。

以上內容都不是重點。本篇的重點是,當 Teddy 付完錢來到門口時,哇勒,靠北...邊走,Teddy 的那一支小雨傘呢?不知道是哪一位 Teddy 的仰慕者,專程或是順手帶走了。往捷運的途中,再次經過誠品。難道是天意要 Teddy 幫台灣拼經濟,只好跟早上看到的那一位賣雨傘攤販買了一把雨傘。馬總統,Teddy 無意中又挺了你一次。

等一下,Teddy 在此強烈呼籲,鄉民們沒事還是不要去 IKEA 新莊店吃早餐,尤其是假日,以免 Teddy 去的時候找不到位子。

友藏內心獨白: 用餐費用有包含雨傘意外險嗎?

2009年11月27日 星期五

我真是猜不透你啊:Scrum 篇

11/27 01:22~02:12

對於一般公司內部未採用 Scrum 的鄉民而言,Scrum 這種旁門左道、邪門歪教,還是敬而遠之,沒必要也沒興趣接觸,以免中邪 (鄉民:只有加班才是王道的啦)。只不過,當鄉民們不小心路過,又不小心看到若干 Scrum 邪教的奇怪儀式時,便產生了以下疑問:

  • 你們為什麼每天早上上班都要先罰站? (Daily Scrum = 罰站)
  • 你們開會的時候為什麼都在玩牌? (Poker Game = 賭博)
  • 白板上的小紙條寫了你們的名字,好像在標會喔。 (Task Board = 標會)

其中以玩牌這件事,最容易引起鄉民們的白眼 (上班玩牌,這麼爽,人家也要參一咖)。Teddy 曾經聽鄉民說過,看到 Scrum 團隊在會議室聚賭(sprint planning meeting),差點打電話跟 警方 老闆舉報。剛開始的時候,Scrum 團隊成員也曾經試圖跟鄉民們解釋,這撲克牌是用來估算需求大小 (story size) 以及工作時間 (task)。鄉民們聽完之後總是半信半疑的離開 (鄉民內心獨白:你當我傻子啊,這麼好騙)。後來如果再有鄉民問起,有某位 Scrum 團隊成員乾脆說:我要去叼13支了

這種「只有 Scrum 團隊可以公開在公司玩牌」的爽度,非 Scrum 成員無法理解。至於鄉民們,只能學學唐牛,大聲的喊出:

Scrum,我真是猜不透你啊!


友藏內心獨白:ScrumMaster 有時是莊家,有時是會頭。

2009年11月25日 星期三

Retrospective Meeting = 許願池

11/25 22:24~23:55

許願池,常見於各大廟宇以及名勝古蹟之中。不管願望能否實現,丟個銅板,就可以擁有「有夢最美,希望相隨」的片刻。對於出門在外手頭不方便的鄉民而言,順手撈幾個銅板就可以換一個國民便當或是買一張回家的車票,省去攔路要錢的尷尬。Producers 和 Consumers 各取所需,王不見王。從軟體架構的角度來看,此種 decoupling 的特色,相當具有擴充性。

許願池的種種優點,做軟體的朋友們當然也發現了。別說 Teddy 騙廣大的鄉民們,就在 Scrum 中,每個 sprint (iteration,一個固定長度的開發週期,通常介於 2 - 4 週之間) 結束時都要進行的活動 -- retrospective meeting -- 就是開發團隊的許願池啦。

Retrospective meeting 照字面解釋,就是「回顧會議」,這是 Scrum 設計用來改善開發流程的一道關卡,每一個 sprint 結束之前都要過這一關。在這個會議當中,開發團隊討論在這個 sprint 當中,哪些事情作的很好,要繼續維持。哪些作的不好,應該改善,並挑出幾個比較重要的改善項目列出改善的行動方針。以下是幾個例子:

好的部分:
  • 導入 Scrum
  • 有一個公開的 product backlog
  • 有訂定產品的 release plan
  • 有持續整合的環境
  • 有自動化功能測試案例與測試環境
有待改善: 
  • 電腦效能不佳 (都是 Vista 的陰謀啦)
  • 沒有寫 unit test
  • 沒有 pair programming
  • Tasks 完成條件定義不清
  • ezScrum 太慢 (這是真的有人提出... 嗚嗚...)
改善行動方針:
  • 長期目標:增進工作環境效率
    • Action Plan: 增加記憶體到 4G
    • Action Plan: 安裝 Vista SP2 (或是 窮得只能超頻?)
  • 長期目標: 所有 methods 至少都有三個對應的 unit tests
    • Action Plan: 安排1個小時的 workshop 教導 JUnit 使用方法
    • Action Plan: 下個 sprint 每個人至少寫 3 個 test cases
  • 長期目標:50% 的開發工作都以 pair programming 方式進行
    •  Action Plan: 因為目前工作環境並不適合 pair programming,因此先改善工作環境。首先向公司申請 22" 螢幕、無線鍵盤、滑鼠。

由於開發流程改善是一條很漫長的路,有多長,這 麼 長... 長到你看不到底。所以,很多改善項目需要長時間的關注。例如,光是做測試這件事,就足夠玩個一年半載以上,才能小有成果。所以,為每一個改善項目訂定長期摽,然後列出本次的 action plan (行動計畫,就是下個 sprint 準備採取的改善措施)。這樣,週而復始,無限迴圈卯起來改善流程,便可達到:「人人有事做,月月有錢領」的最高境界 (一直到 stack overflow 為止)。

*****************************************************************************************

眼尖的鄉民看到這裡應該會問:這和許願池有什麼關係。是滴,以往沒有 retrospective meeting,開發團隊可能老早就發現很多問題,但是苦無 call in 管道可以暢所欲言,以至於長期悶在心中,很容易得內傷,影響工作效率。久而久之甚至導致團隊成員移民到其他公司。有了 retrospective meeting 之後,給了各位頭家一個「嗆聲」的機會和管道。就像許願池一樣,錢丟下去,願望會不會實現是另一回事,至少聽到噗通一聲當場爽一下也好,可以減少得內傷的機率。

Teddy 在 retrospective meeting 中看過一些比較有趣的願望包含:
  • 冷氣太冷,快得 H1N1 感冒,影響工作效率。
  • 要去參觀資訊展,看 show girls 了解一下競爭對手的產品。
  • 政躬康泰 ,皇上吉祥
  • 股市上萬點
  • 長命百歲
  • 世界和平
  • !#%!@#~
總之,每個 sprint 花一、兩個小時來了解民間疾苦、收攏人心、開開競選芭樂票、罵罵老佛爺,比起傳統無聊到爆、火氣很大、忙著找代罪羔羊的大鍋炒會議,這種 C/P 值超高的活動,還不趕快去弄一個來玩。

搞笑談軟工之前世今生

11/25 01:49~03:00

當年為了學人家趕流行,不是帥哥更不可能是正妹的 Teddy,在 2007 年六月時開了這個部落格。當時心想,身為一個資工博士ㄕㄣ,至少也看了幾百篇的軟體相關 papers,應該有很多「料」可以寫。如今回頭憶當年,2007~2008 年 Teddy 只寫了 10 篇,平均 55 天才寫一篇。為什麼產量這麼少?以下是「史蒂芬周」的分析:

看看 Teddy 的第一篇部落格文章 Pattern Languages and Patterns,居然還有參考資料,把部落格搞的好像在寫論文一樣 (好吧,Teddy 承認,裡面的內容的確是從之前發表過的論文中抄下來滴)。沒創意又太無聊了,失敗。

在第三篇文章 例外處裡 (1) 中,Teddy 奮發圖強了一下下,終於寫了一篇新的文章。不過寫論文養成的壞習慣還是沒改,文章裡面還是有「參考資料」。搞笑只搞了半套,失敗。

 *************************************************************************************

 2008 年的文章,已經少有參考資料,這是一種慢慢從書呆子變成正常人類的好現象。可是,這個部落格的內容到底要寫些什麼,用什麼風格寫,Teddy 還是沒有掌握的很好。

時至 2009 年,在 Kay 的推薦之下,Teddy 有幸看了三本奇書 (學校圖書館有喔),終於開竅了。這三本大作分別是:
前兩本書的作者是廣告人,第三本書的作者是電視人。姑且不管這些奇奇怪怪的書名與內容在談什麼,這三本書有一個共同點,那就是淺顯易懂且很好笑


曲高和寡這成語大家都知道,但是做事的時候卻還是無法避免唱高調的習慣。尤其是書讀的越多,越不容易放下身段。軟體工程這種東西,說實在的,大部分都很無聊。要怎麼把枯燥的內容講給一般的地球人了解,這就需要下點功夫了。
 
*************************************************************************************

幾天前在某個學弟的「非死不可」上面看到一則留言,提到學弟和他的老闆在輕鬆談軟工部落格發表了一系列作品。不過這不是重點,重點是鄉民甲的回應:

「看完輕鬆談軟工之後,怎麼覺得很不輕鬆」

Teddy 笑了

*************************************************************************************

前幾天 Teddy 才發現,Teddy 的部落格沒有主題。嗯,就叫做:「搞笑談軟工吧」。


友藏內心獨白:「看完搞笑談軟工之後,怎麼覺得很不好笑」

2009年11月22日 星期日

Scrum + 國科會計畫書 = 研發抵免

11/22 00:34~01:42

各位鄉民們,如果剛好在台灣念過研究所,而老闆剛好需要提國科會計畫,則多多少少都有機會參與國科會計畫的撰寫,才不枉被稱之為「研究 ㄕㄣ」(要學功夫足球裡面周星馳的發音)。

有此經驗者,一定和 Teddy 一樣,心中暗自咒罵著老闆。在 Teddy 念研究所這 N 年中,參與了約 20 年份的國科會計畫書撰寫 (鄉民甲:Teddy,敢問您研究所念幾年啊)。所謂好人有好報,辛苦的付出就在工作之後獲得回饋。

看過 Teddy 大作「美簽:快速簽證之學術面談」的鄉民們都知道,Teddy 只是在一家民間公司當個小工程師,開發軟體,寫寫程式。這看起來跟國科會計畫八竿子打不著。錯!就在一個多月前,Teddy 任職公司的行政人員突然通知大家,因為公司要申報研發費用抵免租稅,因此需要工程師填寫研發資料。這個突如其來的要求,很多人都不知道該怎麼回應。好里佳在,對於擁有「參與20 年份國科會計畫書撰寫經驗」 的 Teddy 而言 (唸起來還真給它繞口),只能算是小 case 的啦。

不過,話說回來,光有計畫書撰寫經驗還是不夠滴,總是要生出實質內容吧。還好 Teddy 上班這一年以來,都乖乖奉行 Scrum。所有的開發時程、需求、施工內容一應俱全,而且有把它存到電腦中。此外,當然也包含可以動的軟體和精美的使用手冊 (不像有些學生 OOP 作業寫不出來最後只交一份程式屍體,害助教還要開棺驗屍才能打分數)。經過這次事件之後,Teddy 應用 OOAD 的技巧,推導出一個軟體從業人員不可不知的公式:

Scrum + 國科會計畫書 = 研發抵免

前後約三個工作天就把10幾頁的資料交出去啦。負責收資料的行政人員非常滿意,還跟 Teddy 開玩笑說:「要提名 Teddy 為優良員工」 (可是公司根本沒有這項選拔活動啊)。


不過,此時 Teddy 內心又冒出小小的吶喊:「寫歸寫,Teddy 可不保證最後能否通過國稅局的抵免審核」。畢竟 Teddy 參與過的這 20 年份的經驗,也不是每次都有要到錢的啦 (這都是阿共的陰謀啦)。

總之,各位「研究ㄕㄣ」,下次老闆要你幫忙寫計畫書,絕對是替你未來就業著想,乖乖寫,可不要偷懶亂寫一通,最後又跑回學長身上啊

2009年11月21日 星期六

窮得只能超頻

11/21 12:00~13:20

超頻這種舉動,就好像把一台時速只能跑120公里的房車硬ㄍㄧㄥ到200公里,是一件很危險的行為。而且會消耗更多的能源,不符合節能減碳的潮流。Teddy 已經過了追求速度與刺激的年齡,一切只求「穩」,因此買電腦的時候,不曾把能不能大超特超這個因素考慮進去。

Teddy 手邊這一部 ASUS P5B Intel Core2 E6400 (2.13 GHz) 桌上型電腦,已經賣命的服務了兩、三個年頭。最近這幾個月是越來越不爭氣,只不過跑個 VMWare、FireFox 開個三、四十個 tabs、寫寫文件、偶爾開個 Eclipse,在使用上常常會有lag 的感覺 (難道是 Teddy 要求的太多了嗎?)。

也許是這台 P5B 受到馬總統的感召,要 Teddy 一起拼經濟 (像 Teddy 一樣的薪水階級小老百姓,拼來拼去怎麼都是拼到別人的經濟 ?)。難道 Teddy 也該換台新桌機了嗎,不知道現在的地球人大概都多久換一台電腦?

這幾天花了點時間在 PCHome 上研究一下電腦規格和價錢,既然 Teddy 手邊這台是雙核心的,下一台應該至少是四核心起跳吧。嗯,看了一下報價,新的「愛妻 (i7)」 、「愛我 (i5)」等級的電腦,最爛的也都要兩、三萬起跳,買這個肯定會被罵的啦。好吧,那不要買最新的,此時 9999 這個數字刺傷了 Teddy 的眼睛:

Acer「霹靂戰神」四核燒錄電腦

  • 處理器:四核 AMD Athlon X4 630 (2.8GHz)
  • 記憶體:1GB,4 組記憶體插槽,最高可到 8GB
  • 硬碟:320GB
  • 光碟機:全功能DVD燒錄機
  • 其它:讀卡機、原廠鍵鼠組、HDMI 輸出
這樣的配備,甘愛 (需要) 兩萬嗎?不用;甘愛一萬嗎?也不用。只要 9999。如果再買個兩條2G的記憶體 (再加 3000 左右),加上 Teddy P5B 上面現有的兩條2G,就有 8G RAM。安裝 64 位元作業系統,這樣應該可以多跑幾的 VM 來玩一下不同的 OS。
這組 C/P 值看起來頗高的桌機,應該就是 Teddy 理想的選擇啦。

依照往例,Teddy 的異想世界又破功了,只是提出購買意願書就被駁回。Teddy 還不想引發家庭革命,只好鋌而走險,把腦筋又動回 P5B 身上了。

嗯,電腦太慢也許是驅動程式太舊了,看看有沒有什麼驅動程式可以更新的先。連到 ASUS 網站,好樣的,果然是「X碩品質,以卵擊石 堅如磐石」,上面居然有最近才更新,可以支援 Win7 的最新驅動程式。這真是佛心來的,太感恩了,趕快盲目的卯起來把能更新的軟體一次更新完畢。只是有點擔心,同時吃太多藥,不知道會不會藥物中毒,互相衝到。

歷經 N  次重開機之後,耶,嗯,啊,喔... 新的 GeForce 7300 GT 驅動程式以及Intel 晶片驅動程式好像有讓電腦感覺稍微順了一點。此時 Teddy 心中傳來小小的吶喊「超頻、超頻、超頻」。還好 P5B 的 BIOS 超頻選項設計的很好,連 Teddy 這種超頻小白也可以輕鬆完成。先操個 10 趴看看。

 

由 2.13 GHz 變成了 2.34 GHz,雖然只小小的增加 200 MHz 的速度,用起來好像順了不少。免錢的提升性能,撐一陣子先,如果夠穩下次試看看 15趴。

友藏內心獨白:好希望跟阿扁一樣「窮得只剩下錢」,而不是「窮得只能超頻」

2009年11月20日 星期五

麥甲我蓋布袋, Part 2

11/20 00:45 01:10

Teddy 繼上次冒著生命危險在學校糾正一位在大樓內抽菸的學弟之後,膽子變小了許多,但心中那把微弱的正義之火還是伺機死灰復燃。今天 Teddy 又做了一件極可能會被蓋布袋的事,詳情如下。

Teddy 因為脖子痛到住家附近的小醫院復建已經有三、四個月的時間,今天晚上依例又到醫院報到。由於今天沒有復建科門診,天氣又冷、Teddy 去的又晚,復建室裡只剩下四、五個病人。當Teddy 在做「熱敷 + 電療」的時候,坐在 Teddy 旁邊的某位中年女性病患 (簡稱 X 女士),居然拿著疑似 PSP 在看韓國演唱會的影片。人家看她的影片關 Teddy 什麼事?沒錯,X 女士在 Teddy 到之前就已經在復建了,原本她要做什麼是不關 Teddy 的事,但是她並沒有戴耳機,直接把聲音用很大的音量放出來。當 Teddy 坐在她旁邊復建時,X 女士旁若無人,繼續看她的影片。Teddy 總是相信人性本善,給了X 女士一分鐘改過自新的機會,誰知道她不善加利用,依然故我,於是 Teddy 側身對X 女士說:「 歐巴桑 小姐,可不可以麻煩妳戴耳機聽」。此時,一位身材略胖的男士(簡稱 Y 復建師),突然出現,把X 女士的PSP 拿走。原來這位Y 復建師是醫院的復建師,這台PSP應該是他借給X 女士的,當場小小間接的得罪了復建師。

現場短暫恢復了平靜,當 Teddy 做完「熱敷 + 電療」之後,要換場地做第二項「拉脖子」,此時X 女士已經做完「拉脖子」,又跑回「熱敷 + 電療」場地做其他復建項目,這個項目是需要Y 復建師徒手治療。鄉民們猜猜發生什麼事?沒錯,就在 Teddy 被綁在「拉脖子」的機台無法動彈的時後,Y 復建師又跟X 女士熱絡的大聲聊天,還開著類似搖滾音樂助興。

20分鐘過去,Teddy 做完「拉脖子」項目,離開前跟現場另一位資深的復建師反應,請她轉告Y 復建師:「要聽音樂請戴耳機,不要把復建室搞的跟舞廳一樣」。就這樣,會給 Teddy 蓋布袋的嫌疑犯又加了 2 個人。

難道是 Teddy 太「龜」了嗎,連別人聽個搖滾重音樂都無法忍受?還是嫌疑犯X+Y的公民與道德亦或是國文不及格,把「己所不欲,勿施於人」直接改成「己所欲,強施於人」(獨樂樂不如眾樂樂?)。乾脆下次 Teddy 也把手機帶去,現場播個大悲咒什麼的好了(收妖)。

友藏內心獨白:不是說過地球很危險了,你還在這幹麻?

2009年11月17日 星期二

Teddy 的 Pair Programming 之旅

01:00~02:10

簡單的說,pair programming 就是兩個人共用一部電腦,坐在一起開發軟體,一個動手,另一個閒著 看著,並不時提供意見 (如果沒在啃雞腿、吃泡麵、看連續劇、或睡著的話)。也許叫做 pair developing 會比較貼切一點。問題是 Kent Beck 大哥用了pair programming 這個名稱,晚輩們不敢造次,繼續沿用。

此時 Teddy 又聽到鄉民們的怒吼:「什麼,人都不夠用了還兩個人一起寫,這麼爽。兩個人分開寫不是比較快」

的確,連小學生都會的算數:一個人一小時寫 20 行程式,請問兩個人分開同時寫,一小時可以寫幾行?
答案是:「40 行」

那麼,如果兩個人一起寫,一小時可以寫幾行?
答案是:「20 行」

所以,你的老闆一定反對 pair programming ,因為生產力變成一半。

*************************************************************************

鄉民們有看過「實習醫生」這部影集嗎?片中的實習醫生或是住院醫生,想盡各種辦法,都要陪著「主治醫生」一起進開刀房動手術。手術室中除了若干位醫生,還有護士、麻醉師、操作醫療儀器的技術員等。耶,那開醫院的人一定都是笨蛋,因為這樣生產力變成 1/N。

為什麼動手術需要這麼多人?因為「品質(人命)」比「速度 (生產力)」來的重要。

此外,很多位醫生一起動刀還肩負著 相互監視「經驗傳承 (教學)」的目的。在動手術的過程中,資深醫生會和實習醫生對話,測試他們對病況了解的程度與應對方針是否洽當。時機成熟也會讓實習醫生們動動刀 (可憐的病人...)。

當遇到很棘手的案例時 (例如,切除不良腫瘤),有時需要動用到多位資深的醫生一起動刀。所以不一定都是資深醫生搭配實習或住院醫生。

*************************************************************************

如果我們看重的是「程式的品質」而不僅是「寫程式的速度」,那麼 pair programming 就很有意義了。因為 pair programming 同時具備 coding、review、testing、 refactoring、learning 等目的,是一種殺傷力很強的武器。但大家也都知道實施 pair programming 不容易。為什麼?扣除大家熟知的環境因素 (沒有開刀房 沒有大桌子、大螢幕)、配對因素 (熟手配熟手、熟手配生手、生手配生手、男生配男生、男生配女生、女生配女生、團團配圓圓、地球人配火星人...)、不信任 (覺得生產力剩下一半、浪費時間、無聊...) 以外,在 Certified Scrum Master 課程講義中有提到一點:

因為 pair programming 打破人的界線 (boundary)

Teddy 很同意,咱們台灣人連「藍綠蜘蛛網」都打不破了,更別說要打破人的界線。

*************************************************************************

Teddy 提一下自己擔任 Scrum Master,在專案中鼓吹 pair programming 的經驗:

  • phase 1,政令宣導:鼓勵團隊有機會的話儘量採用 pair programming 。結果是,沒人理Teddy。
  • phase 2,自己下海:找一、二個團隊成員來和 Teddy pair。成效還不錯,不過自己累的半死。當 Teddy 停止抓人來配對之後,也沒有人繼續嘗試。
  • phase 3,強迫中獎 I:告訴團隊這個sprint所有開發工作都要以pair programming的方式進行。結果,成效很好但只維持兩個sprints。畢竟強制的方式無法持久。
  • phase 4,無為而治:。從此不再特別強調,由團隊自己決定。經 Teddy 非正式估算大概只有10~20%左右的開發工作會採用pai programming。

說真的,到了這個階段 Teddy 已經沒輒也沒力了。Teddy 自己非常相信 pair programming 的 「藥效」, 但良藥苦口,團隊不肯安心按時服用,Teddy 也不能強迫 (難道真的是叔叔有練過,小朋友不肯學嗎?)。雖然在 retrospective meeting 經常會有人提出需要增加 pair programming 的時間,但神奇的是,等到真正領取工作的時候,又是各做各的比較多 (也許 retrospective meeting 缺少 action plan?)。

  • phase 5,強迫中獎 II:以往在估算 tasks 的時候,團隊只估算一個人做這件 task 所需的時間。也許是這個因素,導致於一個 task 通常只由一個人完成。從上週開始,團隊在 sprint planning meeting 時,就大致決定哪些 tasks (約略 80%) 需要採用 pair programming ,將其所需時間乘2,並且在 tasks 上面寫一個 P 字 (不是維大力P),提醒團隊這是一個經過大家同意,需要 pair programming 的工作 (而且已經分配兩倍的時間)。由於才實施一週,因此長期成效尚難斷定。不過目前感覺起來這是 Teddy 試過的幾種方法中比較好的。當然,決定採用這種方法之前,Teddy 還是循循善誘一番,且經過團隊同意才實施。

友藏內心獨白:什麼是「藍綠蜘蛛網」?

2009年11月14日 星期六

掛羊頭買狗肉:Scrum篇

幾個禮拜前接到指導教授打來的電話,告訴Teddy系上的C老師想邀我回去給一場演講。我心想,應該是研一的「專題討論」這門課,Teddy以前也上過。大致上就是每兩週找一位校外人士來演講,雖然偶有佳作,但大部分的演講內容都是鴨子聽雷。這種感覺好比買樂透一樣,買的時候充滿希望,開獎的時候卻屢屢槓龜。好吧,終於換我荼毒學弟了,欣然答應。

就像老祖宗常說的:「代誌不是憨人想A駕泥簡單」,這回Teddy又錯了。幾天後Teddy收到C老師寫的email,原來是這學期學校在大一新開了一門必修課叫「大學入門」(友藏內心獨白:這是什麼東東,我還佛學入門勒),專門給大一新生一些大學生涯的概念。這落差太大了,從研一變成大一,一下子年輕了四歲。這還不打緊,最重要的是,Teddy沒有唸過大學啊,要講什麼?可是都答應了,又不好拒絕,只好硬著頭皮上了。

就在Teddy即將完全忘了這件事的時候,這禮拜一再度收到C老師的email,通知Teddy不要忘了這禮拜五的演講(就是今天啦,13號星期五,還真會選日子)。哇,這麼快就到了,還沒想到當天要唬爛的主題…還好,前一陣子去上了 Certified Scrum Master 課程,就來講這個好了。

「休蛋一A」,此時Teddy聽到鄉民們的怒吼:「跟大一生講這個會不會太超過了,況且和主題也不符」。正所謂「狗掀門簾,全仗著一張嘴」,沒錯,這時候只能發揮想像力,生命會找到出路的。

Teddy去之前就在想,這門課排在禮拜五七、八節,這不是引人犯罪嗎?這種不翹課對不起父母的時段,果然很適合這種營養學分(這…有算學分嗎?)希望到時候沒有人啃雞腿、吃泡麵、看連續劇….

15:10準時上課,C老師帶著Teddy,一踏進教室,C老師就說:「人怎麼這麼少」(依Teddy目視判斷,應該只來了一半吧)。意料之中,Teddy終於當了一回事前諸葛亮。

演講歷時約70~80分鐘,精采程度不在話下。原本有一個Scrum練習要給學生們做,為了不耽誤大家回家的時間,就取消了。整個過程下來發生幾件令Teddy十分感動的事:

  • 沒有人吃雞腿或泡麵(好樣的,比台大醫科水準還高)
  • 睡著的人只有6個左右(也不錯,水準跟台大醫科差不多)
  • 完全不理會Teddy而自顧自聊天的人控制在5-8人左右
  • 睡著的都很安靜,沒有打呼吵到隔壁聊天的人
  • 聊天的人也很自制,放低聲量沒有吵醒隔壁睡覺的人
  • 學生中有一位是友邦的黑人同胞,應該聽不大懂中文吧。可是她撐到最後10分鐘才睡著(因為之前都在忙著和隔壁的人聊天,辛苦您了)

另外,有兩件不應該發生的事:

  • 有一個坐在Teddy演講位置前方的學生,居然整場都給予Teddy很認真的表情和眼神。敢問這位仁兄,您是咖啡喝太多了嗎,這麼有精神!
  • 另外,現場控管不好,居然被滲透了兩、三位研究所的學生。你們大學應該都有畢業吧,還來湊什麼熱鬧。

想看看Teddy賣了什麼狗肉,這裡有演講投影片可下載:http://pl.csie.ntut.edu.tw/~ctchen/pdf/csie-2009-11-13-v0.2-blog.ppt