记一次 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 的体育馆内举行,参赛对象都是加州各大名校的学生,原本我是报了名打算去的,可是无奈那天有课冲突,最终没能去成。但愿之后还能有机会参加这类的活动吧。

相关文章
相关标签/搜索