许式伟,七牛云CEO,ECUG社区发起人,Go语言专家,著有国内第一本Go语言图书《Go语言编程》。有超过15年互联网从业经验,曾在金山、盛大等知名公司担任重要技术岗位从事核心产品研发。在金山任职期间,先以首席架构师身份主导了全新WPS Office 2005的架构设计和开发;之后创建金山实验室,以创始人和技术总监的身份主导了前沿的搜索和分布式存储相关技术的研究和开发。在盛大工作期间,任职资深研究员,负责盛大祥云计划的研究,随后发起了盛大网盘项目。2011年创立七牛云,现仍然活跃在技术前沿领域。

今天,我们采访的主要话题并不是老许作为技术牛人的开发经历或是他作为创始人的奋斗史,而是他在2007年创建的ECUG社区ECUG的全称为Effective Cloud User Group,曾用名是Erlang China User Group。这样一个曾经关于Erlang语言的社区是如何成为云计算领域技术交流的“神圣场合”的呢?我们来看看老许是如何回答的吧。

问:最开始建立ECUG的初衷是什么?这个用户组一路上为你和其他人带来了哪些收获?是否有想要感谢的人?

最早建立ECUG的初衷是希望认识服务端开发的朋友,并且交流在服务端开发的最佳实践。一方面我常年在珠海这样一个二线城市,并且刚刚从桌面开发转型到服务端开发,我个人主观非常渴望交流,学习其他人的先进经验。另一方面也是觉得南方行业内的交流是比较少的,所以希望自己能够在这方面贡献一点力量。

直到今天,这个会议仍然是我了解其他行业技术进步的窗口,基本上国内各个公司的技术大拿都来过ECUG分享过他们的思想。有一些人还是常客,像刘奇,谢孟军,田琪等。也许他们中间换了公司,但是和ECUG的约定一直不变。很感谢他们。

问:ECUG最开始名为Erlang China User Group,而现在则是Effective Cloud User Group,2010年时名称上的改变是基于什么考虑?这样的变化是否也代表了技术环境上,一个时代的变迁?

Erlang是一门小众语言,我们在成立ECUG的时候,国内没有几个人对它感兴趣。这门语言特色鲜明,是服务端编程实践的一面旗帜。所以ECUG最早叫Erlang China User Group,是因为我们想推广Erlang。但哪怕如此,从第一届的ECUG大会开始我们也没有限制一定必须是Erlang语言的编程实践,只要服务端开发的实践分享都可以。

2009年的ECUG大会上,我们讨论了改名的事宜,最后确定了Effective Cloud User Group这个名字,在2010年我们正式进行了调整。这个改名一方面是由于ECUG探讨Erlang的话题已经越来越少,坚持老的名字已经非常名不符实。另一方面云计算时代已经明确来临,我们希望吸引到更多人参与到服务端开发的最佳实践的分享中来。到2011年的时候,我们进一步扩大了ECUG的话题范畴,不再限制只是服务端开发的实践,只要是服务端领域的话题都可以,比如说服务器运维、服务器安全等等。

问:ECUG自成立以来到现在已有8年之久,从成员和活动内容的角度来说,最大的改变是什么?

变化其实是逐步发生的。最早我们主要围绕Erlang这门语言探讨服务端的编程实践,到2011年话题基本上转向以Go语言为主。这不是我的个人意志,而是时代变化的结果。到今天,Go语言已经基本上统治了云计算。

问:2011年你成立了七牛云存储,ECUG和七牛的成立有什么关系?现在,ECUG对你和整个行业来说意味着什么?

ECUG和七牛的成立没啥关系。唯一有关系的是,ECUG是云计算行业的技术大会,七牛是云计算公司。

在今天会议如此之多的背景下,我坚持ECUG以技术干货为导向,杜绝广告。一方面事先对讲师的演讲内容进行确认,另一方面如果谁玩纯广告就封杀,此后的ECUG不再接受这个人的议题。ECUG对我和整个云计算行业来说,是大家技术交流的神圣场合,通过交流促进行业共同进步。

问:国内云计算行业内部的竞争现在处于什么阶段?是否可以大胆地预测一下云计算行业的未来发展方向?

