記一次 Hackathon 參賽經歷

兩個月前參加了一個 hackathon 活動,收穫不少經驗和教訓,原本很想記錄下來,可是後來一直忙於其餘事情,直到最近以爲再不動筆(動鍵盤?)可能就要淡忘了,因而擠出時間寫下了這篇文章。php

Hackathon 的定義

如下內容摘自維基百科:前端

「編程馬拉松(hackathon)」這個術語自己是一個合成詞,它是由「編程(hack)」和「馬拉松(marathon)」兩部分組成。編程馬拉松(英語:hackathon,又譯爲黑客鬆),又稱黑客日(hack day)、黑客節(hackfest)或編程節(codefest),是一個流傳於黑客(hacker)當中的新詞彙。編程馬拉松是一種活動。在該活動當中,電腦程序員以及其餘與軟件開發相關的人員,如圖形設計師、界面設計師與產品經理,相聚在一塊兒,以緊密合做的形式去進行某項軟件開發。編程馬拉松的靈魂是合做地編寫程序和應用。 編程馬拉松的時長通常在幾天到一週不等。編程馬拉松不是編寫些一次性做品那麼簡單。編程馬拉松的精髓在於:不少人,在一段特定的時間內,相聚在一塊兒,以他們想要的方式,去作他們想作的事情——整個編程的過程幾乎沒有任何限制或者方向。

我參加 Hackathon 的緣由

這仍是我第一次參加,以前在國內的時候就據說過,好像很火的樣子,前幾年流行搞算法競賽,可是可能純算法 coding 缺少團隊配合,很差玩,因而最近幾年開始流行 hackathon 了。我之因此要參加,有如下幾個緣由:git

  1. 一是想見識下開開眼界,湊個熱鬧;
  2. 二是想見識下牛人;
  3. 三是想提早體驗下組個小團隊從無到有創造一個產品(原型)的感受,爲之後有可能創業或加入創業公司作些準備,積累點經驗。

活動通過

此次 hackathon 賽事是咱們學校一個叫 ACM 的組織負責舉辦的。我看到有同窗在 QQ 羣裏發了消息,因而去學校的網站上報了名。程序員

活動的主題叫「Hack for the Homeless」,官網在這裏,主要是爲 San Jose 的流浪漢們開發一款手機 app 或一個網站,使得他們可以很方便地找到附近免費食物發放點和免費醫療服務點而且在發放食物前及時通知他們。說實話這個主題還挺有意義的,瞬間讓人充滿了技術改變世界的使命感。另外也容許不限主題開發任意一款 app 或網站,不過估計這樣拿獎比較難。算法

活動開始前幾天我聯繫了另外三位中國同窗(Hongsen、Kai、Yun)組成一支隊伍,簡單地商量了下 idea 和分工。因爲 Yun 比較熟悉 Ruby on Rails,而且已經有一個現成的後臺框架了,因此咱們決定作一個網站,後臺用 Ruby on Rails,前臺用 HTML/CSS/JavaScript,我主要負責編寫前端代碼,Yun 負責後臺,另外兩位同窗 Hongsen 和 Kai 主要負責產品需求分析和交互流程設計。編程

活動開始的時候,先是主辦方負責人上臺發言,而後由贊助商表明上臺宣傳自家的技術、平臺和設備。此次贊助商主要有 HTC、Microsoft、BlackBerry 和 Western Digital。app

以後 hacking 就正式開始了。。。框架

下面是活動中的幾個插曲:less

  1. 吃到中餐運維

    因爲活動是從下午 5 點開始,一直持續到次日下午 5 點。因此開始先吃飯,比較意外的是,主辦方提供的食物竟然全是中餐,當時把咱們幾個感動得淚流滿面啊。估計是由於舉辦方里面有很多 ABC 的緣故吧。比較反常地是此次參賽的學生裏面 40% 是白人,40% 是 ABC,純中國人不到 10%,卻是沒見到幾個印度同窗。

  2. Microsoft

    微軟此次派出了一位 Technology Evangelist,俗稱技術佈道師,就是向開發人員宣傳他家的技術和平臺,讓咱們在他家的平臺上開發產品,順便幫助你們搭建開發環境。這位技術佈道師播放了一段 Nokia Lumia 1020 手機的視頻廣告,視頻中還不忘諷刺了下蘋果的 iPhone 和 iPad。

  3. BlackBerry

    BlackBerry 最好玩,上臺第一句話就是「We are not dead. We are still alive!」,引得你們捧腹大笑。BlackBerry 如今能夠直接運行 Android 和 iOS 應用,底層仍然是他自家的操做系統,可見如今作系統的都在盡力討好第三方開發者,由於從新在一個新的系統上開發一遍應用的代價實在太大了,移動應用平臺早已經是 Android 和 iOS 的天下。

  4. 晚上回家差點碰到持槍歹徒

    活動第一天晚上咱們一直搞到夜裏 12 點,平時我都是走路回家的,那天 Kai 說要送我,因而我就坐他的車回家了。剛到家不久就收到學校發來的警報郵件說 12 多的時候在校園邊上有同窗碰到三位持槍搶劫的歹徒。心想好險,幸好當時坐同窗的車回家了,不然搞很差你們就看不到這篇文章了。。。

  5. Yun 穿正裝準備作 presentation 和領獎

    原本我是抱着打醬油的心態去的,比較無所謂,可是 Yun 說想要拿第一名,由於獎金有 $1000,他最近恰好缺錢交房租了,很須要這筆錢,因而咱們其餘人也打起了精神,好像志在必得的樣子。

    比賽到次日下午,發現 Yun 一改工程師的 diaosi 打扮,換了身比較正式的襯衫和長褲,被我識破,我說你小子來真的呀,還真準備作 presentation 和上臺領獎了啊哈哈,Yun 猥瑣地笑了。。。

  6. 臨時決定作 Windows 8 應用

    因爲咱們的前端是用 HTML/CSS/JavaScript 來作的,而微軟 Windows 8 平臺上的應用能夠徹底用 HTML/CSS/JavaScript 開發,加上微軟單獨設置了一個獎項,給 Windows 8 平臺上產品作的最好的團隊每人獎勵一部 4100 萬像素的 Nokia Lumia 1020 手機。因而比賽進行到後半段我臨時決定把應用移植到 Windows 8 上,再作一個 Windows 8 的應用,由於前端代碼絕大部分均可以重用。

