the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


极客程序员都需要Hackathon

作者:the5fire | 标签:     | 发布:2018-04-15 12:14 p.m. | 阅读量: 197, 148

极客程序员都需要Hackathon

从周五早上开始狐厂又一届的黑客马拉松正式开始。不同于往届的身份——观众,这次the5fire是参与者,跟团队一起做些智能音箱上的东西。话说上一次参加Hackathon还是2011年国家会议中心那次-记录 TechCrunchHackathon编程冲刺

认真参与Hackathon并完成一个作品达到演示效果对程序员来说是非常重要的(对其他“兵”种应该也是如此)。

为什么Hackathon对程序员很重要

其实我们会议下每天的开发工作,和开发流程。产品提需求,老大审核需求,你或者你的老大来指定实现计划,敲定Deadline。然后开始执行,开发、调试、测试、上线。一切按部就班,对于Leader来说,在规划项目各项进度的时间点时会留好缓冲时间(考虑到程序员乐观的天性),因此大部分情况下只需要每天到公司,打开电脑,开始编码,起来接水,接着编码调试,偶尔看看朋友圈,看看新闻。这种是正常节奏,赶在每个checkpoint之前完成自己手头的工作。

用一个成语来形容叫做——有条不紊。

这样的好处是大家不会那么累,毕竟有足够的时间跨度来完成手上的工作,如果今天的进度慢了,那明天抓点紧就能赶上。但是缺点也很明显,对于程序员技术的提升有限。所以有些人在工作两年之后会觉得每天都在写业务代码,CRUD什么的,很是烦躁。

大部分程序员可能没有考虑到这一点,如何浓缩自己的开发时间,因为在常规的工作环境下,没有来自外部和周围环境的压力。就算是进入开发状态的情况下,也不会觉得紧张、急迫、焦急、时间不够。因此就无法提高对自己的要求,也无法得知自己的潜力。

上面提到“浓缩”,不是压缩。意味着在缩短时间的情况下,还需要保证质量。这其实也是Hackathon的要求,不然就会出现演示环节“翻车”的情况。

Hackathon对程序员来说,重要性在于,你需要在限定的时间内完成需求的理解,构思,设计,实现,上线。24小时不间断的编程,除了对技术的考验,还是对抗压能力、心里素质和身体素质的考验。

对技术的考验在于,你需要尽快调动所有脑细胞来思考这件事的可行性,也需要快速的学习新的技能,并且化为己用。这对于有些人总是想:“这些还不懂,算了,等有时间学习了再说吧。”完全是相反的逻辑。 另外一点对于技术的考验在于,程序员在这种情况下能够更好的理解你所掌握的知识,实践的经验都是为了当前要完成的这个产品服务。所以有句话叫做:知识本身不是力量,运用知识才是力量。

对于心里素质和身体素质的考验在于,开始的5、6个小时你可能觉得非常兴奋,但是在最后的5、6个小时当你发现你又紧张,又兴奋,又疲惫,又困。尤其是最后的几个小时当你发现你的程序还不那么完善时。

the5fire的问题和收获

说回到我们这次的产品,比较复杂,也依赖很多东西,是不可能在24小时内完成的,所以我们是提前几天开始准备的。现场我们需要完成的是逻辑的完善还有整个系统的整合和流程调试,中间遇到不少问题。

比较明显的一个问题是穿墙代理的连接数的限制。用过穿墙代理的人应该都知道ngrock这个神器,可以轻松的把你本地的服务放到外网上。简单应用没问题,但是它有限制,免费版40个连接每分钟,付费版也高不了哪去。我们之前的测试都是通过这个完成的,等最后合并走流程时发现会丢失请求。试了网上的一个shootback的项目,对于有自己vps的同学来说,日常使用the5fire觉得可以完全替代ngrock,不过偶尔会有请求无法收到的问题,另外由于我们需要多个代理,索性也没去排查,因为我们只是简单的http代理转发,所以最后花了3个小时左右的时间基于websocket写了一个,用起来更简单,也更符合我们的需求。真个代码加起来应该不超过200行,不过凌晨3、4点,大家确实都疲惫,问题不断。好在最后弄完了。

另外的问题在于低估了环境的噪音,现成的参赛人数众多,声音嘈杂,对于演示同学来说是个难题,除了跟音箱语音交互上带来的问题,还需要让评委能够在这样的场景下听清楚你说的是什么,你的作品做了什么。the5fire个人感觉,我们是败在了这儿。

至于说到收获,团队一次参与这样的活动能够有效的提高团队合作能力,并且对于每个人的能力也是一次挑战。最重要的收获,the5fire认为是对于那些没有经历过如此紧张节奏的开发同学来说是一个很好的体验。

the5fire日常开会时经常会唠叨,我们要能够快速的完成产品上的需求,这要求我们精通,注意是精通我们依赖的技术,精通我们需要完成的业务。这样你才能快速的完成工作。但是如果没经历过编程马拉松式的开发经历,可能不会理解快速完成到底是什么体验,又有哪些依赖。日常的积累都会在这24小时内被“验收测试”。

除了能力上的收获,在24小时我们也完成了一些东西,除了一个简单的http内网穿透的程序,还有其他的一些业务的基石类的程序,以后可能会开源出来。

另外关于产品上的收获是,无论是在现在的市场环境下还是在这样的Hackahton活动中,要想弄出一款让大家都接受的产品,一定是在某个小的方向上做的(构思的)足够精致。这一点也是我们暴露的问题。

日常小马拉松(Little Hackahton)

很多人其实没有太多的想法去参与这样一场Hackathon活动,第一个障碍就是“我到那做些什么呢?",the5fire参加的Hackahton次数不多,一次是外部的,一次是公司内部的。但是都发现有很多单枪匹马的“孤胆”程序员在活动中搞出来一些有趣的东西。也有两三个人一组的搞一些小的应用。

所以其实不必拘泥想法,如果刚好有空,不妨参与其中。

对于无法参与,或者不想参与的同学来说,the5fire的建议是可以自己给自己定期制定类似24小时编程计划,你可以是10小时,可以是4小时。重点在于这段时间内focus在一件事上,直到完成,或者时间截止。然后看看完成度如何。

这点其实跟时间管理很类似,比如很多人都听过的番茄时间管理法。其实the5fire建议把这种习惯带到工作中,规定在某端时间内,快速完成某个需求。比方说今天你的任务版上写的是完成SSO登录,那你一定是要今天完成吗?“今天”表示多长时间?因此你不妨给你定一个两个小时完成SSO功能的计划。相信我,大部分你规划的一天的编程工作,都能够在精神高度集中的两个小时内完成。

大部分开刚开始工作的程序员每天的工作可能就是编码,动力很足,但是压力不够。放羊式的编码其实对于提高自己能力来说作用没那么大。

对于工作一段时间的程序员来说,你可能每天都会有各种工作上的活动(编码之外),比如带新人、帮同事review代码和改bug、开会、跟产品“砍价”。在限定的时间内完成某个功能的开发尤其重要。

最后放一个活动图。下半年还有一次1024Day,有兴趣的Python程序员可以联系the5fire,还在招人。

sohu-hackathon

- from the5fire.com
----EOF-----

微信公众号:码农悟凡


其他分类: