为什么国外程序员的创造力比中国程序员强?
The following article is from 码农翻身 Author 码农翻身刘欣
1
川口耕介是个日本程序员,他曾在Sun公司从事Java、XML和Solaris相关的开发。
2004年,他用Java写了叫做一个Hudson的开源工具,专门做持续集成(CI)。
Hudson安装、配置、使用都非常方便,并且支持用插件的形式扩展,深受程序员的喜爱。
2009年,Oracle 收购了Sun公司,并且打算用Hudson注册商标,进行商业开发。
以川口耕介为首的主要贡献者们不同意这种做法,他们与Oracle进行了谈判,虽然很多地方达成了一致,但是Oracle依然声称拥有Hudson商标的权利。
2011年,Hudson社区投票,把项目名从Hudson改为Jenkins继续开源。
从此,没有人关注Hudson,Oracle最后把Hudson的剩余资产捐赠给了Eclipse基金会。
Jenkins成为开源持续集成领域的领导者,插件达到1500+,你想要的功能都能在其中找到。
讲Jenkins的故事是想说一个现象,开源的持续集成工具早在2004年就已经被国外的程序员开发出来了。
实际上,还有一个更早的,叫CruiseControl,ThoughtWorks 于2001年已经发布了。
2004年的时候我不知道大家在干嘛,我刚入行,还在用ASP、JSP、Applet这些古老的技术写网页,J2EE就是最先进的技术,刚听说过敏捷软件开发,根本没有做过持续集成,因为每次发版本都是手工Copy的。
写《Borland传奇》的李维受机械工业出版社邀请,在国内做了一次演讲,当他讲到O/R Mapping的时候,问台下有多少人用过,几乎没有人举手,因为很多人还在用JDBC,ADO去访问数据库。
当时中国做不出Hudson、CruiseControl很容易理解,那时候真是落后啊。
国外互联网起步早,的确有先发优势。
不过,反正有开源的、强大的Jenkins,直接用就好。
2
随后十几年,国内的互联网就开始狂飙突进,诞生了几大巨头,外加一批独角兽。
国内的IT技术水平和国外基本保持同步,由于人口基数庞大,大流量,高并发,分布式等技术有更多的应用场景,使用反而更加广泛。
2012年左右,出现了一个颠覆性的技术:Docker。
应用程序的开发、测试和部署被彻底改变。
在使用Docker上,我们和国外基本上是处于同一起跑线的。大家都在热火朝天地在项目中采用Docker,各种文章、最佳实践,演讲层出不穷,铺天盖地。
但是,我们似乎都停留在使用层面,没人想到把Docker和持续集成关联。
美国有个叫做Brad Rydzewski的小哥,在GE工作了八年,对企业技术需求非常了解,他想做一个PaaS平台,把Heroku引入企业开发。
于是他从GE辞职,去参加Y Combinator 这样的创业训练营,但是并没有成功。
在开发自己平台过程中,他使用了Jenkins,意识到用起来还是太复杂了。于是他就把重点转向了构建一个更加易于使用的CI产品。
这时候,他想到了Docker。
经过四个月全靠咖啡支撑的疯狂编程,他开发了一个基于Docker的持续集成工具,把持续集成的各个步骤放到各个Docker容器中去执行,持续集成一下子变得清爽了好多。
2014年,Brad Rydzewski把产品开源,写文章到HackerNews宣传。
结果出乎意料,在两天的时间内就收到了2500个GitHub star,随后,Pull Request 从HP, VMWare, Google, and Pivotal源源不断而来。
这个工具就是著名的Drone。
无数的赞誉铺面而来:
哇,这就是我梦想的容器化的CI。
Drone vs Jenkins 就像 IntelliJ vs Eclipse
有了 Drone,我们终于可以抛弃 Jenkins!
Drone成功以后,Google也推出了基于Docker的开源CI Tekton,即使是CI的老大Jenkins也要拥抱云原生,在Tekton之上构建新的Jenkins X。
在云原生时代,在CI这个细分领域,美国人又跑到了前面。
3
Docker是革命性的创新,美国人积累深厚,他们先搞出来,可以理解。
Drone是改进性的创新,用Docker改进了CI,此时中国互联网业发展火热,中国程序员的技术能力肯定也能做到,为什么这样的创新没有率先发生在中国呢?
是国内的程序员想不到吗? 这么多人在使用Jenkins,肯定也像Brad Rydzewski一样感受到了Jenkins的不爽之处啊。
但是没有人率先迈出用Docker的这一步,也许我孤陋寡闻了,但我确实没有看到国内率先做出像Drone一样的产品,并且对云原生的CI 产生了重大影响。
难道是习惯了一个工具,对它的问题也麻木了?是不擅长打破常规,做跨领域的创新?
是我们更喜欢在别人创造的产品上改进?根本不想去搞创新?
是天才程序员们被现实巨大的生活压力压迫,被无尽的需求折磨,没有时间,没有精力去创造一个新东西?
是多年的应试教育扼杀了个性,考试天下第一,一旦进入开放性领域,就不知道该怎么办了?
......