博主呓语:

黑客马拉松:代码与创意的真正PK

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


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

点击查看原图


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


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


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


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


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


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


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


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


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


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


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


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


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


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

(本文来源:《创业邦》杂志 )

发表评论: