Same but Different

Preview:

DESCRIPTION

 

Citation preview

SameBut Different

2011年3月27日星期日

$speaker.meta

• 劉康民 Kang-min Liu id:gugod

• gugod.org• handlino.com 和多股份有限公司

2011年3月27日星期日

2011年3月27日星期日

芥納須彌禪宗公案

2011年3月27日星期日

唐朝時代有一個很愛看書的人叫李勃,,認識他的人都叫他「李萬卷」。

有一天去拜訪智尚和尚,他問智尚和尚:「我在佛書中曾經讀到『須彌山沒入芥子』這一句話。老實說,我有點搞不清楚,這麼一座大山如何裝進一顆小芥子中?請智尚師父開示。」

「你書讀的多,懂的事也很多,大家都叫你『李萬卷』,請問你那一萬本書是如何裝進你的腦袋裡?請你告訴我。」

李渤聽後,腦中轟然一聲,當下恍然大悟。2011年3月27日星期日

• 芥子的象中,有須彌的象

• 很大的東西能被放到很小的東西裡面

• 一小抹口腔黏膜,有能代表全身的 DNA

• Call by Reference

• 單一事實能代表無限多事實

2011年3月27日星期日

這是一匹馬 ⇔

這不是一頂草帽 + 這不定一朵花 + 這不是一張車票 + ... (窮舉)

2011年3月27日星期日

這是一匹馬 ⇔ 這不是{非一匹馬}

2011年3月27日星期日

狗兒的問題

2011年3月27日星期日

2011年3月27日星期日

2011年3月27日星期日

2011年3月27日星期日

1. 衝到柵欄邊

2. 「汪!」

3. 重覆上一步

2011年3月27日星期日

程式設計師的問題

2011年3月27日星期日

有一個專案團隊在正在開發如 Web Mail

的應用服務,專案負責人提出了「電子郵件轉傳真」的具體想法

2011年3月27日星期日

1. 「總之先改看看吧!」

2. (兩天後)「老闆我寫好了試看看吧!」

3. 老闆:「我寄過去的 .doc 檔案變成亂碼耶?」

4. 回到第一步

2011年3月27日星期日

問題的轉變

2011年3月27日星期日

1. 走到門邊

2. 走到肉旁邊

3. 吃

如何吃到肉?

2011年3月27日星期日

?2011年3月27日星期日

?? ?

2011年3月27日星期日

✓? ✓

2011年3月27日星期日

2011年3月27日星期日

1. 爆肝

2. 爆炸

2011年3月27日星期日

1. 爆肝

2. 爆炸

2011年3月27日星期日

好像沒下班

報價報太少

時程估不對

規格一直改

2011年3月27日星期日

程式設計師的修練

2011年3月27日星期日

• 如何達成想要的效果

• 使團隊合作更容易

• 使效率更佳

• 使安全性更強

如何寫出好程式

2011年3月27日星期日

• 慣例 (Convention)

• Coding Style

如何寫出好程式

2011年3月27日星期日

2011年3月27日星期日

Write clearly - don't be too clever.

2011年3月27日星期日

Make sure every module hides something.

2011年3月27日星期日

Make it right before you make it faster.

2011年3月27日星期日

Keep it right when you make it faster.

2011年3月27日星期日

Make it clear before you make it faster.

2011年3月27日星期日

Keep it simple to make it faster.

2011年3月27日星期日

Don't diddle code to make it faster - find a better algorithm.

2011年3月27日星期日

Use the "telephone test" for readability.

2011年3月27日星期日

OSS Team

2011年3月27日星期日

OSS Team

2011年3月27日星期日

OSS Team

2011年3月27日星期日

遊樂場

2011年3月27日星期日

遊樂場

2010 重大事件

2011年3月27日星期日

遊樂場

2010 重大事件

2011年3月27日星期日

day9.tv2011年3月27日星期日

遊樂場

2011年3月27日星期日

遊樂場

• TextMate + GitX + DTerm• Emacs• vim• linux + apache + mysql + php• Firebug + Console Log

2011年3月27日星期日

遊樂場

• OO + Polymorphism + Factory Pattern• String-based DSL + Fast Parser• Lazy Evaluation + Iterator + Callback• Event + Async• Functional(-ish) programming

2011年3月27日星期日

遊樂場

• Group-ware• IRC + Skype + Wiki• RT / Hiveminder / Redmine ...• Kanban• Pomodoro• GTD

2011年3月27日星期日

遊樂場

• 我很擅長 X, Y, Z 這三招,因此我都用採用這些方式來寫程式

• 個人招數

2011年3月27日星期日

