全世界最大的校园Hackathon(编程马拉松)要属宾夕法尼亚大学的PennApps了,它是一个持续40小时的编程大赛。本学期的PennApps于2013年1月18日-20日举行,有来自世界各地超过450名学生参加比赛,大赛总奖金为2万5千美金。今年的冠军团队来自加州大学伯克利分校,他们获得了4000美圆的奖金。[注:参赛做品和获奖名单可参看PennApps官方说明。]html
全球最大校园Hackathon:PennApps 程序员
宾夕法尼亚大学计算机专业大二学生Max Scheiber和他的朋友Jeff, Teddy以及Ashu参与了本次PennApps活动。Teddy是一名优秀的UI设计师;Jeff是一名出色的iOS开发者,拥有过硬的行业经验;Ashu拥有丰富的Python开发经验;Max自认是团队中最灵活多变的选手,他是整个团队的负责人。编程
他们原计划开发一款名为“Merge”的应用:一款帮助大学生在聚会上交友的App。尽管早早来到比赛现场,但他们最终未能完成该App的开发,只提交了一个未完成的demo。segmentfault
PennApps由位于美国费城的常春藤名校宾夕法尼亚大学主办 后端
Max认为他们的失败具备广泛意义,他写这篇博客的目的在于帮助你们总结分析,共同进步。app
下面咱们看看Max团队从本次比赛中汲取了哪些经验教训:ide
1. 分秒必争优化
在编程马拉松大赛中,必须惜时如金——你须要充足的时间作产品定位、优化功能以及修复bug。idea
成员之一Jeff因为参加一个大学生联谊会中途离开了6个小时,另外一位成员Ashu也参加了一个会议,中途有几个小时不在比赛现场。spa
Max说,他并非想要指责Jeff和Ashu,但他们应该为本身的行为感到羞愧,由于他们二人的缺席致使整个团队蒙受损失。若是那几个小时他们在现场,说不定就可以完成整个App的开发了。
PennApps——只属于大学生的编程大赛
2. 不能傲慢、轻敌
在比赛前,Max他们一致认为团队能稳进前20名:他们有足够好的idea,良好的心理状态。不幸的是,这种过分自信和傲慢致使了成员没有尽心尽力。你们对于技术难题缺少预见性,当真正遇到棘手问题时,没有充足的时间进行补救。
PennApps大赛有超过450名选手、100多个团队参赛,每一个团队都心理素质过硬、准备充分、技术精良。千万不能让傲慢的心理阻止团队前进,你必须努力,必须积极行动。
3. 准肯定位产品功能
Max认为,有些App只适合在Hackathon比赛中进行开发,有些App则更适合市场推广和销售。他们未完成的应用“Merge”明显属于后者。由于许多人告诉Max,若是Merge可以在应用商店中下载,他们很是乐意使用它。“Merge”若是可以完成开发,将会是一款很是棒的App。
成功的Hackathon做品应当是技术与创意兼备的、可以给你们留下深入印象的做品。得到今年大赛头奖的做品“Inventory”,将RFID(射频识别技术)扫描器与双肩包进行智能结合。这是一个很是棒的创意!去年的冠军做品JAM,是一个帮助用户将平时的音乐创做灵感谱成曲子的App,也充满了创意。
本次PennApps冠军做品“Inventory”现场演示
你要作出一个知足大众需求的做品,而不是只吸引Geek(极客)的App。在此以前,Max参加了2012年秋季的PennApps大赛,他的做品在技术方面使人赞叹,可是Mish Awadah(一名大赛评委)指出:“我我的很是喜欢你的做品,但问题在于,它只能吸引你我这样的极客,却很难捕捉普通用户的心。”
Max和队友还得出了另外一个重要的结论:应该尽可能使用赞助商的API(如:本次PennApps大赛,微软就是赞助商之一,参赛选手能够选用微软的API)。今年的获奖团队中,有一部分团队就选用了赞助商提供的API。Max认为,外部创新力比内部创新力更容易得到。这也是大公司收购初创公司的重要缘由。而在Hackathon的世界里,顶尖团队都会使用赞助商开放的API,这样能节省更多的时间处理本身的技术,用最快的速度完成本身的做品。赞助商的API都是通过验证的、实用性很强的思惟的产物,它们像是发动机,能源源不断地制造灵感的火花。
PennApps比赛现场
4. 必定要熟悉技术
整个团队中,Jeff只会Objective-C,Ashu只会Python,Teddy既不会Objective-C也不会Python,Max本身精通Ruby,会一点Objective-C和Python。
对于这样一次iOS开发来讲,Jeff天然是团队的核心程序员,全部的后端程序均由Jeff一人进行编写。Max因为Objective-C知识有限,只能进行bug调试。整个比赛下来,Jeff没有睡过觉,由于作这个App,你们都得依赖他。
PennApps吸引了来自世界各地的大学生编程高手
从此的比赛,Max表示至少要有两人可以熟练掌握Objective-C语言。这样即可以在长达40小时的比赛中轮流休息了。理想的状况是:Jeff先编写4小时的程序,而后小睡一下子;Max接替他的工做继续编程;Max和Ashu共同完成他们的Python API;Teddy专作UI设计。
本次比赛,团队在开发“Merge”与Facebook整合的过程当中曾出现了严重的问题。尽管在此以前,Jeff和Max都使用过Facebook SDK,也都遇到过问题。但他们二人在比赛以前都没有进行熟悉和练习,致使了最终的失败。
结语:
虽然此次比赛失败了,但Max经过分析、总结,准确找到了症结所在。他表示还将参加从此的PennApps比赛,同时他也在招募队友。
最后,做为对这次团队表现的评价,Max特别引用了前美国国家航空航天局宇航员James A. Lovell对阿波罗13号登月任务的形容——“A successful failure”(一次成功的失败)。意思是,尽管失败了,但总结了经验教训、学到了东西,它依然是成功的。[注:阿波罗13号(Apollo 13)是阿波罗计划中的第三次载人登月任务,飞船于1970年4月11日被发射升空。发射后两天,服务舱的氧气罐发生的爆炸严重损坏了航天器,James A. Lovell与其余两位宇航员在太空中经历了缺乏电力、正常温度以及饮用水的状况下,仍然成功返回了地球。]
尽管失败了,但总结了经验教训、学到了东西,它依然是成功的。(图片来源:NASA)
via:Max Scheiber我的博客