我们如何以及为什么在Urban Tech Challenge Hackathon赢得大数据赛道

我叫德米特里。 我想谈谈我们的团队如何在大数据赛道上进入“城市技术挑战”黑客马拉松的决赛。 我必须马上说,这不是我参加的第一次黑客马拉松,也不是我第一次获奖。 在这方面,我想就整个黑客马拉松行业发表一些一般性的看法和结论,并提出自己的观点,而不是在Urban Tech Challenge结束后立即在网络上出现负面评论(例如本次评论 )。

因此,首先是一些一般性观察。

令人惊讶的是,相当多的人天真地认为骇客马拉松是一种体育赛事,最佳编码员会获胜。 事实并非如此。 我不考虑黑客马拉松的组织者自己不知道他们想要什么的情况(我也看到了)。 但是,通常,安排黑客松的公司会追求自己的目标。 他们的清单可能会有所不同:它可以是某些问题的技术解决方案,寻找新想法和新人等。 这些目标通常会确定事件的格式,事件的时间安排,在线/离线,任务的制定方式(以及是否会制定任务),黑客马拉松上是否会有代码审查等。 从这个角度来看,团队和他们所做的工作都得到了准确的评估。 那些最能达到公司所需点的球队获胜了,许多人完全无意识地,无意地到达了这一点,认为他们确实参加了体育比赛。 我的观察结果表明,为激励参与者,组织者应至少创造出运动环境和均等条件的外观,否则它们将像上面的评论一样受到消极影响。 但是我们迷路了。

2.因此得出以下结论。 组织者对参加黑客马拉松的参与者有自己的想法很感兴趣,有时甚至为此专门安排了在线通信阶段。 这样可以提供更强大的输出解决方案。 “他们自己的工作”的概念是相对的,任何经验丰富的程序员都可以在第一次提交时从他的旧项目中积累数千行代码。 这将是预先准备的操作时间吗? 但无论如何,该规则都适用,我以著名的模因形式表示:



为了赢得胜利,您必须具有某种竞争优势:您过去完成的类似项目,在特定主题上的知识和经验,或者在黑客马拉松开始之前已经完成的工作。 是的,它不是运动。 是的,这可能无法回报您的努力(这里每个人都决定是否在夜间进行3周编码,以获得10万美元的奖金,除以整个团队,甚至有没有兑现的风险)。 但是,通常这是取得成功的唯一机会。

3.选择团队。 正如我从黑客马拉松聊天中注意到的那样,许多人都相当轻视这个问题(尽管这是最重要的决定,它将决定您在黑客马拉松的结果)。 在许多活动领域中(在体育和黑客马拉松中),我看到强者倾向于与强者团结,弱者与弱者团结,聪明者与聪明者团结起来,总的来说,您了解...这就是聊天室中发生的事情:或多或少有实力的程序员立即,没有任何有价值的黑客马拉松技能的人会在聊天中停留很长时间,如果只有一个人参加,则根据该原则选择团队。 在某些黑客马拉松比赛中,人们实行团队之间的随机分配,组织者声称,随机团队显示的结果并不比已经建立的团队差。 但是根据我的观察,有动力的人通常会自己找到团队,如果必须派人,那么他们中的许多人通常不会参加黑客马拉松。

至于团队的组成,它是非常个人化的,并且高度依赖于任务。 我可以说,最不可行的团队是设计师-前端或前端-后端。 但是我也知道这样的情况:仅由前端人员组成的团队获胜,这些团队将简单的后端附加到node.js上,或者在React Native上创建了移动应用程序; 或仅来自布局简单的beckenders。 通常,一切都是非常个别的,并取决于任务。 我为黑客马拉松选择团队的计划如下:我计划组建一个团队或加入一个团队,例如前端-后端-后端设计师(我是我自己)。 很快,他开始与python后端和一位接受邀请加入我们的设计师聊天。 不久之后,一位业务分析师女孩加入了我们,她已经赢得了黑客马拉松的经验,这决定了她加入我们的问题。 经过短暂的会面后,我们决定将自己称为U4(城市4,城市4),类似于梦幻般的4。 他们甚至在我们的电报频道上放了一张对应的图片。