中国的云计算从阶段上来说,仍然非常早期。具体说来,就是整个云计算的市场容量仍然非常非常小。云计算的未来不需要我预测,结论是非常明确的,很多人都进行了预测,大家的意见很趋同。

问:今年的ECUG大会你为什么选择“一周一语言”这个演讲主题?ECUG Con 2015有什么特色?

嗯,你这个问题有意思,是今天采访最让我兴奋的话题了。为什么选择“一周一语言”,有几个原因吧。一方面弥补下中国人没有自己流行语言的遗憾,我认为qnlang(不过我在内部已经改名为qlang,即Q语言)具有流行起来的基因。qlang的定位很独特:它是Go语言的伙伴语言。作为和Go语言交互最便捷的语言,在Go语言成为云计算的事实标准时,在很多场合我们都可以用qlang作为辅助语言完成对系统的灵活定制需求。比如,如果我们用Go语言开发爬虫,我们可以用qlang来定制爬虫的诸多策略,怎么做到这一点我在演讲中会给出示范。

另一方面大部分人学习的时候太功利,不太重视学习基本功,比如编译原理。事实上我认为编译原理是非常非常重要的一门基础知识。某种程度上说可能是名字不够好,我个人更喜欢把这个领域叫做文本处理。文本处理应用范围非常广泛,想一下我们今天实际生产环境中,什么地方不需要文本处理?在我们现在很火的“大数据”领域,文本处理显然是很重要的基础。

ECUG Con 2015从议题上看,技术更加细粒度化了,很多讲师都选了一个很小的知识点来展开讲,把话题讲透彻,这是很好的进步。比如洪强宁只讲网络,我只讲文本处理,刘奇讲Raft(有趣的是Etcd作者李响讲Paxos,他们两的议题结合起来听一定很有意思)。比起很泛泛地说XX实践,这样的议题大家可以得到更多干货。

问:很多人都把七牛、你和Go语言紧紧地联系在了一起,曾几何时,很多人认为七牛选择Go语言是一个很大胆的决定。请问程序员应该如何选择正确的编程语言?面对一门新语言时又该如何高效地学习?

没有正确的编程语言,只有合适自己的语言。选择语言需要基于你对要解决的问题域的理解而做出抉择。当然,这事也和品味有关,不同语言实际上体现的是创始人的个性。不少程序员喜欢把语言看做阵营。我个人没有这种想法,语言说白了只是个工具。没有必要因为我选了Go语言,就觉得你没有选Go就和我是敌对。如果有适合所有领域的语言,我也不会去造qlang这个新语言了。

学习新语言的最好办法是实践。你用它写几个程序解决你实际生产环境你遇到的问题,这比任何方式都有效。我记得我第一个C语言程序是在DOS环境下模仿实现了一个doskey,这个东西挺复杂,涉及编辑器、TSR驻留这些领域知识,一个程序写下来有好几千行。这就是我自己的学习方法。

问:你曾经说过“我为谁提供服务的认知,比我是哪个领域的程序员(工种认知)更重要”,对于程序员来说,如何培养这种基于产品的思考方式?

有些程序员只关心技术,而不关心业务,我认为这会制约他们的发展,所以才给了这样的忠告。只关心技术的人很快就会遇到成长的天花板。关心你的客户,这个行动起来可以很简单。比如我在金山做办公软件的时候,喜欢泡WPS用户论坛,这是技术人员近距离接触客户的有效方法。这个时候技术就不只是技术,它的背后就是鲜活的人,他们有思想,有喜怒哀乐。这样你对产品的理解会深刻很多,你会理解产品设计为什么是做成这样的,而不是另一种形态。

问:相比于其他技术公司,哪怕是云计算公司,七牛的极客文化都是极其鲜明的,请问这种文化基因来源自哪里?你?初始创业团队?还是行业?

七牛的文化基因,可能和我、我们初始创业团队的风格有关。我希望七牛别那么功利。虽然企业都需要赚钱,但是只想赚钱的企业是很没有意思的。所以我们做企业的时候坚持了做我们自己,做我们喜欢做的事情。我个人很喜欢接触新技术,体验新技术的力量。至于这是极客还是什么,其实我也不太关心。


更多精彩,加入图灵访谈微信!