Pages

Saturday, April 2, 2011

Hackathon in one day

Hackathon
你參加過 Hackathon 嗎?Hackathon 是一個活動讓 Developers 聚集在一起,一同合作開發寫程式,針對一個題目開發討論到開始實作測試,希望在有限的時間內可以做出一個成果。

這跟平常我們工作上開發會有什麼不同呢?平常開發針對分配到的工作會去切割細分,排定到每日工作,可能一天除錯一兩個大任務,可能一天開發一兩個大功能就差不多。但是 Hackathon 是讓所有參與的開發人員站在同一個火線上一起開發,速度和穩定性要求是相當的高的。

很榮幸在幾天前,我第一次參與,和工作上同仁自己舉辦了約 5 人規模 (兩位參加過 Hackathon 活動,三位沒有), 限定一個工作天的 hackathon 活動,我們希望可以做出可用的作品,定了一個社群的服務的主題,最後產出會有 Web 端可以用 Browser 連進來、Server 端資料負責儲存和運算、Mobile 端可以讓使用者拍照紀錄留言的整合。時間從早上 9 點鐘開始進行,過程當中除吃飯和上廁所之外,剩下的時間就是要非常專注的共同討論與一同開發。

好的合作模式:

  • 活動開始前一到兩個小時,確定題目和方向之後,開始腦力激盪討論可以做到的需求,先從發想開始,再開始收斂分類,找出我們今天內可能達成的目標。
  • 彩色便利貼是我們合作上很好的工具,我在之前 Post-it! My knowledge wall 文章有分享過,使用便利貼可以讓大家瞭解目前進展,全貌是什麼,也方便歸納與分類。
  • 使用了 37Signals's Campfire 系統,讓大家可以共通討論,搭配程式更新的資訊發佈,大夥們有在同一個火線上的感覺。
  • 充足的飲食,可以讓開發人員保持愉快心情之餘,也可以減少很多不必要的外出時間。
  • 在系統建置初期資料還沒出來前,先用 Mock Data 也可以為稍候的程式做開發與準備,不會因為要等其他隊友而呆滯。
  • Quick and Dirty,敲定好目標與範圍,馬上開發,程式碼要寫好,因為影響後面測試整合,甚至活動結束後還要持續開發,程式碼最重要,文件先不急。
  • 使用 Git 和 github 做好版本控管,利用 branch 之間 master 切換與 merge,讓開發可以上軌道。

一天運作下來,我們也會發現缺陷可以列入改進讓下次更好:

  • 要知道時間有限,非常的珍貴。
  • 要知道自己今日參與扮演的角色,負責開發的項目。
  • 平日要對於自己開發上可能會用到的工具要夠熟悉,這樣上火線才能快速打造。
  • 開發上卡住一定要求救。
  • 溝通規則要訂清楚,何時可以求救,如何求救。何時同仁可以被打擾,何時同仁不能被打擾,要先講清楚,這是考驗默契的地方。
  • 開發能力與經驗很重要。這是平日功力的累積,一上火線優缺點都會被放大,開發需要翻找資料花費時間、功能做不太出來要找原因花時間。讓隊友可以銜接自己開發程式功能順利,是個不錯貢獻能力。

在 Hackathon 活動讓我印象最深刻是,負責 Server side 的隊友在啟動整個程式專案,Launch and build up 整個 service 和 API 之快,讓我們 mobile 的開發人員可以趕緊接上整合測試,這是個多麼欽佩與學習的榜樣。 同時也內心問自己,我選擇負責 iPhone app 部份,我的開發速度夠不夠呢。

我在學習 互動設計,在 Usability Test 有一種方法是透過錄影來觀察使用者操作系統的行為,作為後續改進的參考所用。愛好運動看過 NBA 球賽也知道,每場球賽結束,教練也會跟球員一同再看重播節目,來進行討論與改進。如果進行 Hackathon 過程能夠有個錄影機在旁錄影,那麼這效果會非常好,一天紀錄下來,誰在討論開發階段做出好的示範、誰在開發上露出哪些不好缺點的都可以獲得記錄,作為未來更好的紀錄參考方式。

最後,身為開發人員的你和我,不論過去在學校上機測試有好的開發本領,或者過去工作上在解刁鑽繁雜程式議題有相當經驗,一定要親身參與這樣的活動,這樣即可發現自己的優點和缺點有哪些,可以作為自己未來不論是個人開發的技術養成,或者跟團隊合作的經驗,可以有很不錯實質的幫助與收穫。

2 comments:

  1. Nice sharing.Find latest Jobs in Asia,Europe,Africa & Gulf and all over the world at http://toppakjobs.blogspot.com

    ReplyDelete
  2. 真的是很棒的經驗呀!

    ReplyDelete