共计 2530 个字符,预计需要花费 7 分钟才能阅读完成。
明天一早,我给一位远在西安还从未谋面的程序员小邓收回了一份很不错的 offer。一周前,他观看腾讯开发者大会的直播视频,听了我的演讲之后,加了我的微信,并被动通知我,很想退出涛思数据。尽管他毕业的学校还有工作的经验,不是那么靓丽,但我一下看到了他简历里列的 GitHub 地址以及参加的开源我的项目,因而马上进 GitHub 浏览他的程序,发现程序挺丑陋,构造、档次都很清晰,代码可读性很强,更让我诧异的是,用英文写的文档以及正文齐全不输给我这个在美国留学工作 10 多年的海归。我立刻让另外一个共事也去看一下他的代码,得出的论断是,这人很优良,即便近程工作,也值得马上录用。因而咱们马上视频交换,很快,我就定下了录用的决定。
如果没有 GitHub,没法翻看他写的上万行代码以及文档,没法查看批改记录,我绝不会思考录用一个连面都没有见过的小伙子,而且招聘时,还是会更偏向于我中国科大的师弟师妹,或有过其余名校就读和大厂工作经验的人。 开源,扭转了我的面试流程,扭转了涛思数据,也扭转了一个程序员的人生轨迹。
当初的软件系统往往很大,以大家相熟的 Linux 内核为例,源代码行数曾经超过 2500 万行,文件超过 6 万个,参加的开发者超过 2 万人。就连涛思数据开源的 TDengine, 一个看似简略的物联网大数据处理平台软件,C/C++ 代码曾经超过 30 万行,Python 测试代码都已超过 15 万行,而且还会成倍增长。开发一款软件,更多的是团队协同,而不是单兵作战。单个程序员的奉献如何体现?如何让外界的人晓得并评估?对于闭源软件来说,这个价值判断问题无从下手。但开源不同,因为程序员写的任何一行代码,正文,做的任何批改都会被记录下来,而且任何人都能够看到。能力的高下,奉献的大小随时可查。
TDengine 在 GitHub 上的页面
开源给程序员提供了一个展示本人集体能力的绝好机会,特地是对于大厂、大零碎的开发者。这个展示,能让大家更加主观地评估一个程序员的价值。长期以来,大家更容易置信在大厂工作过的,尽管他有可能从没奉献过外围代码,从没解决过重大技术问题,只是一个冒名顶替之辈;大家更偏向于置信名校毕业的,即便他早已进行学习,只是已经高考分数不错;大家更容易置信 35 岁以下的人,不置信大龄程序员仍然有很强的战斗力。开源的代码,能让大家摈弃对教育、年龄、性别、教训、肤色、地区、文化的偏见,看到一个程序员背地真正的价值,便于组建团队,便于协同作战。
开源让程序员的代码成为了作品,与画家的画、音乐家的曲子一样,能够被寰球程序员观赏、应用,并传承。对于闭源的软件而言,这是不可能的,大家看到的只是 UI 或 API,无奈让人看到程序自身,更无从观赏。你在微软为 Windows 操作系统开发的外围模块,无论设计得如许优雅,你在腾讯为微信后盾设计的音讯解决模块,无论高并发能力有如许强悍,都无奈让人观赏、惊叹。但开源之后,所有都变了。只有你的代码足够好,解决了重大问题,那肯定会成为传世之作。即便有瑕疵,后来者也能够在你的根底上批改,但你的名字永远会镌刻在代码上,而不会被历史冲刷掉。
有了作品这个感觉之后,程序员会人造的对本人的代码产生一种自豪感,会对代码的品质产生极致的谋求,因为他不想本人的代码被人鄙弃,而是被观赏。在 2019 年 7 月决定将 TDengine 开源之前,涛思数据团队花了好几个月的工夫整顿代码,编写文档,目标就是不想让它过于难看,被人诟病。不开源的话,咱们基本没有这个能源去做,因为用户是看不见的。在 2019 年底启动 TDengine 2.0 的开发,更是如此,就是想让 TDengine 的设计与代码更加优雅,构造更加清晰,让其余程序员看的时候,能享受到一种高兴和美感。3 个月前,我花了几天工夫入手为 TDengine 写了一个小模块 tref.c,就想完满地解决在多线程状况下,资源的生命周期治理问题,而且就心愿这个 500 来行的小程序能被寰球的程序员学习、应用和改良,不再为多线程问题所烦。如果不是因为开源,没有会成为作品的感觉,我大半就是仅仅解决一个具体问题而已。
GitHub 上 tref.c 的一段源代码
对于初入茅庐的程序员而言,参加开源我的项目,更是一种学习的机会。不仅能够观摩、学习绝顶高手的代码,更能够参加其中,奉献一段代码。本人写的代码有问题,肯定会被测试进去、被人指出故障,甚至间接被人批改或摈弃。与大侠间接过招,相比闭门造车,相比本人摸索,成长的速度要快 N 倍。而且参加的形式有很多种,除间接奉献产品代码外,还能够奉献测试例、测试代码,奉献文档,奉献应用案例等。就象 TDengine,测试代码的行数将会远超过产品自身的代码行数,而且对技术的要求一点都不亚于产品自身。我的第一行程序是 1984 年写下的,过后正读高中一年级,只能看到谭浩强编写的《BASIC 语言程序》这本书,书里尽是一些简略得不能再简略的程序。如果过后就能像当初这样拜访有数优良的开源代码,对于一个如饥似渴的学生而言,那无疑找到了世界上最好的课本和老师。
对于 90 后 00 后程序员而言,开源,让他们赶上了程序员前所未有的黄金时代。对于我这个 52 岁的大龄程序员而言,依然是赶上了黄金时代,因为能够依附本人的实力证实,编程没有年龄的限度,而且仍大有用武之地。真心的心愿,三十年之后,还有人在看在用我写的代码,而且我本人还能给 TDengine 奉献代码,那才是我最大的幸福。
这台 Mac 为 TDengine 奉献了 4 万多行代码
“这是最好的时代”,开源,让程序员的价值能更主观地展示,让程序员有了属于本人的作品,让程序员去谋求极致,有能源去打磨作品,让其成为传世之作。对于真正的程序员而言,毫无疑问,这是最好的时代。
“这是最坏的时代”,开源,让冒名顶替的程序员无所遁形,能传承上来的肯定是精美的作品,不再会有劣币驱赶良币之说。对于靠拍、靠混,依赖炫酷的 PPT 和报告升迁的程序员而言,毋庸置疑,这是最坏的时代。
无论年龄,无论学历,无论是在 BAT 还是在 startup 工作, 只有你酷爱编程,就肯定要参加到开源的浪潮中。无论你是全职退出涛思数据这样的开源软件公司,还是作为社区贡献者参加一个开源我的项目,只有继续致力,你肯定会给世界留下一个印迹,给人类留下一幅作品。