PingCAP CEO刘奇:如何聚集精英技术人才 | GTLC人物
PingCAP联合创始人兼CEO刘奇将作为本次峰会的重磅嘉宾,与现场技术Leader们一起分享他关于打造优秀技术团队的实践与经验。
刘奇,PingCAP 联合创始人兼 CEO ,爱自由的 Hacker,先后创建了 Codis、TiDB、TiKV 等知名开源项目。曾任豌豆荚,京东资深系统架构师。同时也是知名的 Go 语言专家和 Redis 专家。现从事开源的分布式 NewSQL 数据库 TiDB (受 Google F1/ Spanner 启发)的开发。擅长高并发、大规模、分布式数据库系统架构设计。
PingCAP现在在做的事情其实可以追溯到我在京东的时候,当时在京东有两个事情比较痛苦,一个是没有很好的分布式缓存的实现,另一个是没有很好的分布式数据库的实现。
去了豌豆荚之后,在分布式缓存上,写出了Codis,并把它开源了出来,算是解决了第一个心愿。Codis是我们的成名作,之前我也参与了很多开源项目,但多是玩票性质,Codis是第一个做到工业级别的开源项目。
然后开始解决第二个心愿,实现分布式数据库,但是这件事难度太大、需要的资源太多,也无法在短期内就看到产出,如果这也并不是公司当期的重点业务目标,就基本不太可能在内部实现。但是这其实是很多公司的痛点所在,比如很多游戏公司、互联网金融公司,都缺乏一个既能水平扩展又能保证分布式事务的数据库。所以我们就决定出来做出这样一个分布式数据库,希望能够解放后端程序员。毕竟每一个程序员心目中都有一个改变世界的梦想,我们也希望能够通过代码来改变世界,改变大家写后端代码方式,这是我们的初衷。
现在我们的分布式 SQL 数据库 TiDB 项目(TiDB+TiKV)总计在 GitHub 上已经有 10000 多个 Star,社区里有 100 多个 Contributors,还在不断增长。
选择开源,主要也是希望能够得到社区的帮助。首先,这件事情本身就需要比较多的人才参与,而很多精英都愿意参与开源,因为开源精神代表着颠覆和进步,甚至改变世界。同时我们也需要有足够多的用户做测试,把他们的使用场景、使用感受贡献出来。这是一件需要很多人一起做的事情,很符合开源的理念。
其次,从全世界角度来看,在数据库领域不开源是没有机会的,因为大家之前已经经历过被IBM、Oracle等厂商绑定、难迁移的痛苦历史,开源是解决这个问题的唯一方案,大家都不会愿意自己重新被绑定到一个新的厂商身上。
这也是我们选择用开源的模式来做这件事的原因。
作为一个理想主义者,从内心来讲,我觉得开源是最理想的方式。一个闭源项目只属于某一个公司,但一个开源项目,每个人都可以拥有它,觉得哪里不好,都可以参与进去改进它。每个人都提供一点自己的改进,整个项目就会日渐完善起来。这种参与感,是我特别喜欢开源的地方,也是其他非开源项目无法具备的。
另外,开源有着天然的人才聚集效应。在一个开源项目里,你的收获不仅仅局限于自己使用、参与之后的经验,在这个过程中,你还能看到别人是怎么做的,学习到别人的经验方法。同时,每个开源项目里都有很多优秀的程序员,你参与到这个项目,你就有可能遇到比你更资深的程序员,帮你 review 你的每一行代码,并给你改进的建议,这种提升是其他地方不可能有的机会。
此外,帮助新加入的 Contributor 进步,去给他人布道传播自己的理念,都是另外一种有价值的体验,能收获非常大的成就感。
所以站在一个纯粹的、没有商业角度的立场来看,拥抱开源是不二选择,它是符合内心需求的模式,你会发自内心地喜欢上它。
开源社区里有一句话叫 Community First,就是社区优先,包含两点:一是理念要开放,不要有所保留,你的所有东西都必须跟社区讲清楚,包括你的想法、你的计划、你的进度、你每一项工作的安排,甚至你的不足、你需要提升的地方,都要呈现在社区里,清晰明了地让大家了解你的想法,也能弄清楚哪个部分有自己关心的东西,去哪里能更好地做贡献。
我们每走一步都会跟社区保持紧密的交流,每周都会有周报,告诉大家 TiDB 这个项目本周发生了哪些事情、合并了哪些 PR 、做了哪些性能的提升?这样社区就能知道你的目标在哪里,你现在走到了哪里。
二是要有很好的交流渠道,比如通过邮件列表、RSS 订阅等,在国内还可以建立微信公众号,把这些渠道都建立起来是非常重要的。这些都是线上的渠道,到一定程度之后,大家就可以发展到线下,从“网恋”到线下“约会”。
怎么做好开源社区?
首先心态上必须要足够 Open,这点上我们是做得非常好的,我们会通过文章把每一个代码的细节、每一个内部设计的原因、每一次迭代的过程都分享出去,给大家作参考。
很多人对于开源的理解并不到位,觉得只要开放代码就可以了,但其实这只是 Source Open,并不是真正的 Open Source。
Open Source 首先要 Open mind,就是要把你的想法、思想都开放出来。其实是 Open Communication,必须要跟别人不断地交流,把开源过程中的种种问题都拿来讨论。
在国内,大部分做开源的都只是把代码开源,却没有去讲代码背后的思路,没有去讲它内部的运行逻辑,也没有去讲自己的方案是参考了哪些论文,又是怎么实现的。
而这些方面,我们都有非常详细的文章输出分享,像去年我们就写了 60 多篇文章,去阐述 PingCAP 团队在整个数据库内部的细节是怎么做的,以便于大家了解 TiDB 到底是怎么运转的,方便他们更好地在社区内做贡献,这对于社区的凝聚于成长是非常有帮助的。
PingCAP 的核心竞争力是人才,而非源代码。源代码我们全部开源,讲得清清楚楚,但没有人才,会了也不一定做得了。举个例子,原子弹的理论全世界都知道,但原子弹不是谁都能做得出来的,门槛是一样的,都需要有人才、有设备。
目前 PingCAP 技术团队占整个公司 80%,是一个标准的技术型公司。在人才标准上,我们一向奉行精英理念,以高门槛招人,同时需要对方热爱开源,认同开源的理念,本身也在参与开源项目,能深刻认识到开源的价值。
其次,跑得快非常重要,一旦你跑得足够快,别人去模仿就没有意义,因为模仿的人永远是落后的,就像当初的打车软件的滴滴和快的,模式人人都能看懂,但不是谁都能模仿的,它们跑得太快了,后面的根本跟不上。
最后,我们还有社区,社区是有黏性的,而且都不希望分裂,既然已经有好的项目,大家更希望跟着继续完善就好,而不是另起炉灶。而且社区还有动力,当社区在推某一样东西的时候,你再起炉灶,没有社区的推动,根本没有希望跑赢原来的项目。像 Hadoop 这些开源项目能做得那么大,都是因为背后有社区强大的动力支撑。
所以代码讲得再明白、文档开放得再详细,根本不用有发展上的担心,又能怎样呢?因为不会对项目的核心竞争力有影响。
我们也非常注重对社区人才的培养,数据库是一个有一定门槛的技术领域,刚入门肯定不会有特别深入的理解,但在这个过程中,我们会就他发现的问题不断地跟他交流,提升他对于整体性能的理解。
现在,我们已经对 Contributor 形成了一套比较完善的层级机制,从 Contributor 到 Reviewer 到 Maintainer 再到 Commiter,我们会挑选每一阶段的优秀者,对他们进行进一步的指导培训,让他们慢慢升级到下一阶段,形成一个良性的层级关系。
这样也能保证新人能从最简单的工作开始,而且不同阶段的 Contributor 也能匹配到相应水平难度的问题,大大提高了大家的参与度,是一个非常好的人才体制。
同时,这也为 PingCAP 输送了很多优秀的人才,很多开源项目的 Commiter 最后都会变成相应公司的员工,这也是非常自然而然的一条路,也是开源的魅力所在。
国内真正把开源当成公司战略的公司还是很少,大部分只是当成一种工具,或者一种宣传推广的方式,并没有深刻地理解开源这件事情。这样就很容易出现代码往那儿一放,提问也没人管理,或者代码没有更新、更新没有注释、注释没有文档的不合格案例。
这种也不属于开源真正的运作模式,并没有得到开源真正的好处,反而会让很多人对开源产生误解,因此,我们需要不断出去分享、出去布道,传播开源的理念,给大家介绍我们开源的经验,告诉大家真正的开源应该是什么样的。
同时,我们也在努力让PingCAP成为一个成功的开源技术创业案例,值得大家借鉴,也让大家相信真正开源的力量。
GTLC汇聚蚂蚁金服、苏宁云商、饿了么、网易、摩拜单车、PingCAP等诸多公司的顶尖技术领导者,现场分享管理实战经验,解读技术与商业之道,本年度最强的学习交流盛宴,你一定不能错过!