在新年前夕的全员总结大会上,涛思数据的一位 70 后研发老将播种了一份名为“最具开源精力奖”的奖项,这不仅是对他在 2021 年基于 TDengine 所做出的开源奉献的认可,更是映射出其长久以来保持走在开源路上的不变初心。作为老一辈开源人,桑树多以资深的研发技术、乐于分享的精力、无处不流传的毅力,真正践行着开源人的使命。对于如何参加开源社区建设、如何突破 35+ 大龄程序员职场焦虑等当下的热点问题,他也积淀下了本人的观点和思考。
从 1998 到 2022,20 余年开源路上的保持与酷爱
作为一名 70 后程序员,桑树多与开源的故事最早能够追溯至 1998 年。彼时才从哈尔滨工业大学毕业不久的他进入了一家科技公司,正式开启了本人的代码职场生涯,也关上了微妙开源世界的大门。
从开始应用 Linux 桌面环境,到本人入手为新的硬件设施移植驱动软件,再到起初陆续参加了 Linux Kernel、MeeGo、Ubuntu 等开源软件的开发,桑树多的开源之路走得越来越深,与开源技术也结下了长达 20 余年的不解之缘。
图为 2011 年桑树多(左)在 Portland Linux Kernel Developer Summit 上与 Linus Torvalds(右)的合影
“从 Red Hat Linux 5.0 开始,我接触到开源,而后一步步从使用者成为爱好者,最初成为了一名贡献者。回顾过往 20 年参加开源的经验,真的不得不感叹一句受害良多。”
对于做开发的同学来说,“开源”这个概念并不生疏。近年来,随同着云计算、大数据、人工智能等数字技术的疾速倒退,开源模式的热度也在一直攀升,日渐成为数字技术创新和产业数字化转型的重要模式,开源软件也成为了各大互联网企业背地的撑持力量。
从科技倒退的轨道来看,参加开源的重要性显而易见,但依然有很多开发者以工作忙碌等为理由来广开言路。事实上,这并不是一件如许艰难的事件,桑树多用他的亲身经历进行了阐明。
“你能够先成为使用者并积极参与社区探讨,通过学习其他人解决问题的办法和代码相熟开源软件的架构和设计思维,再进一步倒退本人提交 Patch 和 PR 解决问题,成为 Contributor——在其余用户遇到本人解决过的问题时被动帮忙别人,在有能力时踊跃奉献代码。”
“而对于开源小白来说,你能够从本身的技术趣味登程来抉择想要参加的开源方向,如果对数据库感兴趣,那 TDengine 就是一个非常适合上手学习的开源我的项目,如果是对音讯队列感兴趣能够抉择 Kafka。”
入门容易保持却难,咱们无妨从桑树多的经验中探寻一下保持的理由。参加开源到底给他带来了什么?
从开发者到 Contributor,寻找参加开源的取得感
开源到底是什么?参加开源的意义又在哪里?
“简略来说,开源的意义就是突破传统软件研发自上而下的研发模式,更多利用自组织开发模式疾速迭代打造精品软件,如果你还想更加深刻地从文化和理念的角度去了解开源,那能够学习一下《大教堂与集市》这本书。”
作为一个资深的开源软件开发者,桑树多的开源经验也向咱们展现了参加开源到底可能带来哪些扭转和帮忙。
“能够负责任地讲, 参加开源肯定会减少本人的职场竞争力,因为这能够让你更容易接触到先进的技术 ,像 Linux Kernel 之类的很多开源软件,代码曾经通过千锤百炼,通过浏览这些代码就能够学习其背地的设计思维。而且你还能够在开源社区内进行探讨学习,让本人可能更快地播种成长。”
此外,桑树多还认为, 如果能成为一名 Contributor,通过本人编写的代码给关注的开源软件带来晋升,那将是一件十分有自豪感的事件 。首先本身技术实力在专家 review 的环节能够失去别人的认可;其次在 review 过程中进行观点交换也能够帮忙本人学习别人的观点,发现本身的疏漏和有余;在有了肯定教训之后,你也能够去帮忙他人 review 代码,以此实现教学相长。
在这个过程中,桑树多跟一些专家建设了深度分割,也交到很多气味相投、酷爱开源、喜爱开发的敌人。由此可见, 参加开源的取得感是一种多维度的、从内到外的晋升,这不光体现在技术层面,在情感层面也能取得满足感 。
“还有一个参加开源的益处,那就是不便‘跳槽’”。尽管听起来不太正经,然而的确是一个卓有成效的办法,因为很多公司的 HR 或者猎头都会通过开源我的项目来寻找一些有教训的开发者,在开源这条路上越走越深也就意味着有越来越多的工作机会向你在招手。
浏览到此,大家可能会有所好奇,桑树多与涛思数据就是这么结缘的吗?当然没有这么简略,下文中将会为大家揭晓答案。
因开源结识 TDengine,他抉择为国产开源软件添砖加瓦
2019 年中一次偶尔的工作契机,桑树多成为了 TDengine 的 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)准则,对集体职业生涯或者技术方向也很实用 。人生短暂,不要浪费时间做反复的事,而要尽可能晋升本身技术的深度和广度,减少更丰盛的体验,参加开源是个好方法。”
开源贯通了桑树多职场纵横的几十年,使他受害良多,现在,他把这个成长的“秘诀”分享了进去,期待可能帮忙到更多迷茫的开发者。“也心愿随着越来越多开发者的退出和关注,国产开源之路可能越走越顺畅。”
想理解更多 TDengine 的具体细节,欢送大家在 GitHub 上查看相干源代码。