4.任务选择。 正如我所说,您应该具有竞争优势,黑客马拉松的任务是在此基础上选择的。 因此,在查看了任务列表并评估了它们的复杂性之后,我们完成了两项任务:来自DPiIR的创新企业目录和来自EFKO的聊天机器人。 工业和工业发展研究所的任务由支持者选择,EFKO的任务由我选择,因为 有在node.js和DialogFlow上编写聊天机器人的经验。 EFKO的任务也涉及到ML,我在ML方面有一些(不是很大)经验。 而且根据问题的情况,在我看来,它几乎不能通过ML来解决。 当我参加Urban Tech Challenge会议时,这种感觉得到了加强,组织者向我展示了EFCO数据集,其中大约有100张产品布局的照片(从不同角度拍摄)和大约20类布局错误。 同时,任务的客户希望分类成功率为90%。 结果,我准备了不带ML的解决方案的演示文稿,后退者根据目录准备了演示文稿,并且最终确定了演示文稿之后,我们将它们发送给了Urban Tech Challenge。 在这个阶段,已经揭示了每个参与者的动机和贡献水平。 我们的设计师没有参加讨论,回答得很晚,甚至在最后一刻都在演讲中填写了有关他自己的信息,这引起了普遍的怀疑。

结果,我们完成了建筑与设计部的任务,并且没有因为没有完成EFKO而感到沮丧,因为该任务在我们看来似乎有点奇怪。

5.黑客马拉松的准备。 当最终知道我们去了黑客马拉松时,我们开始准备工件。 在这里,我不敦促您在黑客马拉松开始的一周之前开始编写代码。 至少,您应该已经准备好样板,可以立即使用该样板,而无需调整工具,也不会碰到您决定首次参加黑客马拉松的任何类型的错误。 我知道一个有关垂钓者参加黑客马拉松并花了两天时间建立项目集会的故事,因此应提前做好一切准备。 我们应该按如下方式分配职责:bekender编写爬虫程序,这些爬虫程序将扫描Internet,并将收集到的所有信息放入数据库中,我在node.js上编写API,该API请求此数据库并将数据发送到前端。 在这方面,我预先在express.js上准备了服务器,并在react上准备了前端。 我不使用CRA,我总是为自己定制Webpack,并且我非常了解这样做可能带来的风险(记住有关钓鱼者的故事)。 此刻,我要求接口空白,或者至少是设计者提供的模型,以便对我要施加的内容有所了解。 从理论上讲,他也应该做好准备并与我们进行协调,但是我从未得到任何答复。 结果,我从一个旧项目中借了设计。 因此,由于该项目的所有样式均已编写,因此结果变得更快。 因此得出结论:团队中并不总是需要设计师)))。 随着这些发展,我们来到了黑客马拉松。

6.参加黑客马拉松。 我第一次看到我的团队只在CDP黑客马拉松开幕之时生活。 我们开会,讨论了解决方案以及该任务的工作阶段。 尽管开放后我们不得不乘公共汽车去红色十月,但我们还是同意在9.00点到达我们的家,睡觉了。 怎么了 显然,组织者希望从参与者中获得最大的收益,因此他们安排了这样的时间表。 但是,以我的经验,您通常可以不睡一夜就进行编码。 至于第二个,我不确定。 Hackathon是一场马拉松,您需要充分地计算和计划自己的力量。 而且,我们有空白。



因此,在晚上9:00睡觉之后,我们正坐在Dewocracy的六楼。 然后我们的设计师意外地宣布他没有笔记本电脑,他将在家中工作,并且我们将通过电话进行通信。 这是最后一根稻草。 因此,尽管我们没有更改团队名称,但我们从四人变为三人。 再次,这对我们并没有太大的打击,我已经有了旧项目的设计。 总的来说,起初一切都按计划顺利进行。 我们已将组织者中创新公司的数据集上传到数据库中(我们决定使用neo4j)。 我开始排版,然后使用node.js,然后失火了。 我以前从未使用过neo4j,首先我找到了该数据库的工作驱动程序,然后我弄清楚了查询的编写方式,然后我惊讶地发现该数据库在被请求时以实体的形式返回节点对象及其边缘的数组。 即 当我通过TIN询问组织及其上的所有数据时,而不是单个组织对象时,我返回了包含该组织及其之间的关系的一长串对象。 我编写了一个映射器,该映射器遍历整个数组并将组织中的所有对象粘贴到一个对象中。 但是在战斗中,当查询包含8,000个组织的数据库时,它的速度非常慢,大约需要20-30秒。 我想到了优化……然后我们及时停下来,移到MongoDB,这花了我们大约30分钟的时间。 neo4j总共损失了大约5个小时。

