写在前面
刘奇
记得第一次线下和 Max 交流,是在 16 年底的 ECUG 上。当时 PingCAP 刚成立一年时间,“我们团队还不是很大,刚起步刚起步”,Max 很低调地介绍,但很明显眼神有力心中有光——这是创业上头的显著特征 。之后, 就听闻 TiDB 在开源领域发声不断,建立起活力而健康的社区生态;PingCAP 也通过开源道路实现了创造性地发展,目前已融资 C 轮,在硅谷建立办公室,成为准独角兽。
时至今日,刘奇还是将自己定位为一位程序员、开源热衷者,只是因为自己实际工作场景中的痛点,想“做一款世界级的产品”。这也许是每位程序员都有的梦想。
这篇专访让我们走近刘奇,这位不小心获得了商业上巨大突破的,纯粹的 Gopher。
关于 Go
01
最初是如何接触到 Go 的呢?在使用 Go 之前都写过哪些语言,请谈谈对他们差异的感受。
自己最早写芯片上的程序,用的汇编语言,后来开始用 c/c++,然后切换到 Go 语言,整个切换过程毫无障碍,被 Go 的易用性和开发效率折服,从性能分析到多线程 data race 检测,都无比的方便,自从用了 Go 语言之后意外发现自己再也没有用过调试器了,这是一种很有意思的感受。创业几年之后写一些代码快速验证思路 Go 也是首选,是那种拿起来就能写,写完就能跑的感觉。编译速度,并发,简单是 Go 的直观感受。
02
目前很多大厂和独角兽创业公司都在拥抱 Go 了,你觉得 Go 语言最有吸引力和优越性的点是什么?
简洁, 无痛的并发。Go 是一个很实用的语言,让开发者专注于完成的业务,没有什么花哨的东西。开发效率和执行效率达到了完美的平衡。
03
Go 语言在数据库领域有什么样出色的表现?
TiDB 就是一个很好的例子啊,另外,社区有很多数据库产品也是使用 Go 语言开发的,例如图数据库 DGraph,时序数据库 InfluxDB等,这个 List 可以列的很长。
04
目前 Go 语言更新到 1.13 版本,还有什么不足是你希望后续能持续改进的?
比较期待 Go2,期待的 Go2 的错误处理和泛型,看了 Draft 感觉很实用,保持了 Go 团队的克制的性格。
05
在云和区块链之后,你觉得Go的下一个风口在哪里?
Serverless 吧,其实我并不关注风口,更喜欢思考所谓风口背后的实际趋势。另外我认为几乎所有原来脚本语言擅长的领域,和对性能有一定要求的场景,Go 都能大放异彩。
关于开源
01
PingCAP 是目前国内少有的将开源提到公司战略级,并获得成功的创业公司,请谈谈最初是如何明确这个战略又是如何推动的?
从 4 年多以前,PingCAP 创业之初,我们就认识到,在这个时代,想要在基础软件领域(比如我们做的分布式数据库)取得成功,开源是必不可少的一环,这个 insight 背后有以下几个理由支持:
开源能极大提升软件的分发效率,如果一个软件能切实满足用户的痛点,用开源的形式传播的效率是极高的,好东西口口相传的这种网络效应能极大的提升传播效率,Code talks,在有落地代码的辅助下,你的设计理念的传播能够更加有说服力。
开源能够极大地加速软件开发迭代的速度,提升软件质量,让我们离最终用户更近,这点上不用过多解释:越多人用的结果就是坑越来越少,软件越来越稳定,反向又能促进社区的进一步扩大,进入一个良性的正向循环。
开源也能很快地获取用户的需求,每个人都可以通过提 Issue 来表达自己的需求,并且可以和其它人一起参与讨论。
一个成功的开源软件在后期社区会形成强大的护城河,这个不是简单的用资金和技术能够短时间砸出来的,而且随着社区越来越大,效应会越来越明显。
另外一点我感觉很重要的是信念,我们几个创始人都是开源软件的信仰者,本身就很认可开源背后的价值观,推动起来就很自然了。其实更关键的问题可能是,TiDB 的开源战略,我认为早期有几个决定很关键:
选择 MySQL 协议兼容,认准 MySQL 社区在扩展性问题上的痛点针对性地解决,解决存在且普遍的问题,让用户能以非常低的成本迁移到 TiDB。
架构上使用高度分层的设计,保持架构的清晰,让社区能够低门槛的参与。
永远倾听一线用户的声音,接地气说人话,保持文档的齐全(包括中英文)。
站在巨人的肩膀上,积极拥抱各种社区,例如 Etcd, RocksDB, Go 语言和 Rust 语言社区。
后续很多事情大家就都知道了。当然了,除了 TiDB,我们也开源了其它的项目,比如最近刚开源就火了的chaosmesh
[https://github.com/pingcap/chaos-mesh]
我们觉得这会是每个分布式系统测试的标配,所以也积极开源出来,希望帮到更多的人,无论是否是 TiDB 的用户。
02
是如何驱动公司内部开源的工程师文化的呢,这个是招人的时候就做出的要求吗?
我认为这是一个自然而然的文化,首先来给 PingCAP 投简历的工程师一定是认可开源的文化的,否则也不会找我们,甚至有些工程师进来之前就是 TiDB Contributor 了 :)。另外因为我们内部的研发流程基本都是开源社区的流程,比如使用的工具,Code Review,Meetup,分享文化等等,所以这是很自然的一个过程,有相同基因的人会天然地聚集在一起,当这个集体越来越大,对开源认可的工程师的吸引力就会越来越大,我们内部的工程师文化也随之得以传承。
03
TiDB社区生态是如何打造的?
对于数据库产品来说,要想有社区,先需要有用户,用户越多,自然而然社区就越大。早期我们的精力选择放在互联网公司, 互联网公司采用新技术的周期短, 而且技术交流也更频繁, 另外最重要的是互联网公司是业务驱动的,十分看重技术实力和产品价值,比较适合初创公司或者新产品切入, 而且在互联网行业站稳脚跟, 会给社区带来一个清晰的信号, 那就是产品是以技术取胜的。另一方面, 互联网公司的工程师也会成为社区的种子用户。
第二个阶段是社区的治理, 我们有一套很完整的社区运营规则, 完全透明面向社区, 每一个 Contributor 的晋升都有一条清晰的路线图, 让每个社区的朋友能够更好地参与。总体来说,用户, 社区是相辅相成的。
04
在开源和商业化之间,如何平衡?
商业成功是作为一个商业公司的核心追求,我认为这两者并不矛盾,开源作为一个很好的推广和产品开发策略,商业的核心是我们有没有很好地满足客户的需求。在这点上我是相信我们的产品、我们的团队的,而开源和生态能更好地构建我们的商业的护城河。
关于创业
01
在国内的市场环境下,数据库是一个难度相对比较大的方向,无论是产品的打磨、市场的竞争还是商业的变现,TiDB 是怎样撕开的口子?
有技术的进步,也有时代的机遇,技术的进步大家平时见得多,我不多说,时代的机遇反而是大家关注少的,比如 NVMe SSD,万兆网络的普及,这些都是分布式数据库的基石,所以运气和时机也很重要,否则很难想象千兆网络,机械硬盘能给分布式数据库多少发挥的空间。
02
上一位GVP老许向你提出的问题:最初决定做 TiDB 的初心是什么?这也是很多人都想知道的
其实很朴素,就是想解放程序员,包括我自己,当时没有一个自己满意而且能用得上的数据库,每个程序员都想改变世界,我也不例外,所以就想造一个这样的轮子,解放我自己的同时也解放每一个程序员。后来发现做数据库需要大量的资本和人才,哈哈,这个大家现在已经都知道了,其实当初没想那么多,后来才发现数据库是个大坑,现在算是爬出来了。
03
PingCAP上市的那一天会考虑换发型吗?
我估计不会,但我猜东旭那时就可以剪头发了 :)
关于 GVP
01
怎样跟 Go 中国结缘的,觉得 Go 中国社区未来应该朝什么方向发展?
和 Asta 是很老的朋友了,好兄弟,也一直互相帮忙。未来希望更好地推广 Go 语言,期待更多的项目像 TiDB 一样成为全世界的明星项目,为改变世界作出更多的贡献。
02
向您感兴趣的一位 GVP 提一个问题吧,他同时也会成为下一位受访者
当然是 Asta 谢,想问问他创业后的感受是怎样的。
聪明又努力的 Gophers,让我知道你“在看”