今天12月17日,对我来说,一特别的日子。因为三年前的今天,我参加溪山天使投资年会,在会场上听着精彩创业故事的同时,在自己的Mac笔记本上,安装了Ubuntu,安装了熟悉的vi, cscope, gdb等开发工具,搭建好了开发环境,正式开始写代码。我得意地告诉参会的朋友们,我不想做天使投资人,而是要重出江湖,亲自操刀,写一个巨牛的专门针对物联网场景的大数据处理引擎,希望今后世界上90%的数据都用我陶建辉开发的软件来存储和查询。

没想到,一晃三年就过去了。从我的第一行代码起,TDengine整个系统的代码量已经超过二十万行,我自己贡献的代码量早已超过三万行。开心的是,我自己只是开了一个头,凭借物联网数据处理的巨大市场空间,凭借“舍得”,凭借“三顾茅庐”的诚意和决心,吸引了一批顶级的人才加入进来。现有团队的14个人,中国科大本科毕业的就有7位,其中5位还全部在美国留学、工作过,还有两位获得过中国科大最高荣誉的郭沫若奖学金,其他同事都来自清华、上海交大、中科院计算所等学府或科研机构,还有三位在华为工作都超过10年之久,14个人中有3位博士,7位硕士。三年前我一个人的梦想,已经变成了整个团队的梦想和目标。更可喜的是,我一个50岁的程序员,能天天与90后、80后混在一起,讨论问题,解BUG,让我顿觉年轻了20岁。

在动手写下第一行代码之前,我已经对物联网、工业互联网的数据处理做了几个月的调研,认为大家普遍采用流行的Hadoop系统是完全不合适的,开发效率低,运行效率差,而且运维成本很高。我发现物联网数据具有时序、结构化、不更新等众多特点,如果采取“一个设备一张表”的数据模型,采用“超级表”来解决多设备之间的数据聚合分析问题,一定能设计出一个极为高效的物联网数据处理系统。想到5G的到来,会让联网设备的数量指数级上升,今后世界上90%的数据都将是物联网设备产生的,顿觉热血沸腾。虽我已创业两次,并成功退出,但实在不想错过这巨大的机会,抱着“Leave a dent in the world”的想法,我再次冲向战场,并且冲到了最前线。

虽然我已经很清晰原理、设计思路,并且是研发老炮一个,但直到实现时才发现,技术难度超过预期。我写了一个高效的存储引擎,但“导入历史数据”却是一个坑最多的地方,场景实在太多,用户可能导入的数据在内存,也有可能在硬盘,也有可能跨多个文件,经历了无数的BUG之后,由团队的90后,科大郭沫若奖学金获得者程洪泽重写历史数据处理模块。节点之间的实时数据同步,我重构了三次,才得以让节点进行同步之时,不影响数据的实时插入和查询;客户端驱动,因为同步、异步的各种调用纠缠在一起,我重构了两次,团队的廖博士在我的基础上又做了很多调整。Kill一个正在进行的查询操作,因为分布式、多线程、资源管理的问题,实现的难度也是远远超过了我的预期。但这三年,每次遇到一个难啃的技术问题,我反而很开心,因为它意味着产品的门槛又高了一点,如果我们能把这些难题都完美解决,这才显示出我们团队真正的价值。

三年已经过去,前面两年在埋头写程序,最近一年我发力在推广上,而且在今年7月份,我们做出了极其正确的决定,宣布将TDengine的核心代码开源。开源还不是我的一时冲动,而是深思熟虑、谋划已久。因为作为底层基础软件,不开源,完全得不到用户的信任,而且市场上已经有相当多开源的同类产品,不开源,推广极其之难。令我兴奋的是,开源后,TDengine获得的反馈远超预期。我曾和团队说,开源后,我们争取一年的时间能在GitHub上获得5000个star就不错了,但没想到,仅仅三个月时间,TDengine的star就超过一万,fork数超过了2800。我们不仅看到了来自中国用户的反馈,还看到了来自美国、印度、西班牙、意大利、捷克等很多国家的程序员的反馈。每天起来后,第一件事就是看GitHub,看是否有人报告新的问题。每当有人报告BUG,我一点的沮丧都没有,反而是开心,因为说明有人在用TDengine,而且在乎我们产品,这是我最希望看到的。哪怕TDengine的商业化不成功,但只要有程序员喜欢这款产品,爱用这款产品,那就是我个人以及整个团队最大的成功。