妳用什麼物件系統?

2011年3月27日星期日

妳用什麼物件系統?

物件系統?perltoot 說用 bless 過的雜湊

2011年3月27日星期日

妳用什麼物件系統?

物件系統?perltoot 說用 bless 過的雜湊

2011年3月27日星期日

2011年3月27日星期日

勿使時程誤

日日勤食蟲

待辨如坑儒

專案似無涯

2011年3月27日星期日

脫離情境的思考

2011年3月27日星期日

2011年3月27日星期日

2011年3月27日星期日

?2011年3月27日星期日

?

?

?

?

?

?

?

2011年3月27日星期日

???

??✓?

?✓??????

???????✓??✓✓✓????

2011年3月27日星期日

簡化問題

2011年3月27日星期日

大事化小

2011年3月27日星期日

大事化尛

2011年3月27日星期日

大事化尛

• ? → ???

• 一個大問題應被重新定義成多個小問題,分開解決。

• 最後合併所有答案,得出解答

2011年3月27日星期日

大事化尛

•Divide & Conquer

2011年3月27日星期日

大事化尛

• Email 轉傳真

1. 如果 Email 附件是 {pdf, doc, txt,

xls, ... } 格式時,將其傳真出去

2. 如果 Email 沒有附件時,將本文傳真出去

2011年3月27日星期日

大事化尛

• Email 轉傳真

1. 先檢查 Email 附檔是否為 pdf

2. 將 pdf 轉成傳真機所能接受的格式

3. 輸出至傳真機

2011年3月27日星期日

大事化尛

• Email 轉傳真

1. 先檢查 Email 附檔是否為 X

2. 將 X 轉成傳真機所能接受的格式

3. 輸出至傳真機

2011年3月27日星期日

小事化無

• 小問題應能對應到已知的解題法,甚至答案

2011年3月27日星期日

• 描述問題時,一併寫下一些否定的敘述,能讓事實敘述更為準確

• Email 轉傳真

• Email 中不可以包含附件

• Email 中不可以包含 .doc 檔

2011年3月27日星期日

• 專案:線上留言版

• 使用者可以留言

• 留言內容最多可以 140 字

2011年3月27日星期日

• 專案:線上留言版

• 使用者可以留言

• 留言內容最多可以 140 字

• 留言中不可以包含超連結

• 留言中不可以包含圖片

2011年3月27日星期日

簡化解題過程

2011年3月27日星期日

• 要解決已知有解法的小問題,就是套用那些解法,也許加上適當的變形

• 合併答案

• 專案執行

2011年3月27日星期日

敏捷方法Agile Methodology

2011年3月27日星期日

• 專案執行一定需要充分溝通

• Agile: 邊做邊溝通

• 每天必有短會議確認進度

• 每周 / 月有長會議修正大方向

• 執行中討論規格

2011年3月27日星期日

對於個人而言:

• 「遊樂場」是否切合經常需要解決的問題領域

• 面對問題時,能不能對應到較容易解決的工具

2011年3月27日星期日

• Test-Driven Developing

• Cucumber BBD Testing tool

• Selenium Integration tool

• RSpec / TAP / qunit General testing tools.

2011年3月27日星期日

簡化答案奧義

2011年3月27日星期日

• PM / 發包者應定義好答案

• 至少確定答案的領域範圍

• 答案(專案成果),往往是固定的一類東西

2011年3月27日星期日

• 例:x+y=5, xy=6 求 x,y 整數解

• 例:設計 method 時,傳回值的型別(內建、自定、self)

2011年3月27日星期日

完成工作事項後,應達成的效果

2011年3月27日星期日

Acceptance Testing

2011年3月27日星期日

• 例:使用者點了「送出」鈕後,網頁中間應開出一朵花,表示表單正在送出中

• 例:使用者問「42?」時,機器人應回應「生命、宇宙以及任何事情的終極答案」

• 例:使用者在文字輸入中按下 Enter 鍵時,應立刻自動送出表單,不必另外點送出鈕

2011年3月27日星期日

以輸入法為例:

問題描述:使用者無法輸入『尛』這個字

應有效果:使用者在組字時按下「SSS」,應有『尛』出現在選字窗中。

2011年3月27日星期日

• 協同開發工具

• Wiki

• Story board

• Scrum

• Burn-down Chart

2011年3月27日星期日

程式設計師的頓悟

2011年3月27日星期日

報酬何處來

工程無實務

時程亦未艾

規格本無樹

2011年3月27日星期日

The EndBut maybe not

Kang-min Liuhttp://gugod.org

2011年3月27日星期日

Recommended