在新年前夕的全员总结大会上,涛思数据的一位 70 后研发老将收获了一份名为“最具开源精神奖”的奖项,这不仅是对他在 2021 年基于 TDengine Database 所做出的开源贡献的认可,更是映射出其长久以来坚持走在开源路上的不变初心。作为老一辈开源人,桑树多以资深的研发技术、乐于分享的精神、无处不传播的毅力,真正践行着开源人的使命。关于如何参与开源社区建设、如何打破 35+ 大龄程序员职场焦虑等当下的热点问题,他也沉淀下了自己的观点和思考。
从 1998 到 2022,20 余年开源路上的坚持与热爱
作为一名 70 后程序员,桑树多与开源的故事最早可以追溯至 1998 年。彼时才从哈尔滨工业大学毕业不久的他进入了一家科技公司,正式开启了自己的代码职场生涯,也打开了奇妙开源世界的大门。
从开始使用 Linux 桌面环境,到自己动手为新的硬件设备移植驱动软件,再到后来陆续参与了 Linux Kernel、MeeGo、Ubuntu 等开源软件的开发,桑树多的开源之路走得越来越深,与开源技术也结下了长达 20 余年的不解之缘。
“从 Red Hat Linux 5.0 开始,我接触到开源,然后一步步从使用者成为爱好者,最后成为了一名贡献者。回顾过往 20 年参与开源的经历,真的不得不感叹一句受益良多。”
对于做开发的同学来说,“开源”这个概念并不陌生。近年来,伴随着云计算、大数据、人工智能等数字技术的快速发展,开源模式的热度也在不断攀升,日渐成为数字技术创新和产业数字化转型的重要模式,开源软件也成为了各大互联网企业背后的支撑力量。
从科技发展的轨道来看,参与开源的重要性不言而喻,但仍然有很多开发者以工作繁忙等为理由来闭目塞听。事实上,这并不是一件多么困难的事情,桑树多用他的亲身经历进行了说明。
“你可以先成为使用者并积极参与社区讨论,通过学习其他人解决问题的方法和代码熟悉开源软件的架构和设计思想,再进一步发展自己提交 Patch 和 PR 解决问题,成为 Contributor——在其他用户遇到自己解决过的问题时主动帮助他人,在有能力时积极贡献代码。”
“而对于开源小白来说,你可以从自身的技术兴趣出发来选择想要参与的开源方向,如果对数据库感兴趣,那 TDengine 就是一个非常适合上手学习的开源项目,如果是对消息队列感兴趣可以选择 Kafka。”
入门容易坚持却难,我们不妨从桑树多的经历中探寻一下坚持的理由。参与开源究竟给他带来了什么?
从开发者到 Contributor,寻找参与开源的获得感
开源究竟是什么?参与开源的意义又在哪里?
“简单来说,开源的意义就是打破传统软件研发自上而下的研发模式,更多应用自组织开发模式快速迭代打造精品软件,如果你还想更加深入地从文化和理念的角度去理解开源,那可以学习一下《大教堂与集市》这本书。”
作为一个资深的开源软件开发者,桑树多的开源经历也向我们展示了参与开源到底能够带来哪些改变和帮助。
“可以负责任地讲,参与开源一定会增加自己的职场竞争力,因为这可以让你更容易接触到先进的技术,像 Linux Kernel 之类的很多开源软件,代码已经经过千锤百炼,通过阅读这些代码就可以学习其背后的设计思想。而且你还可以在开源社区内进行讨论学习,让自己能够更快地收获成长。”
此外,桑树多还认为,如果能成为一名 Contributor,通过自己编写的代码给关注的开源软件带来提升,那将是一件非常有自豪感的事情。首先自身技术实力在专家 review 的环节可以得到他人的认可;其次在 review 过程中进行观点交流也可以帮助自己学习他人的观点,发现自身的疏漏和不足;在有了一定经验之后,你也可以去帮助别人 review 代码,以此实现教学相长。
在这个过程中,桑树多跟一些专家建立了深度联系,也交到很多志同道合、热爱开源、喜欢开发的朋友。由此可见,参与开源的获得感是一种多维度的、从内到外的提升,这不光体现在技术层面,在情感层面也能获得满足感。
“还有一个参与开源的好处,那就是方便‘跳槽’”。虽然听起来不太正经,但是确实是一个行之有效的方法,因为很多公司的 HR 或者猎头都会通过开源项目来寻找一些有经验的开发者,在开源这条路上越走越深也就意味着有越来越多的工作机会向你在招手。
阅读到此,大家可能会有所好奇,桑树多与涛思数据就是这么结缘的吗?当然没有这么简单,下文中将会为大家揭晓答案。
因开源结识 TDengine,他选择为国产开源软件添砖加瓦
2019 年中一次偶然的工作契机,桑树多成为了 TDengine Database 的 Contributor。可能是出于对一位 50 岁大龄程序员两个月写出一万八千多行代码的震惊和敬佩,也可能是因为对国产开源软件投入了越来越多的关注,总之在种种原因的作用之下,不久后他选择加入涛思数据。
“当我了解到年届 50 的 Jeff(涛思数据创始人陶建辉)还在继续写程序,并且打造出 TDengine 这个产品的经历后,我就开始在 GitHub 上关注 TDengine,然后惊喜地发现中国的团队也能开发出精品开源软件。在深入地了解下我越发觉得,TDengine 并不是一款被凭空创造的产品,而是真正地在解决现实中的实际问题,而且正是凭借这一点,其用户和市场规模也都在稳步增长。”
目前桑树多在涛思数据主要负责 TDengine 的生态应用研发工作,致力于让更多人能够在更多场景和环境下更容易使用。尽管已经拥有很丰富的工作经验,但猛然调转方向到一个自己涉猎并不是很深的技术领域,如桑树多这般的技术老将也不免需要适应一段时间,“遇到最大的困难主要是之前技术方向不在数据库,对数据库的学习需要从头开始,但好在通过大家的热情帮助和自己的努力也算是摸到数据库的边儿了。”
对于桑树多而言,从加入涛思的那一刻开始,自己的全部精力就投入到了 TDengine 的优化和发展中。由于 TDengine 是使用 C 语言开发,对很多开发者而言门槛略高,对此桑树多也提出了一些不同的看法。
“TDengine 的代码质量很高,模块之间划分总体上比较清晰,文档也较全,社区相对也很活跃,遇到问题能够及时得到帮助,对于有志于学习数据库核心代码的同学来说门槛高不是一个难以攻克的问题。如果你对 C 语言并不熟悉,那我建议你也可以从学习 TDengine 生态应用软件的源代码开始,还可以通过学习 TDengine 的测试脚本来学习如何对基础软件进行测试。”
目前 TDengine 支持 Java、Go、Python、C#、NodeJS、Rust 等多种语言的连接器,发展至今,其代码量也越发庞大,想要充分理解其整体的设计也是一件比较有挑战的事情。如何才能对 TDengine 的设计和模块进行一个快速且深入地了解,桑树多也作了相应解答。
“首先 TDengine 不仅进行了代码开源,文档也实行了全面开放,其中不仅是使用文档,连设计文档都是公开的,静下心来阅读完这些文档会给到你很大的帮助。此外 TDengine 的编译和部署过程极其简单,自己就可以实现代码下载编译运行,还可以通过 GDB 等调试工具看到所有执行过程,和代码对照起来学习会非常容易。”
正如桑树多所说,开源软件本质上就是要扩大影响力,积极打造生态社区,遵从业界规范,使软件之间可以更容易互通和互操作,继而进一步推动科技和行业的进步。在桑树多等一众涛思人的努力下,作为国产开源软件的一员,TDengine 正在向着这个方向加速攀登。
而回过头来,我们从桑树多加入涛思数据的经历中也能悟出一个道理,只要拥有一颗乐于学习的心和一双善于发现机遇的眼睛,年龄就不会成为限制自身前进的阻力,反而经年累月积攒下来的经验和见识会成为纵横职场最锋利的“武器”。
从 20+ 到 35+ 程序员,打破常规向更多领域突围
近年来,随着业内大龄程序员被频繁清退等职场新闻的不断发酵,在程序员的圈子里,“35+ 门槛”“青春饭”等充斥着焦虑的话题甚嚣尘上。一批批年轻人从校园走进社会,俗话说长江后浪推前浪,一浪更比一浪强,那伴随着他们的成长,“前浪”真的会被拍死在沙滩上吗?
或许我们可以从桑树多的经历中寻找一下答案。作为一名 70 后,他早就超越了 35 这个所谓的“大龄”门槛,但他仍然活跃在职场之上,甚至凭借着沉淀多年总结出的技术经验、阅尽千帆后输出的深刻观点,成为了公司里一些后辈所追逐学习的存在。对于如何打破程序员圈子中 35+ 大龄焦虑症这一现象,桑树多也有自己的看法。
“大龄程序员在国外很常见,我见过很多国外程序员四、五十岁还依然奋斗在一线编程工作上,很多顶尖软件项目的维护者往往也是大龄程序员。随着国内人口红利的下降,相信更多企业也会越来越重视大龄程序员的价值。而我们自身也应该保持初心,积极了解软件行业的发展趋势,把自己过去的经验更多应用到有前景的新领域中。只有不断发现、学习和创新,才能不断进步、不被时代所抛弃。”
大龄程序员前进的动力是打破常规,向更多领域突围,年轻的程序员往往有更多的选择,但偶尔也会因行差踏错、定性不足而蹉跎光阴。 以过来者的身份,桑树多从自身经验中沉淀出一套方法论,“写代码有个DRY(Don’t repeat yourself)原则,对个人职业生涯或者技术方向也很适用。人生短暂,不要浪费时间做重复的事,而要尽可能提升自身技术的深度和广度,增加更丰富的体验,参与开源是个好办法。”
开源贯穿了桑树多职场纵横的几十年,使他受益良多,如今,他把这个成长的“秘诀”分享了出来,期待能够帮助到更多迷茫的开发者。“也希望随着越来越多开发者的加入和关注,国产开源之路能够越走越顺畅。”