下面回到正題。因爲活動只有 24 小時,咱們吃完飯後便各自分工,同時開幹了,期間還偷瞄了其餘組作的東西,Hongsen 和 Kai 都說其餘組「不咋地」,咱們「確定贏」,因而咱們越作越起勁,胃口也被吊起來了,到後來已經開始意淫那 $1000 的獎金和四部 4100 萬像素的 Nokia Lumia 1020 手機了。。。

很快時間到了次日下午 5 點,產品代碼和文檔提交截止,吃完晚飯後進行產品 demo 和評選,7 點開始頒獎,咱們四我的各自講了一部分,這是部分當時的照片。

接下來咱們覺得咱們會穩拿第一名,至少也是前三吧,可是最終結果出來卻讓咱們大跌眼鏡,心情瞬間降到了谷底——咱們什麼名次都沒有拿到!一共 13 支參賽隊伍,前 7 名都沒有咱們(咱們後來安慰本身是第 8 名)。宣佈第七名到第一名的揪心過程就不寫了,實在太難受。哎!

經驗教訓

此次比賽給咱們留下了不少經驗教訓:

  1. 缺乏 UI/UX 設計師。因爲咱們都是學 Computer Science 的,寫寫代碼還行,可是要作與用戶直接交互的產品時才發現仍是須要專門的 UI/UX 設計師,不然界面醜死了,人機交互也很呆板。尤爲是這種 hackathon 活動,通常只有 24 至 48 小時,要在這麼短的時間內作出一款產品的原型,實際上是很是緊迫的,這時候後臺數據的鏈接反而不那麼重要,甚至能夠用假數據來填充,最重要的是給人展現產品前端的 UI 和交互流程,讓人有一個直接的印象。作產品起步階段能夠不要專職測試,能夠不要專職運維,能夠不要專職產品經理,能夠不要專職銷售,惟獨不能缺了 UI/UX 設計師和軟件工程師這兩個核心職位。下次再要作東西必定要儘早搞定 UI/UX 設計師。

  2. 創業或作產品初期應該儘量地重用現有的軟件和服務,快速搭建產品原型,切忌從新發明輪子。雖然我以前腦子裏面已經有這個概念了,可是此次活動下來發現仍是貫徹得不夠完全。因爲咱們的產品須要用到地圖和 GPS 定位功能,因此我就圍繞着 Google 地圖來作,花了不少時間學習 Google 地圖 API,最終磕磕盼盼搭出來的產品界面幾乎跟 Google 地圖如出一轍,但功能卻比它差多了,這也致使了評委一看到咱們的產品馬上就失去了興趣,沒有看出咱們產品本身獨有的功能。我後來看了其餘小組作的產品,發現他們確實作的頗有特點,UI/UX 很炫,關鍵使用流程直接交給手機上自帶的地圖來完成。而我花了太多的時間在折騰 JavaScript 接口的 Google 地圖 API,其實若是要用地圖服務,能夠直接傳一個參數給手機上的原生地圖應用,若是是網站形式的產品,也能夠用相似 https://maps.google.com/?q=xxxx 這樣的形式來跳轉到 Google 地圖網站。細細想來其實 Google、Facebook、Twitter 等公司在初期也是儘量用了不少現有的技術,只是到後來發現這些技術跟不上自身業務的發展才紛紛開始造輪子的。

  3. 作產品初期應該儘量地專一於核心需求,不要貪大求全。我是第一天夜裏睡不着忽然想到要作 Windows 8 應用的,因而次日早上起來就開始在虛擬機上裝 Windows 8 操做系統和 Visual Studio 開發工具,折騰了半天,到中午的時候才把開發環境搭好,而後也顧不上睡午覺就開始邊查 MSDN 邊寫程序,到下午 5 點提交截止的時候才勉強作出一個雛形出來。事實證實這麼搞分散了精力,致使網站和 Windows 8 應用都沒作好。之後若是再作產品或 project 我會盡可能 focus 在最核心的東西上面,而後逐步迭代。

  4. 移動應用是標配,必須作。此次活動的另外一大失誤是沒有開發手機應用,由於只有 Yun 會 Objective-C 和 iOS 開發,其餘人在這方面都沒有經驗,因此咱們只好作了一個網站,美其名曰「跨平臺」,可是實際上這種類型應用對跨平臺其實沒有太大的需求,而便攜性、實時推送通知、GPS 定位等移動設備獨有的優點在這裏卻很關鍵,因此我想這也是咱們的東西沒有獲得評委青睞的緣由之一吧。之後作產品必須優先考慮移動客戶端了,要否則都很差意思出來見人了,呵呵。

後記

不久前的 4 月 11 號,在洛杉磯又有一個 hackathon,號稱是美國西海岸規模最大的一次 hackathon 活動,就在 UCLA 的體育館內舉行,參賽對象都是加州各大名校的學生,原本我是報了名打算去的,可是無奈那天有課衝突,最終沒能去成。但願之後還能有機會參加這類的活動吧。

相關文章
相關標籤/搜索