黑客马拉松,硅谷上海国际同步PK

简介: 电影《社交网络》里的一幕让人印象深刻。马克·扎克伯格在哈佛的一间宿舍里举行了一场编程比赛,赢家成为公司里的第一位实习生。其实,每隔一段时间,Facebook便举办“黑客马拉松”比赛,让员工在一夜之间想出好的点子,并完成项目开发。

一群“代码控”,从陌生到相识,参与到24小时不间断地开发当中。

image.png

电影《社交网络》里的一幕让人印象深刻。马克·扎克伯格在哈佛的一间宿舍里举行了一场编程比赛,赢家成为公司里的第一位实习生。其实,每隔一段时间,Facebook便举办“黑客马拉松”比赛,让员工在一夜之间想出好的点子,并完成项目开发。


2012年5月6日,一场真正的黑客马拉松比赛在上海和硅谷两地实时上演。一群素未谋面的程序员于周末汇聚在一起,他们出于对代码的偏爱,自愿报名参与到24小时不间断的开发当中。经过硅谷和上海两地的终极PK,最终来自上海一款名为CHOP的产品摘得冠军。


比赛结束两三天后,曾为“网友”的两位冠军程序员互通电话,筹备第二次见面,商讨是否应该将CHOP的功能继续完善。


CHOP团队1号程序员桂林,负责后端开发。他非计算机专业出身,现为塔防类社交游戏《宿命守卫者》的开发者之一。高中时代开始疯狂迷恋编程,大学时代过于极端,荒废专业课程,每天浸泡在图书馆潜心钻研各种编程书籍,自学成才。学生时代的得意之作是将汉诺塔的解题过程可视化,做得像游戏一样炫目。


桂林是在编程和代码中找回的自信。从事“苦逼”的程序员工作多年之后,依然以视码代码为终身事业。正如他在微博签名中所描述:“不懂设计模式和算法,但只要哥一写代码,就是美的”。“如果可以做一辈子程序员,有什么不可以?”刚过而立之年的他觉得国内不欢迎年龄大的老程序员的现象十分严重,他希望自己这份生涯能永远延续下去。他属于同事眼中的“强力程序员”,经常处于24小时开机状态,一直开着界面,各种操作全靠键盘,从不使用鼠标。他经常活跃于行业内技术性论坛上,曾写Node.js的库Mongoskin及其它库分享给程序员们使用。


2号程序员魏子钧,亦80后,非计算机专业,酷爱编程,来自盛大创新院。圈内人士均唤之网名“大城小胖”,可谓人如其名。实际为黑客马拉松比赛现场的工作人员,做好服务比赛选手等后勤工作之后,不甘寂寞、不码代码就手痒的他直接杀入CHOP团队参与开发,负责前端开发。


大城小胖自称“非典型性”程序员,一边戏谑地称己为“码农”,一边在工作之余捣鼓代码、研究程序到凌晨两三点钟,他最大的兴趣是每天从程序和技术中寻找乐子。最为遗憾的是身为“代码控”多年以后,却依然未能有一款经典作品横空出世。大城小胖最近一直在扛着一本几百页厚的计算机几何学认真研究,一如既往努力提升自己。他说,“做游戏对数学模型的要求特别高”。


团队中的产品经理为ThomasYao,为一名邮件列表的管理员,在CHOP产品功能的完善和DEMO演示环节中发挥了积极作用。


两名程序员一致认为,团队之所以能获奖,Thomas清晰的英文项目介绍帮了不少忙。但最为关键之处在于,开发接近尾声之际丝毫未懈怠,最终花20分钟进行了一个Markdown(是一种更为新潮的标记语言,深受程序员欢迎)功能的完善,程序员便可以用标签符号或快捷键控制表示一串代码,输入特别便捷。“这款功能的完善可能为项目加分不少,或者是能获奖的关键。”这是产品亮点之所在。因开发时间有限,他们砍掉了之前设计好的很多亮点功能。


这是一场对智力和技能的挑战。开场前首先要进行一场激烈的头脑风暴,拿出比较炫酷的创意,又要考验首次合作的团队意识。“不擅长团队协作的人参加这种活动,可能会失败。它考验团队的创意、技能、毅力和团队协作精神。”参加过多场比赛的大城小胖娓娓道来。


首次参加类似活动的桂林对此深有体会。他其实一提出做聊天室想法时便遭到团队的质疑。最终桂林做出解释,亮出“CHOP区别于论坛和及时聊天工具的聊天室产品,能按照聊天主题半自动化地对语意内容进行归类”时,得到大家认同。“怎么做到快速产出?这对程序员的沟通能力要求非常高。”性格开朗的大城小胖称桂林尽管相对内向,但遇到问题时能表达特别清晰并有说服力。“其实我跟桂林属于网友,平时是通过代码进行交流,比较了解彼此的技术水平。尽管之前从未见过面,但已经建立起相当高的信任度,这点非常重要。”


一场比赛参与下来,桂林感受到的最大考验是时间非常仓促,真正写代码的时间也就10多个小时。“事先我们把前端和后端需求接口列在纸上,小胖是在完全没有服务器端数据的情况下做前端开发,他只能按照约定的数据结构写一个虚拟数据。开发12个小时之后,尽管服务器端的大部分功能都实现了,但前后端的数据还未对接上。”此时,已经是凌晨2点多,离比赛结束只有5个多小时了,但大城小胖中途离场2小时。处于孤军奋战状态中的桂林压力异常大。


