上个月,我完成了在 EnterpriseDB 的第一年工作。我所在的团队负责构建和维护pglogic ,多年来,他们贡献了社区 Postgres 中存在的大部分逻辑复制功能。我的大部分工作,我们的工作,都是用 C 和 Rust 进行的,并用 Perl 和 Python 进行测试。我们现在的重点是 pglogic 的后代,称为Postgres Distributed ,它支持复制 DDL、跨集群的可调一致性等。
这篇文章是关于我是如何到达这里的。
黑匣子
我在 2014 年至 2021 年期间担任网络开发人员†。我编写了 JavaScript、HTML、CSS 以及任何服务器端语言:Python、Go 或 PHP。 2017 年至 2021 年期间,我担任实际工程经理。我对数据库一无所知,事实上,数据库知识并不是我所做的任何面试的重要组成部分。
在那段时间(2014-2021),我想尽快推动我的职业发展,所以我花了很多空闲时间做教育项目,并在这个博客(或它的前身)上写下它们。我学会了如何编写原始的 HTTP 服务器,如何编写小型解析器、解释器和编译器。这是一个良性循环,因为互联网(无论如何,黑客新闻)喜欢阅读这些帖子,而我想了解黑匣子是如何工作的。
但我回避了数据结构和算法(DSA),因为它们对我所做的工作来说似乎很复杂而且毫无用处。也就是说,直到 2020 年,随着收件箱的增长,我构建的收件箱页面开始加载越来越慢。我的同事给我指了指“使用索引”,卢克和 DSA 量表从我眼前掉了下来。我想了解这个新的黑匣子,因此我构建了一个支持索引的小型内存 SQL 数据库。
我是一名大学辍学者,所以尽管我在职业生涯早期对编译器和解释器很感兴趣,但我从未梦想过能找到一份与它们相关的工作。只有天才和博士才能完成这项工作,而我两者都不是。开发数据库的想法是一样的。然而,我可以像我之前在其他主题上所做的那样从事小型数据库端项目,所以我这样做了。或者是其他人和我自己对 Raft 实现的一系列探索。
初创公司
从 2021 年到 2023 年,我尝试创办一家公司,但没有成功,我作为联合创始人加入 TigerBeetle,从事营销和社区工作。正是在这段时间,我开始了Software Internals Discord和/r/databasedevelopment ,它们在数据库和分布式系统领域的专业人士和学者中迅速流行起来。
TigerBeetle 是我在数据库公司的第一份工作,虽然我贡献了一些代码,但我并不是那里的开发人员。这是进入空间的一种方式。事实上,无论是对于联合创始人还是数据库方面来说,这都是一次令人难以置信的学习经历。我与 King 和 Joran 一起撰写了文章,这些文章帮助我自己教授和确认了数据库和基于共识的分布式系统的基础知识。
坚持下去
当我在 2023 年离开 TigerBeetle 时,我仍然不确定自己是否能找到一份真正的数据库开发人员的工作。自 2021 年(当时我创办了自己的公司,但没有成功)以来,我的人脉网络呈爆炸式增长,因此我在获得数据库公司的推荐方面没有遇到任何困难。
但我的背景一直导致招聘经理建议让我加入云团队,在 Go 中围绕数据库进行编排,而不是处理数据库本身。
我对这种类型转换并不满意,所以我在失业期间坚持了下来,并继续撰写帖子并举办虚拟黑客周,搞乱 Postgres 和 MySQL。在此期间,我开始了软件内部读书俱乐部的第一个版本,与布莱恩特公园的其他 5-10 名开发人员一起阅读《设计数据密集型应用程序》。在此期间,我还创办了NYC Systems 咖啡俱乐部。
Postgres
经过大约四个月的搜索,我最终得到了三个不错的机会,全部都是作为个人贡献者在 Postgres(扩展)上进行 C 和 Rust 开发。研究扩展可能听起来像是不性感的定义,但 Postgres API 的抽象程度非常松散,就像您正在研究 Postgres 本身一样。
你几乎可以搞乱 Postgres 中的任何东西,所以你必须非常清楚你在做什么。当你因为 API 还不存在而无法搞乱 Postgres 中的某些内容时,公司往往会直接分叉 Postgres,这样他们就可以搞定。 (这种趋势并不是 Postgres 特有的,几乎每个开源数据库公司似乎都有一个或两个长期运行的数据库内部分支。)
企业数据库
这三份工作邀请中有两份来自早期初创公司,在经历了三年多的初创公司早期阶段后,我很高兴能休息一下。但第三个报价来自 Postgres 的最大贡献者之一,一家拥有 20 年历史的公司,名为 EnterpriseDB。 (您可能可以使用不同的指标得出不同的公司排名,因此我只是说 EnterpriseDB 是最大的贡献者之一。)
这似乎是学习很多东西并贡献一些有意义的东西的最佳场所。
我的同事中有一些 Postgres 资深人士(为 Postgres 贡献了 WAL、为 Postgres 贡献了 MVCC、为 Postgres 贡献了逻辑解码和逻辑复制、贡献了并行查询;这样的例子不胜枚举),而且我的开发同事也都是从 EnterpriseDB 开始从事技术支持的人,或者以前是 Postgres 管理员。
这是一个混合体。尽管我以前是这样认为的,但天才或博士相对较少,但他们确实努力工作并拥有来之不易的经验。
不管怎样,我现在已经在 EnterpriseDB 工作一年多了,所以我想分享这个回顾。我还想介绍一下从工程管理和创办公司到回到个人贡献者的感觉。 (剧透:令人难以置信的愉快。)但是让自己写这么多已经足够困难了,所以我就到此为止了。 🙂
我写了一篇文章,讲述了 10 年来我从 Web 开发人员到数据库开发人员的曲折之路。 pic.twitter.com/tf8bUDRzjV
— Phil Eaton (@eatonphil) 2025 年 2 月 15 日
† 从 2011 年到 2014 年,我还从事合同网络开发,但这是我在学校时的兼职。
原文: http://notes.eatonphil.com/2025-02-15-from-web-developer-to-database-developer-in-10-years.html