请记住,切勿采用您不熟悉的黑客马拉松技术,这可能会给您带来惊喜。 但是,总的来说,除了失败之外,一切都按计划进行。 在12月9日上午,我们已经有了一个可以正常使用的应用程序。 在当天的剩余时间里,我们计划在其上添加其他功能。 将来,一切都相对顺利,但是这位乞k在他的搜索引擎禁令,法人聚合服务商的垃圾邮件中遇到了很多问题,这在请求每个特定公司时排在搜索结果的首位。 但是关于这一点,他会讲得更好。 我搞砸的第一个附加功能是按全名搜索 首席执行官VKontakte。 花了几个小时。

因此,在我们应用程序的公司页面上显示了总经理的ava,指向其VK页面的链接以及其他一些数据。 尽管它可能无法确保我们取得胜利,但它是蛋糕上的一颗好樱桃。 然后,我想结束一些分析。 但是经过长时间的选择(用户界面有很多细微差别),他决定采用经济活动代码对组织进行最简单的汇总。 在傍晚的最后几个小时,我已经准备好展示创新产品的空白(在我们的应用程序中应该包含“产品和服务”部分),尽管该产品的后端尚未准备好。 同时,基础不断突飞猛进,爬虫继续工作,后端使用NLP进行了实验,以区分创新文本和非创新文本)))。 但是已经到了进行最后演讲的时候了。

7.介绍。 根据我自己的经验,我可以说您应该在演示文稿交付之前的3-4个小时切换到准备演示文稿的位置。 特别是如果视频应该放在其中,则拍摄和编辑它会花费很多时间。 我们应该有一个视频。 我们有一个专门人员从事此工作,还解决了许多其他组织问题。 在这方面,直到最后一刻,我们都没有分散编码的注意力。

8.音高。 我不喜欢演示文稿和决赛是在单独的工作日(星期一)进行的。 在这里,组织者极有可能继续实行最大限度地减少参与者人数的政策。 我本来不打算请假,但我只想参加决赛,尽管我团队的其他成员都花了一个周末。 但是,人们对黑客马拉松的沉浸感已经很高,以至于早上8点我写信给我的团队(工作,而不是黑客马拉松团队)聊天,我花了一天的时间自费去CDC参加比赛。 事实证明,我们的问题来自大量纯科学家数据,这极大地影响了解决问题的方法。 许多公司拥有出色的DS,但没有人拥有有效的原型,许多公司无法摆脱搜索引擎中搜寻器的禁令。 我们是唯一拥有原型的团队。 而且我们知道如何解决任务。 最终,我们赢得了比赛,尽管我们很幸运地选择了竞争最少的任务。 看看其他赛道的音高,我们意识到我们在那里没有机会。 我还想说,陪审团很幸运,他们仔细检查了代码。 而且,从评论来看,这并非在所有轨道上都发生过。

9.决赛。 在我们多次被要求陪审团进行代码审查之后,我们认为我们终于解决了所有问题,并在汉堡王餐厅共进晚餐。 在那里,组织者再次致电给我们,我们不得不匆忙整理订单并返回。

组织者展示了进入哪个房间,然后去那里,我们发现自己参加了获胜团队的公开演讲培训。 那些原本应该在舞台上表演的家伙都受到了充斥,每个人都是真正的表演者。

最后,我必须承认,在其他赛道最强大的团队的背景下,我们显得苍白无力,当之无愧地获得了州客户提名的提名,这使该团队脱离了赛道房地产技术。 我认为,促成我们在赛道上取得胜利的关键因素是:提供了现成的坯料,因此我们能够快速制作出原型;原型中存在“亮点”(在社交网络中寻找总导演);以及支持者的NLP技能他们对陪审团也很感兴趣。



最后,感谢所有支持我们的人,我们赛道的陪审员Evgeny Evgrafiev(我们在黑客马拉松比赛中解决的任务的作者),当然还有黑客马拉松的组织者。 这也许是我参加过的最大,最酷的黑客马拉松,但这仍然只是希望这些家伙保持如此高的知名度和更多!

Source: https://habr.com/ru/post/zh-CN433802/


All Articles