全世界最大的校園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我的博客