黑客马拉松后记
Post

黑客马拉松后记

今年已经参加了两次黑客马拉松。

黑马流程

黑马(Hackathon)的一般流程就是主办方广告预热,然后组队报名,确认报名成功后及时了解大赛注意事项和黑马主题。

一般来说,正式比赛时间只会持续 1~2 天,这段时间是比较高强度的脑子和体力劳动,如果小组配合不默契的话,大概率只能出个 PPT,demo 也只能停留在搭环境或者 Hello World 上。

组建团队

一个真正高效的团队不需要每个人都是 MVP,而是相互之间有足够的默契和信任,每个人能在比赛过程中都为同一个目标全力以赴。

那么这里有两个问题需要明确,什么是同一个目标,怎么全力以赴。

共同目标

在比赛开始前,我们的目标是想出一个点子,作为我们参赛的项目。团队里的每个人都应该尽可能的大开脑洞,去提供建议和意见。有新意并且有价值的点子并不是那么容易得到,但其实也是可以有一些套路的。

  1. 头脑风暴:一群人一起提出各种想法,比如最优价值的产品,最优的解决方案,最大的痛点,最可能实现的创意,最想做的事情等等。
  2. 奔驰思考:这是美国心理学家 Robert Eberie 提出一种激发创新的改进思路,用 7 个字母总结 - SCAMPER。
    1. S - Substitued,是不是有替代的方法或者产品?
    2. C - Combined,是不是结合在一起产生新的东西?
    3. A - Adapt,能否调整或者改造,升级优化?
    4. M - Modify,能否修改设计,尺寸,外观等等?
    5. P - Put to other use,能否拓展其他用途?想象一下跨界。
    6. E - Eliminate,能否缩减,消除,简化?看看手机按键的消失。
    7. R - Rearrange,能否重组,逆向,反套路。
  3. 六顶帽子:从不同角度去激发创意,假设你有六顶帽子,每顶帽子颜色不一样,轮着戴到自己头上。
    1. 白色:中立而客观,关注客观事实和数据。
    2. 绿色:创造和生命力,突破常规的可能和意见。
    3. 黄色:价值和肯定,从正面考虑问题,表达乐观。
    4. 黑色:否定和怀疑,精确批判和找出逻辑上的错误。
    5. 红色:情绪和直觉,主观表达自己的感受和看法。
    6. 蓝色:结构化思维,纵览全局,规划和管理整个思考过程,并作出结论。

纵然有很多思维方式的套路,在现实中我们更多的创意是来源于生活和工作,如果平时有思考和总结的习惯,发现不合理的设计,你的创意就不会少。

全力以赴

每个人都有自己擅长的领域,一旦目标定下来后就要主动去承担一些责任。比如分配任务时主动完成自己能够完成的部分,与此同时,还需要一个人来监控和推进任务的进度,确保项目能够顺利交付。

上午完成什么,下午完成什么,晚上完成什么,设置几个里程碑,里程碑时间到达时,大家一起坐下来分享成果。如果有需要调整技术方案,就及时提出。

一天时间想把项目做得很完美基本很难,切记不要调代码调的太入迷,忘记了最初的目的和最终的结果。

最初的目的是,把我们伟大的项目表达出来。

最终的结果是,我们伟大的项目完整地表达出来了,表达的方式可能是 PPT,Demo 或者其他形式。

享受过程

过程能不能享受其实还跟主办方有很大关系,比如有没有舒适的场地,提供免费的餐饮,设备和设施是否完善和周全。

如果一切都 OK,小组成员各就各位,就可以开心码代码了。

有一些小贴士可以罗列一下,也许对各位看官有帮助。

  1. 网络一定要好,能正常访问 Google 和 SO,不然写不出代码。
  2. 开发环境也需要提前准备好,不然临时安装 git,java,node,docker 七七八八的环境,大半天就过去了。
  3. 弄个无线投屏器也是非常方便的,组里任何一个人想共享屏幕都一键上屏,吃饭时还可以一起看个动画片。
  4. 任务可以用看板跟踪,免费的看板可以用 Github 或者 Teambition,还可以投到大屏上。
  5. 尽量坐在一排,坐在对面有时讲不清楚,需要结合屏幕有效避免鸡同鸭讲。
  6. 核心接口和约定要文档化,写到 README 里,不然来回问很费时间。
  7. 手上的任务要尽可能早获得反馈,好的项目是逐渐调整和优化出来的,不是憋半天大招憋出来的。
  8. 不要忘了做 PPT 或者演示文稿,至少安排 2 次以上彩排,避免伟大的创意因为糟糕的演讲而腹死胎中。
  9. 最好有人能扮演程序员鼓励师,买(拿)吃的喝的。

image-20200920154539693

需要不要熬夜呢?看情况吧,其实这个事情在一开始就应该商量好,临时决定熬夜的话多少让人有些不愉快。如果大家觉得夜里效率更高,那么先浪起来,半夜一起 debug。

我个人觉得,半夜写代码大概率会翻车,你不想被打扰,但是都已经快交作业了,难道 Deadline Driven Development 的感觉真的很爽?

分享成果

除了能和志同道合的伙伴码代码,当然我们还是希望能拿奖的。分享成果最重要的三件事是:

  1. 不要翻车
  2. 不要翻车
  3. 不要翻车

image-20200920153632201

由此可见系统的健壮性有多么重要,QA 的测试有多么重要,多测试,早联调,考虑 Plan B。

我们做了什么项目?

两次比赛我们做了两个比较有意思的项目。

开发人员年度账单

一年到头你写了多少 bug?做了多少需求?有了年度账单,你就可以对自己的成就(发量)一目了然,还可以分享到朋友圈哦。

image-20200920152904079

自动修复代码鸭

有一些显而易见的问题代码,这只鸭子来自动帮你修复,比如依赖版本升级,不合理的语法等等。虽然已经有 Sonar 之类的工具可以检测出类似问题,我们希望能帮助团队往前走一小步,修复掉我们 100%有信心修复的问题。

image-20200920153415416

修复后自动提 PR。

image-20200920160639683

本文到此,戛然而止。

一个小故事

给MacBook Pro升级硬盘