從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup

首先感謝 AgileCommunity.tw 辦了這場活動,大家討論的非常熱烈,分享了各自的團隊經驗,真是愉快的活動。

我投的題目是「從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup」,這個問題最早是我剛看 Lean Startup 時的小感想,加上被喲哪桑和自己的團隊施行 Scrum 所到碰到的問題和經驗。到底 Scrum 這麼多人推薦和著書的敏捷方法,會不會有什麼不一定適用的地方。所幸接著看到 Kanban and Scrum 這本書,作者將 Kanban 和 Scrum 做了比較,例如同一個 Limited WIP 的概念,不同工具只不過是用不同手法表現出來:Scrum 用 Sprint 固定開發週期,Kanban 用每一個流程狀態來限制。當我讀到這裡時,就體會到了工具只是工具,勿以器馭心。這又才解答了不少我對開發方法論的疑問。

所以我們團隊開始從 Scrum 改用 Kanban 了嗎? 目前算是某種混合的狀態吧,不是說用 Kanban 就要把 Scrum 的東西通通丟掉,就不斷地持續調整中:用 Kanban 增加了施工前和施工後的產品開發流程,並開始加上 WIP 限制。另一方面,則減少了 Sprint 固定開發週期的要求。

p.s. 「勿以器馭心」是宮本武藏的名言,出自簡體版的 Kanban and Scrum 翻譯

Mac 推薦軟體 (2012)

好像每年都整理一次的推薦清單,最近趁換了一台 MBA + Lion 就全部重灌了。跟去年的推薦軟體相比又拿掉了一些 App,有一些功能 Mac 10.8 內建了(可以跟 iPhone 同步的Notes, 訊息中心…etc)。

  • Yahoo! KeyKey: 必備的中文輸入法,最近還有看到小麥輸入法,但是我不知道差在哪裡 XD
  • Chrome: 慣用的預設瀏覽器
  • Firefox: 有許多好用的網頁設計 Plugins,例如 Firebug、YSlow、Web Developer 等。
  • Sparrow*: 取代內建的 Mail 軟體。可惜公司被 Google 併購了,可能不太會更新了 :(
  • SubEthaEdit * 協同編輯器,若同事也都用 Mac 超級推薦,可以多人同時(即時)編輯一份文件。我用來當做一般文字編輯非常順手。
  • Mou: Markdown 所見即所得編輯器,寫長篇文章用。
  • iWork* : 包含投影片 Keynote、試算表 Numbers、文件編輯 Pages 三套軟體,也可以拿來開 Microsoft Excel、Word 也大多都可以順利開出來。
  • LittlleSnapper*: 抓網頁或螢幕的 screenshot 並加以管理、加註。
  • Skitch: 螢幕抓圖工具,更棒的這可以直接網路分享,非常方便可以當做溝通工具。
  • VMware Fusion*: 可以在 Mac 上跑其他作業系統,最常見的被迫需求情境是 Windows + IE 瀏覽器。
  • LaunchBar* : 鍵盤快速啟動應用程式的好物。不想花錢的話可以試試 QuickSilver
  • VLC 放影片
  • Pixelmator*: 影像編輯軟體,功能類似 Photoshop,但不用這麼貴… XD
  • Adobe Reader
  • KKBOX*: 聽正版音樂,有出 Mac 版就甘心。
  • Moom : 透過快速鍵切割視窗畫面,可以很方便地安排左右視窗,適合大螢幕
  • Flux: 根據時間自動調整螢幕亮度
  • OmniDiskSweeper: 磁碟清理工具,可以很方便地找出到底哪個檔案跟目錄是最佔空間
  • OmniGraffle*: 畫 Wireframe 超棒,可以搭配 YUI Stencil KitWireframe PaletteUX TemplateMore
  • Snapz Pro X* screencast 錄影

網路相關

  • Nally: Mac 上超棒的 BBS 軟體
  • Panic Transmit*: Mac 上超棒的FTP軟體,好操作介面佳,還支援 Amazon S3。
  • Twitter: Twitter 的桌面軟體,我會特別需要桌面版的 Twitter 軟體是因為我有多個帳號需求。
  • Skype: 喂喂,工作用。搭配 without the whitespace 服用
  • Colloquy: 要上 IRC 的時候用
  • Dropbox
  • WiFi Explorer: 可以觀察無線網路的訊號強度跟使用頻段,你可以將你的基地台設到干擾較小的頻段唷

程式開發

  • iTerm2: 支援多 Tab 的 Terminal,我主要拿來做 SSH 登入
  • XCode: 開發 iOS 用
  • Eclipse: 開發 Android 用
  • Homebrew: 套件管理工具,詳見這篇文章,我拿來裝 git, wget, mysql, redis, postgresql, rabbitmq, imagemagick, apple-gcc42 等等
  • Sublime Text 2*: 拿來取代 Textmate 了,寫程式用的編輯器。最近也想試試 MacVIM 啦。
  • GitX: Git GUI (有個 Fork 版有 sidebar 不錯)
  • Sequel Pro: MySQL 的 GUI
  • Navicat* : 比較專業的 MySQL+PostgreSQL+SQLite GUI,覺得最方便的是支援 SSH 登入遠端操作資料庫(畢竟很少情況會開 3306 Port 可以遠端連線),另外處理編碼也很聰明,印象中很少看到出現亂碼。如果你有舊版本MySQL的編碼問題無法順利dump出來,可以試試。

Dashboard

(加 * 的是付費軟體)

個人網站(部落格)十周年紀念

Update(2012/8/3): 這一篇早就寫好,但是存成 Draft 忘記貼出來…XD

十年前的今天(2002/7/24),那時候是大一升大二的暑假,我用了 PHP4 架起了自己的留言板,那時候只是隨便記錄一些碎碎念(tweet?),還允許大家來留言板留言(塗鴉牆?),三年後(2005/9/9)才換成 WordPress 至今,很幸運地,所有文字都還保留著(有丟失過一些使用者留言)。

2003~2010 每年大約寫10萬到15萬字,除了2006有45萬字,那一年寫了一大堆讀書心得。去年2011起產量大大銳減,像今年到現在才不到3萬字。可能是因為自己老想準備的多一點再寫,結果很多東西千頭萬緒,一拖再拖結果什麼也沒寫成。另一個原因大概是 Twitter 吧,不少心得都透過 Twitter 抒發了 XD

「發表是最好的記憶」,期許自己努力多寫點囉。

Git rebase 和 merge 合併操作示範錄影

昨天的 Git 教學投影片 還蠻多人按贊分享的,謝謝大家。不過其中少了重要的 live demo 覺得有點可惜,所以來把其中最有趣的一段錄下來好了。第一次錄影加聲音發現還蠻緊張的,獻醜哩。

這是先用 rebase 整理 commit history (包括修改訊息、修改內容、刪除、拆開、新增和調換commit順序),然後再進行 merge 的示範。但誠如我投影片 p117~p118 所說,這是一種追求完美潔癖龜毛的作法,但是看到最後的 commits 線圖這麼漂亮,就覺得值得啦,而且中間的過程很有趣不是嗎? XD (除非一直發生 rebase conflict 情況啦,那就不好玩了,請量力而為 :p)

情境是我們想把 feature/forum 這個 branch 合併進主幹 master,這是合併前:

以下是直接在 master branch 做 merge feature/forum 的合併結果。你會發現 feature/forum 與 feature/chatroom 這兩個分支出現交疊的情況,當合併的分支一多,線圖就容易變得雜亂:

以下是改成用 rebase 整理之後再 merge 的方式,做出漂亮的合併線圖:

ps. 如果有人想練習的話,可以 fork sandbox 這個專案(純粹練習git,是個亂寫的rails專案)。

ps. rebase 也可以參考鴨七的這篇文章

Git 教育訓練課程投影片

Update(7/21): 我把 p117 rebase 和 merge 操作的示範 錄成影片啦 :)