开源,不仅让TDengine获得了市场的认知,而且让产品的质量得到了前所未有的提升。虽然在开源之前,我们做了大量的测试,而且好几个大的客户已经正式上线,但由于每个用户的场景不一样,开源后,TDengine仍然暴露出了很多问题,在GitHub上递交的问题数量已经超过1000。如果没有开源,这些问题则需要积累更多的客户,需要更长时间的在线运营才能暴露出来。由于开源,整个团队对产品的品质更加关心,像关胜亮、李晖等人,每次递交代码,都是小心翼翼。由于开源,不少外部贡献者参与进来,迫使团队必须建立完善的开发流程。潘方,美国密歇根大学博士毕业,在NASA工作两年后,加入团队,负责起了QA的工作,建立起了产品发布、CI/CD、自动化测试、代码静态检查等全套流程,团队虽小,但已经不再是程序员小作坊,不再局限于北京的办公室。

这一年,为推广TDengine,我参加了太多的活动。无论规模大小,无论线上线下,在介绍产品时,我总是满怀激情。很多人好奇,问我如何能做到这一点。其实,没有什么“灵丹妙药”,唯一就是要对自己研发的产品特别热爱,对产品有足够的信心。具备足够的热爱和信心后,你每一句话、每一个表情、每一个手势,都能把激情张扬出来。团队的90后江燚、80后李广、以及其他团队成员,甚至我们不爱说话的廖博士,受我的影响,每次介绍产品,也都是激情澎湃,信心满满。三年的努力,我终于成功地将我个人的激情转化为了整个团队的激情,也希望我们团队在扩充到一百人、一千人之后,这股激情依然不减。

中国2B软件的销售难,底层软件的销售更难。但我们很幸运,从2018年8月发布第一个版本到现在,已经有了几十家付费客户,免费用户至少几百家。而且可喜的是,最近几个月的销售订单完全是依靠两位销售大将拿下的,没有我的任何参与。为什么有人敢用我们软件呢?我细细一想,除我们产品本身的几大优势之外,有几大原因,1:传播方式发生改变,我们通过微博、微信、甚至直播等新媒体做了很多传播,TDengine在开发者社区里有一定的知名度,而且开源后,传播力度更大,让更多的开发者了解到我们;2:产品体验的方式发生了改变,用户可以下载源码自己编译,也可以下载安装包或镜像,安装极其简单,还可以通过云服务的方式,连安装都不需要,可以说,用户体验的门槛几乎没有;3:中国缺少自己的底层软件,因此当我们超强实力的产品推出来之后,受到业界的高度关注;4:中国开发者群体已经很大,而且现在的决策者一般都很了解或很懂技术,有一定数量的人乐意接受新技术或新产品。

三年过去,TDengine要获得成功,需要做的事情还有太多太多。我们要提供各式各样的连接器,让TDengine与现有技术生态能无缝对接;要提供事件驱动的流计算,完全一站式解决物联网行业的数据处理问题;不仅要解决云端大数据问题,还要解决边缘计算的问题。更重要的是,我们需要100%拥抱云服务。我坚信,开源+云服务才是基础软件的未来,离开两条中的任何一条,都很难让涛思数据成为独角兽。

期望有一天,TDengine的贡献者能遍布全球,一群不同文化背景、不同肤色的程序员,一起协同开发,将TDengine做到极致,为全球90%的数据处理提供一高效、高速、简单易用的引擎。更期望有一天,TDengine的用户遍布全球,任何开发者,只要是处理机器、传感器产生的数据,立马想到的就是TDengine,那一天便是TDengine的成功之日。

陶建辉

2019年12月17日于南京出差途中

精彩推荐1. 漫画:程序员真是太太太太太太太太有趣了!
2. 漫画:程序员真的是太太太太太太太太难了!3. 知道创宇杨冀龙:技术人的商业思维都是锤出来的,真实需求长在客户的KPI上
4. 漫画:35岁的IT何去何从?
5. 漫画:从修灯泡来看各种 IT 岗位,你是哪一种?


点击阅读原文,下载开源的TDengine!