“将前端的WEB登录和服务器端的新技术在后台进行交互时,又产生新的技术难题,即Web页面与Websocket无法共享Session。”这对桂林来说有点棘手。桂林明白,在实际开发过程中,经常会出现一个小问题而影响整个开发周期。最初他对产品的期望值特别高,而现在的他开始担心有交不出作品的可能性。“有些问题完全依赖Google未必能够找到正确答案,需要灵活应变。”这时很考验桂林的现场反应能力。好在耗费近一个小时后,技术障碍最终突破。


大城小胖的前端开发也并非进展得一帆风顺,做Serve端时,必须用Node.js技术配合桂林的后端开发。“Node.js技术只知道皮毛,但在产品开发中却用到很多。”在时间有限,来不及临时翻书,更不能频繁打扰桂林的情况下,大城小胖能做的是努力学习桂林代码的写法。“这要求自己以120%的努力去快速掌握知识。很幸运的是我战胜了挑战。”大城小胖松了一口气,总算见识了一回自己在饥渴状态下高效率学习。


比赛结束前的几个小时是不断地解除bug、设计界面的过程,中间也在不断改善操作中存在不合理之处。“整个过程基本按照最初的设想来开发的,还算比较顺利。”桂林终于在规定时间内如期实现了产品效果。


“至少我们不满足于常规和现状,不断追求从更酷更炫产品的角度研发产品,愿意挑战自我。哪怕在周末时间也愿意跟技术圈的朋友们一块写写代码,这就是我们这群人的乐趣之所在。”大城小胖对这帮人的极客精神给予最后诠释。他们不再是一群只会闷头写代码而不善言辞的程序员,通过参加各种类似的比赛活动,这个群体在社会上活跃度越来越高了。

相关文章
|
存储 NoSQL
MongoDB无法启动,如何恢复数据?
近日有 MongoDB 用户遇到一个问题,使用 Wiredtiger 存储引擎的 MongoDB 无法启动,咨询我数据能否恢复回来,能恢复多少是多少 ... 问题出现的场景据用户描述是「mongod磁盘写满了,导致进程 crash」,尝试重新启动,结果 wiredtiger 报错,错误信息类似如下,类似的问题 mongodb jira 上也有人提过,可以参考 SERVER-26924,说明此时 MongoDB 数据文件已经损坏。
|
Ubuntu 关系型数据库 MySQL
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
1389 0
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
|
前端开发 数据可视化 JavaScript
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
本文介绍了2024年最受欢迎的9个React UI组件库,每一个都在设计、功能和定制化上有独特的优势,包括Material UI、Ant Design、Chakra UI等。这些组件库为开发者提供了强大、灵活的工具,可以帮助构建现代化、无障碍且高效的Web应用程序。文章详细分析了每个库的特点、适用场景以及关键功能,帮助开发者在项目中做出最合适的选择,无论是打造企业级仪表板还是时尚的用户界面。
1563 6
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
|
开发者 UED
深入理解 Nuxt.js 中的 app:error 钩子
【9月更文挑战第26天】在 Nuxt.js 中,钩子函数是在特定生命周期阶段执行代码的机制,`app:error` 钩子用于处理应用中的错误,包括服务器端和客户端渲染时出现的问题。它提供了一个集中处理错误的机制,提升了用户体验。当组件渲染过程中出现错误时,`app:error` 钩子会被触发,可以在 `nuxt.config.js` 文件中定义该钩子。通过分析错误对象 `err` 和上下文信息 `context`,开发者可以更好地处理各种错误情况。相比组件内的 `try/catch` 或浏览器原生错误处理,`app:error` 提供了更全局和有针对性的错误处理方式。
183 6
|
机器学习/深度学习 人工智能 JavaScript
探索后端开发的未来趋势
本文将带您一起探讨后端开发的未来发展。我们将从当前流行的技术框架出发,分析其发展趋势,并预测可能出现的新技术。同时,我们还将讨论如何提升后端开发的效率和质量,以及如何应对未来可能出现的挑战。
|
Docker 容器
26-Docker-常用命令详解-docker rmi
26-Docker-常用命令详解-docker rmi
|
Python
从bag包中提取图片和点云数据为pcd格式点云文件
从bag包中提取图片和点云数据为pcd格式点云文件
904 0
FXS与FXO:有什么区别以及它是如何工作的
出于显而易见的原因,切换到VoIP电话系统已成为许多中小型企业的热门选择。最常见的是更好的连接、扩展的通话功能和工具,以及拨打和接听本地和国际电话的可能性。在VoIP之前,普遍采用模拟电话系统,它们使用FXO和FXS端口建立连接。以及如何使用它们将模拟电话和PBX连接到VoIP系统,以构建混合通信基础设施并实现业务通信现代化。
1313 0
|
存储 移动开发 JavaScript
Vue3+TS+Vant3+Pinia(H5端)配置教程
Vue3+TS+Vant3+Pinia(H5端)配置教程
676 0