這是最近準備的 Git 教育訓練課程,加上 live demo (一般操作、merge、reset、rebase等等示範) 時間大概是三個小時。其內容主要基於去年的演講,新增了Git內部原理(p36~51)、分支模式(p143)和更多 Tips(p168)內容等等,總頁數從117成長到198… XD

再次感謝 schacon 公開的 OmniGraffle Diagrams 圖檔讓我可以改來用 :>

敏捷開發與 Scrum 分享投影片

Update(2012/7/16): 由於投影片部分內容引用自 ezScrum 課程教材,不適宜公開,非常抱歉。他們的課程非常棒,推薦大家報名 Scrum敏捷方法實作班

這是今天在公司內部講的 “敏捷開發與 Scrum” 投影片(大概花了一個小時講,加上另一個小時實作練習),不是什麼經驗分享演講,畢竟還沒有 Scrum 的實際導入經驗 XD 所以只是東抄西抄整理重點,見笑了。

認識敏捷開發的精神不是第一次,但 Scrum 流程倒是頭一回。上回參加 Teddy 的 Scrum 課程,其中感觸最深的就是 cross-functional team 概念,全部 team members 都要參與 Story 討論與估計,無論其技術或設計背景。而上週末惡補 Scrum 書體會最深的則是 self-organized team 的 empowerment 和 accountable (賦權與當責)概念,可惜我還講的不好就是了。總之,學了 Scrum 流程,再回頭看敏捷宣言又有不同的體悟。

期待之後有更多實務經驗可以跟大家分享囉。