全球最大校园Hackathon:失败后,你能学到什么?

简介: 全世界最大的校园Hackathon(编程马拉松)要属宾夕法尼亚大学的PennApps了,它是一个持续40小时的编程大赛。本学期的PennApps于2013年1月18日-20日举行,有来自世界各地超过450名学生参加比赛,大赛总奖金为2万5千美金。今年的冠军团队来自加州大学伯克利分校,他们得到了4000美元的奖金。[注:参赛作品和获奖名单可参看PennApps官方说明。]

全世界最大的校园Hackathon(编程马拉松)要属宾夕法尼亚大学的PennApps了,它是一个持续40小时的编程大赛。本学期的PennApps于2013年1月18日-20日举行,有来自世界各地超过450名学生参加比赛,大赛总奖金为2万5千美金。今年的冠军团队来自加州大学伯克利分校,他们得到了4000美元的奖金。[注:参赛作品和获奖名单可参看PennApps官方说明。]

image.png

全球最大校园Hackathon:PennApps

宾夕法尼亚大学计算机专业大二学生Max Scheiber和他的朋友Jeff, Teddy以及Ashu参与了本次PennApps活动。Teddy是一名优秀的UI设计师;Jeff是一名出色的iOS开发者,拥有过硬的行业经验;Ashu拥有丰富的Python开发经验;Max自认是团队中最灵活多变的选手,他是整个团队的负责人。

他们原计划开发一款名为“Merge”的应用:一款帮助大学生在聚会上交友的App。尽管早早来到比赛现场,但他们最终未能完成该App的开发,只提交了一个未完成的demo。

image.png

PennApps由位于美国费城的常春藤名校宾夕法尼亚大学主办

Max认为他们的失败具有普遍意义,他写这篇博客的目的在于帮助大家总结分析,共同进步。

下面我们看看Max团队从本次比赛中汲取了哪些经验教训:


1. 分秒必争

在编程马拉松大赛中,必须惜时如金——你需要充足的时间做产品定位、优化功能以及修复bug。


成员之一Jeff由于参加一个大学生联谊会中途离开了6个小时,另一位成员Ashu也参加了一个会议,中途有几个小时不在比赛现场。


Max说,他并不是想要指责Jeff和Ashu,但他们应该为自己的行为感到羞愧,因为他们二人的缺席导致整个团队蒙受损失。如果那几个小时他们在现场,说不定就能够完成整个App的开发了。

image.png

PennApps——只属于大学生的编程大赛


2. 不能傲慢、轻敌

在比赛前,Max他们一致认为团队能稳进前20名:他们有足够好的idea,良好的心理状态。不幸的是,这种过度自信和傲慢导致了成员没有全力以赴。大家对于技术难题缺乏预见性,当真正遇到棘手问题时,没有充足的时间进行补救。

PennApps大赛有超过450名选手、100多个团队参赛,每个团队都心理素质过硬、准备充分、技术精良。千万不能让傲慢的心理阻止团队前进,你必须努力,必须积极行动。


3. 准确定位产品功能

Max认为,有些App只适合在Hackathon比赛中进行开发,有些App则更适合市场推广和销售。他们未完成的应用“Merge”明显属于后者。因为许多人告诉Max,如果Merge能够在应用商店中下载,他们非常乐意使用它。“Merge”如果能够完成开发,将会是一款非常棒的App。


成功的Hackathon作品应当是技术与创意兼备的、能够给大家留下深刻印象的作品。获得今年大赛头奖的作品“Inventory”,将RFID(射频识别技术)扫描器与双肩包进行智能结合。这是一个非常棒的创意!去年的冠军作品JAM,是一个帮助用户将平时的音乐创作灵感谱成曲子的App,也充满了创意。

image.png

本次PennApps冠军作品“Inventory”现场演示


你要做出一个满足大众需求的作品,而不是只吸引Geek(极客)的App。在此之前,Max参加了2012年秋季的PennApps大赛,他的作品在技术方面令人赞叹,但是Mish Awadah(一名大赛评委)指出:“我个人非常喜欢你的作品,但问题在于,它只能吸引你我这样的极客,却很难捕捉普通用户的心。