从1行代码到20万行开源,我已经走过了三年相关推荐

  1. 从第一行代码到20万行开源,我已经走过了三年

    开源社引言 这是一个美好的时代,这是一个互联网的时代,这是一个儿童.青少年.中生代.银发族等全民编程的时代,这是一个不分岁月创造奇迹的时代.前期,开源社报导了82岁程序员若宫正子独立开发 iPhone ...

  2. 清华毕业生开发新特效编程语言:99 行代码背后 20 多年的故事...

    不知道大家看没看<冰雪奇缘2>,反正我看完之后的感觉,就是看两个公主玩了一百分钟的塞尔达...没有任何别的想法... 但有一位清华姚班毕业的大佬 -- 胡渊鸣,在看完之后,试着用 99 行 ...

  3. 价值几千行代码的一键安装开源啦,欢迎各位领导莅临指导(贡献代码)

    一键安装已开源,欢迎各位领导莅临指导(贡献代码) 开源地址:https://github.com/fishros/install 贡献教程(小鱼直播录制):https://www.bilibili.c ...

  4. 能让你少写1000行代码的20个正则表达式

    参考: (1).http://www.codeceo.com/article/20-regular-expressions.html

  5. 面对 20 亿行代码,Google 如何管理?

    面对"Google 这家公司有多大?"这种问题,你可能会用收入.股票价格.客户数量或者是形而上学的影响力来回答这个问题.但是,这还不是全部.Google 作为全球最大的互联网公司, ...

  6. 2020 年腾讯新增 20 亿行代码,鹅厂第一编程语言还是它

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 近日,腾讯发布了<20 ...

  7. 腾讯 2020年新增 20 亿行代码,C++蝉联腾讯最受欢迎的编程语言

    作为国内科技巨头,腾讯的产品早已覆盖到了每个国人手中,不过这家公司对于自身技术一直比较「低调」.3 月 18 日下午,腾讯今天对外发布 2020 年度<腾讯研发大数据报告>,披露了 202 ...

  8. 20行代码发一篇NeurIPS:梯度共享已经不安全了

    整理 | 夕颜,Jane 出品 | AI科技大本营(ID:rgznai100) [导读]12 月 8 日-14 日,NeurIPS 2019 在加拿大温哥华举行,和往常一样,今年大会吸引了数万名专家参 ...

  9. 机器学习建模神器PyCaret已开源!提升效率,几行代码轻松搞定模型

    Datawhale干货 编译:张峰,Datawhale成员 寄语:PyCaret,是一款 Python中的开源低代码(low-code)机器学习库,支持在「低代码」环境中训练和部署有监督以及无监督的机 ...

最新文章

  1. pek (北大oj)3070
  2. windows2003中mssql连接的NT AUTHORITY\NETWORK SERVICE登录失败的问题
  3. Bootstrap 输入组
  4. android第五天晚:surfaceView
  5. 工欲善其事必先利其器系列之:在VS里面折叠js代码
  6. Spring开发人员知道的一件事
  7. react中使用构建缓存_使用React和Netlify从头开始构建电子商务网站
  8. anaconda创建和删除环境
  9. JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)
  10. Excel下拉选项设置
  11. 关于硬件批量贴片焊接流程
  12. uniapp 实现定位到当前城市
  13. 中介效应分析:三段式中介效应模型真的适用于经济学研究吗?
  14. Flink快速回忆之Operators(运算符)
  15. 期货对冲套利实战知识
  16. 图形学-着色(Blinn-Phong模型)
  17. CMake和Make之间的区别
  18. office2016家庭和学生版小型企业版专业版|版本区别
  19. 配置Cross-Origin的几种方法
  20. LibZXing二维码工具

热门文章

  1. python绘画梦想_用python实现你的绘画梦想
  2. html旋转代码_付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
  3. 匿名内部类 handler
  4. python json数组解析_Python读取JSON数据操作实例解析
  5. matlab图像降噪_图像超分:RealSR
  6. 获取CPU利用率 系统内存和进程内存
  7. JS 常用函数二(改变HTML样式)
  8. Python name ‘basestring‘ is not defined
  9. 安装redisclient、redis-cluster,使用redis desktop manager和java(eclipse)连接redis过程遇到问题汇总
  10. Kali aircrack-ng wifi密码破解(暴力)(1)