黑客松是一种挺有意思的活动,这个夏天我参与的某个项目换了总负责人,新负责人因为搞不清状况,直接就搞了黑客松,把研究所分散在美国东北部近十个计算科学家召集到一处搞了一天封闭开发。我之前是听过很多次黑客松,但亲自参与却是头两次,没错,一天封闭开发完不到一周我又被召唤到缅因州总部去搞了关于质谱的两天封闭开发。
黑客松这个名字翻译的中不中西不西,我觉得直接用封闭式攻关计算问题来描述可能更准确。我参与的流程是分了三部分,第一部分由项目负责人介绍项目状况与当前问题,然后开始群体讨论或者头脑风暴,最后各自确定今天自己负责部分的小目标,这一部分主要是信息共享,很多大项目人多了很容易找不到方向,另外不同分析思路也有互相借鉴的地方。第二部分就是开发,这里需要在会前就准备好要处理的数据,我们这里是全都上传到了研究所集群上,而所谓的开发其实就是针对第一阶段的问题进行探索式数据分析,这里要用到一个最小可行产品(MVP)的概念,就是先不去考虑数据里的异常值跟各种意外,用最简单直接的思路搭建出一套数据分析流程并在小样本上跑通测试,然后给些可视化结果。最后一部分就是展示,各子项目负责人用几页幻灯片展示下自己探索结果,然后总负责人进行总结。三部分各占2-3小时时间,群体讨论与单独讨论可随时进行,也可以独自开发,因为黑客松的问题通常是很明确的,所有结论与探索都集中在问题上,可以很快给出一些初步结论或形成共识。
我感觉这个模式最大优点就是讨论时可以互通有无,思路上可以互相借鉴,而当天搭出来的原型机代码通常也会是后面分析的核心。后面给我单独搞的那个封闭开发其实就是在一个对比反馈密度很高的场景里完成的,这种场景会被迫注意力集中,然后完成一些平时总是会被各种意外打断的数据分析流程。例如我就借这个机会实现了一些代码在GPU上的运行,放到平常这种活的优先级几乎总是最低的,不过最后我也发现GPU加速效果很一般,主要是我代码被I/O卡了速度,受限于库依赖有些计算又没法放到GPU上,不过经验算是累积下了。另外就是跟人的交流多了也方面互相理解工作方式,平时开在线会议确实会被人工具化,搞到一个会议室聊天能更熟悉各自的工作节奏并对一些问题达成共识。缺点也很明显,就是比平时工作累,当然也可能是我平时就摸鱼成性,这种强度的工作做一天得缓两天,属于超高强度脑力劳动。
这种模式比较适合大项目,每半年或一年搞一次能一次性处理掉一堆积压问题。我个人是很反感开会的,很多例行会议更多是维持秩序感,对解决实际问题几乎没有任何价值。但集中攻关不是谈计划与汇报,而是把执行也放进去了,当场识别问题当场就解决,解决不了也就知道下一步做什么了,只是压力会大一些。不过,这对搞数据分析的是可行的,但要是在实验室做实验就不好说了,很多实验想看到结果一两天是绝对不够的。话说回来,其实实验学科反而可以搞数据相关的黑客松,主要原因在于很多科研人员在分析数据上其实几乎就是没思路的,此时围绕现成数据互相借鉴下还是很有必要的。这里的核心就是一定要从实际问题出发而不是泛泛说开个计划会议或汇报会议,当问题的靶子立好了,不同视角带来的信息共享其实很有启发。我记得去年好像搞过一个自定义大学排行榜的活动,其实就可以搞成黑客松,要限制时间现场搞MVP,这样的数据分析训练效果应该是比较好的。
当然,我最头疼的其实是旅行,这次给预订了个要问体重来平衡机身的航班,上世纪螺旋桨飞机加飞行员最多坐10个人且机组就飞行员一个,270度全景但全程要求安全带,毕竟也没有卫生间跟机舱服务。我是坐在飞行员背后全程观摩了起降流程,怎么说呢,跟游戏里很像,只不过时不时飞行员还会查看纸质地图。要是心理素质不强就别尝试了,降落后有同事说上周附近刚掉下来一架训练机。现在我是真佩服能在航母降落的飞行员,降落跑道空中看真就是一个小白条。