Max和队友还得出了另一个重要的结论:应该尽量使用赞助商的API(如:本次PennApps大赛,微软就是赞助商之一,参赛选手可以选用微软的API)。今年的获奖团队中,有一部分团队就选用了赞助商提供的API。Max认为,外部创新力比内部创新力更容易获得。这也是大公司收购初创公司的重要原因。而在Hackathon的世界里,顶尖团队都会使用赞助商开放的API,这样能节省更多的时间处理自己的技术,用最快的速度完成自己的作品。赞助商的API都是经过验证的、实用性很强的思维的产物,它们像是发动机,能源源不断地制造灵感的火花。

image.png

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,大家都得依赖他。

image.png

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与其他两位宇航员在太空中经历了缺少电力、正常温度以及饮用水的情况下,仍然成功返回了地球。]

image.png

尽管失败了,但总结了经验教训、学到了东西,它依然是成功的。

相关文章
|
设计模式 JavaScript 前端开发
深入理解 Vue3 中的 setup 函数
深入理解 Vue3 中的 setup 函数
|
SQL 存储 运维
袋鼠云产品功能更新报告06期|数栈产品功能升级,做产品我们是认真的!
第06期袋鼠云产品功能更新报告来啦!包括对 EasyMR 监控告警功能的更新,以及对离线开发平台表生命周期逻辑的优化等,力求满足不同行业用户的更多需求,为用户带来极致的产品使用体验。
518 0
|
物联网
IoT物联网设备OTA固件升级开发实践
通过OTA方式,我们可以对分布在全球各地的IoT设备进行设备固件升级,而不必让运维人员各地奔波。
8026 0
|
机器学习/深度学习 数据采集 运维
数据分布检验利器:通过Q-Q图进行可视化分布诊断、异常检测与预处理优化
Q-Q图(Quantile-Quantile Plot)是一种强大的可视化工具,用于验证数据是否符合特定分布(如正态分布)。通过比较数据和理论分布的分位数,Q-Q图能直观展示两者之间的差异,帮助选择合适的统计方法和机器学习模型。本文介绍了Q-Q图的工作原理、基础代码实现及其在数据预处理、模型验证和金融数据分析中的应用。
1926 11
数据分布检验利器:通过Q-Q图进行可视化分布诊断、异常检测与预处理优化
|
数据库连接 C++
什么是RAII原则
【10月更文挑战第19天】什么是RAII原则
560 1
|
机器学习/深度学习 人工智能 文件存储
【小样本图像分割-3】HyperSegNAS: Bridging One-Shot Neural Architecture Search with 3D Medical Image Segmentation using HyperNet
本文介绍了一种名为HyperSegNAS的新方法,该方法结合了一次性神经架构搜索(NAS)与3D医学图像分割,旨在解决传统NAS方法在3D医学图像分割中计算成本高、搜索时间长的问题。HyperSegNAS通过引入HyperNet来优化超级网络的训练,能够在保持高性能的同时,快速找到适合不同计算约束条件的最优网络架构。该方法在医疗分割十项全能(MSD)挑战的多个任务中展现了卓越的性能,特别是在胰腺数据集上的表现尤为突出。
316 0
【小样本图像分割-3】HyperSegNAS: Bridging One-Shot Neural Architecture Search with 3D Medical Image Segmentation using HyperNet
|
存储 安全 测试技术
渗透测试之白盒测试:一种深入的安全性评估方法
渗透测试中的白盒测试是一种利用系统详细信息(如源代码、数据库结构和网络拓扑)进行深度安全评估的方法。通过源代码审查、数据库分析和网络拓扑研究,测试人员能更准确地发现漏洞并提高测试效率。尽管白盒测试能深入揭露潜在威胁,但也面临信息获取难、代码理解复杂及对测试人员高技能要求的挑战。
渗透测试之白盒测试:一种深入的安全性评估方法
|
小程序
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
预约挂号管理系统具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序。 技术架构:C#+.net+uni-app+ SqlServer 2012+ VS2019 ,自主研发,自主版权,多家三甲医院应用案例,有演示。
454 0
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
设置selenium默认下载位置
设置selenium默认下载位置
655 1
|
安全 Linux 网络安全
Qt SSL/TLS 安全通信类:构建安全网络应用的关键组件
Qt SSL/TLS 安全通信类:构建安全网络应用的关键组件
673 0