一场黑客马拉松项目,大家会首先选择那些业界做得不够完善、或者有较大潜在价值的领域。比如最近举行的Go & Docker Hackathon,参赛人员会首选Docker领域的服务发现、服务调度等领域。
Docker是一种软件打包及运行的技术,其主要思想是将软件打包成一个image并可以到任意的机器运行,运行时候已经被打包的可执行文件被隔离在一个叫容器的沙箱里运行,并独立于系统其他服务,安全性及资源占用方面都得到了有效控制。Docker软件以及大部分Docker生态圈的软件是由Google的Go语言(也称为为Golang)编写。
但上面提到这些Docker领域的功能需求和实现都较复杂,完成一项功能费事费力,在短时间尤其是一天的Hackathon期间内,很难较好的完成。反而是找一些技术实现简单的领域,解决一个较小的需求,不但可以快速实现,并可以有机会将体验做得更好。让项目在一个很小但又经常使用的点上打动用户,得到用户的关注及认可。比如这次就有一支队伍完成了一个Dockerfile(生成Docker镜像的配置文件)的编辑器,并且进一步可以将用户在测试环境的的操作录制下来,自动构造Dockerfile。虽然技术实现很简单,但是对很多Docker用户会带来便利。
很多公司在选择创业项目的时候也会碰到如此的情况,如果选择了一个技术实现复杂的领域,考虑到功能的完整性,早期的开发周期就会变得不可控。创业公司通常希望每个月都有新的产品迭代,但复杂领域的开发,预期1-3个月的项目通常会拖到半年以上,这无疑是增加了公司运营的风险。
Docker目前在实际环境中主要还是用在管理云平台上的服务,但Docker的这种隔离运行的思想也可以应用在更多领域,比如参赛中应用在硬件控制、可插拔的开放平台等领域的设想。
黑客精神的一个重要点是程序员通过自己的编程打破已有的软件功能使用方式,给程序员自身及其他使用软件的用户带来自由及便利。参赛作品中比较能触动这一点的是挑战Siri的封闭性的一个项目,他设想通过一个个外接的容器能将智能做得更扩展,延伸到生活各方各面。有点类似微信的连接一切的概念,不过连接之后HUB不是微信,而是一个类似Siri这样的入口。
从这个角度,大部分我观察到的程序员思想还都比较禁锢,一方面是从小缺少创新(或者改变)的氛围及引导,在被设计的道路上循规蹈矩的长大,学习成绩好就是一个好孩子。工作后比较正常的做法也是每天接受分配的任务,完成得好就是一个靠谱的成员;打破常规的改变的成本过高,也被视为不那么正常的孩子。程序员即使换工作,也经常落在在薪酬、Title等因素的考量上,较少有动力去首先考虑那些通过技术来改变一个领域的事情上去。