49岁的程序员
今天10月4日,中秋节,按身份证上的日子算,还正好是我49岁生日。太太带儿子去长春参加全国击剑俱乐部联赛,我独自一人在家。一早起来,习惯性的打开笔记本,翻了翻自己写的代码,顺手做了一个小的优化,让系统配置参数又少了一个。数了数自己的代码行数,发现6个月时间,居然已经写下了3万8千多行代码,这个代码量超过了我在美国工作十年的总和。
从1984年高一的时候开始写Basic语言程序到现在,程序员的生涯已经33年。虽然经常写程序,也喜欢写程序,但从来认为写程序太简单,不值得去专门学,因此大学和研究生念的是流体力学和天体物理。但离开校门,研究宇宙大尺度结构的我,无法靠天体物理养活自己,最终进了Motorola开始职业程序员的生涯。2007年,我还在Motorola上班,觉得移动互联网的春天真要到来,而移动互联网必须要有推送服务,因此应该做一推送平台,提供专业的移动推动服务。2008年初回到北京创办和信,自己写了约3000行代码,实现了一个现在还引以自豪的高效、省电、省流量的移动互联网推送引擎。2013年初看到智能硬件即将兴起,再次创业,创办快乐妈咪,技术门槛不高,本不想动手写任何一行程序,但研发团队搞不定胎心的计算,最后自己出手,把分析宇宙大尺度结构的方法用上,600来行代码实时准确的计算出胎心率。
在我看来,程序员写程序,就象画家作画,是在创造作品,如果作品能被人欣赏,那就是最大的回报。从1984年起,我开发过无数的软件,但最让我得意的是两个,一个是1993年暑假用FoxPro帮姐姐开发的财务软件,20多年后,到今天,姐姐还在使用,打开软件,上面显示的还是“建辉电脑”。还有一个软件,是我在中国科大念书时帮科大高分子LB膜实验室开发的LB膜天平系统,其硬件软件还在天天运行,几百篇SCI论文的数据出自我开发的LB膜天平,现在打开系统,上面清晰的显示着“Tao Jianhui”。这两个软件,没有让我获得财务上的回报,但是最让我满足,有说不尽的自豪感,因为现在还在用,用的很好。
从念书到工作,一帆风顺,自命不凡,一直以技术高手自居。但一细想,这个技术高手的水分不小,因为世界上任何一款流行的软件,我都不是贡献者。幸运的是,我还没到写不了程序的那一天,仍有机会。一年前,我发现时序数据库这个细分市场可以大有作为。数据库是底层基础软件,与移动应用和网站类产品不同,更新变化慢,生命周期长,但技术门槛相当高。另外一方面,传统的数据库已经被研究了几十年,各种索引、存储结构都被研究透了,技术上和市场上已经很难有所作为。但由于移动互联网的发展,数据量高速增长,单机已经无法处理,必须依赖集群。数据库的核心技术现在是如何设计分布式系统,处理高并发、高效实时的数据同步、查询、计算了。而我从工作的第一天起,在通讯行业,一直做分布式系统,设计的系统历来都是支持热插拔、在线升级、无单点故障的,这些经验和技术能很好的运用到分布式数据库的设计上,我的知识结构和技能正好吻合,天助我也。因此决定再做一次程序员,开始编写程序。
花了几天时间搭建开发环境,熟悉开发工具后,就真的开干了。接近50的人,本认为与10年前比,效率应该下降不少。但没想到,有了明确的目标后,自己的潜能被完全挖掘出来,从2016年12月中旬起,持续两个月,每天平均工作12小时以上,写下了一万八千多行代码,实现了整个时序数据库的核心引擎。经过简单的对比测试,发现性能指标上远胜MySQL, MongoDB, Cassandra, Influx DB,Open TSDB等数据库,快至少10倍以上。这样的结果让我兴奋不已,决定正式注册公司、融资、组建团队,再一次走在了创业的路上。
获得薛蛮子和明势资本投资后,涛思数据(TAOS Data)6月份正式开张,一下就有了几个人的研发团队,不再是我一个人的战斗。但为保证质量和进度,没想只做指挥和所谓的架构设计,而是与大家一起,又集中精力编写代码。三个月之后,发现自己又贡献了两万行代码,将一个时序空间数据引擎变成了一个可以对外测试的产品TBase,离真正商业化的产品又近了一大步。
过去的十个月时间,几乎天天都在写程序,改BUG。每当解决一个难缠的BUG,总是说不出的高兴,马上请团队一起吃饭。每当又发现一个巧妙的方法,让性能又提高一点,总忍不住马上与团队分享。每当被问题难倒,一定睡不安稳,一定会早早的起来想去解决它。每天十几个小时的开发,没有让我累倒,反而让我回到了20年前,脑子能高速运转起来。如果哪天没写上几行,总觉得还有什么事情没做。两周前在上海参加一个论坛,听着发言的同时,顺手就实现了Naggle算法,还测试通过,立马就有一股强烈的满足感和自豪感。
很庆幸自己一年前的决定,在老去之前,还有机会开发一款顶尖的有相当技术门槛的产品,能把自己多年积累的技术和经验全部用上。而且幸运的是,又再次获得薛蛮子和明势资本的天使投资,组建了一个精干但十分牛气的技术团队。根据TBase目前的测试结果来看,已经胜券在握。无论今后的市场推广如何,无论是开源还是商业化,我相信一定会有不少人喜欢这款产品,品味我设计和编程的美妙之处。如果能象我为姐姐开发的财务软件,为实验室开发的LB膜天平一样,20年之后,还有人在使用TBase的话,那时我一定会是世界上最开心的老头。如果儿子那时自豪的告诉他人,大家用的TBase的核心引擎是我父亲49岁时开发的,那便是我留给他的最大的财富。如果孙子还知道TBase和TAOS Data, 那便是我给他最大的传承。
前面两次创业的经历,让我看够了潮起潮落、云卷云舒。我最擅长的是写程序,所受的教育、训练能让我在这方面远胜他人,为何要去搞地推、运营、做一些表面红红火火,而不需要任何技术门槛的活呢?还是继续写程序,而且好好的写,用心去写,就像画家一样,用心去创作一幅作品,而不画应酬之作。希望10年后,无论TAOS Data是已经IPO还是小公司一个,我还在积极的为TBase贡献代码,20年后还能参与技术细节的讨论,还能动手解决BUG。我生命的最后一刻,希望还在计算机屏幕前。
钱再多,也难让人在历史上留下痕迹,但一幅好的作品却可以传承,让后人好好的品味。愿我领头开发的TBase成为传世之作,Leave a dent in the world!