Introduction:

I’m Melanie Plageman. I’m a Postgres Major Contributor and Committer working at Microsoft. I have contributed Postgres features and bug fixes to the vacuum, IO, query execution, and statistics sub-systems. I participate in Postgres community initiatives including co-organizing PGConf.dev. I love hacking on Postgres and feel so lucky that I get to do it as my job.

Journey in PostgreSQL:

I made my first Postgres extension while working in IT consulting. At the time, I knew I wanted to shift my focus to coding. I quit my consulting job to focus on getting a job as a software engineer. I enjoyed reading the Postgres source code so much that I decided to pursue a job contributing to Postgres. I really like that Postgres development ethos emphasizes doing things the right way.

I was so lucky to end up at Pivotal, contributing to Greenplum. The environment was super collaborative. I learned so much from my co-workers. Pair programming is awesome! I loved coming to work every day. I felt like we could do anything as a team. It really shaped me as an engineer.

When you talk about pipeline for a project like Postgres, relatively few people gain enough experience to become senior contributors. What I learned at Pivotal is that it isn’t efficient to just widen the funnel at the beginning of the pipeline. You need to help people along every stage of the pipeline. You can’t just help people write their first patch and then they’re on their own. You need regular health checks for the team and growth opportunities for the team members.

Can you share a pivotal moment or project in your PostgreSQL career that has been particularly meaningful to you?

At PGCon Ottawa in 2019, I heard Tomas Vondra and Thomas Munro discussing approaches for resolving an issue with hash join. They explained the ideas they had for solutions. They detailed the idea they said was the most complete solution but also the most challenging to implement. I decided to work on this in my free time and in some of my upstream time at work.

It took me eight months to have something that mostly worked. It was the first Postgres feature I wrote. It was so challenging and rewarding. I learned so much about Postgres’ hash join implementation and various related problem spaces. I ended up speaking about this work at the virtual PGCon 2020. This work was what eventually led to me getting a job working full-time on upstream Postgres at Microsoft.

Contributions and Achievements:

I’m proud of the refactoring of vacuum code I did last release (PG 17). I implemented a feature which improved vacuum performance by refactoring the existing code. It was difficult, painstaking work and involved a highly sensitive area of the code. I was very lucky that Heikki Linnakangas, a very experienced committer, helped co-author, validate, and eventually commit the work. I’m also very proud of a recent bug fix I committed. It was a very hard to reproduce edge case that would cause a vacuum process to infinitely loop. My colleague Andres Freund was instrumental in helping me reproduce this.

I think projects like these help build my confidence that if I were to commit a bigger feature to Postgres and something went wrong, I’d be able to root cause and fix it. Being a committer means being accountable for code that’s being used by thousands and thousands of people. You have to build confidence in yourself and that your co-contributors will have your back.

Have you faced any challenges in your work with PostgreSQL, and how did you overcome them?

I’ve worked on several projects that weren’t committed and no matter how hard I worked on them, it seemed like they weren’t producing a committable patch set. I try to tell myself that this is part of doing work that is more experimental and risky, but I find it really hard to give up before I’ve solved a problem. And in open source, people don’t usually tell you, “hey don’t work on that anymore. you’re wasting your time”. It’s hard to know if something is wrong with me and my work or if this is an inevitable part of being a developer. I don’t know if I have overcome this issue yet 🙂

Community Involvement:

I co-organize PGConf.dev, the PostgreSQL Development Conference. I am on the PostgreSQL Contributors Committee (we recognize long-time Postgres contributors).

I regularly speak at Postgres conferences — like PGConf NYC, PGConf EU, PGCon (now PGConf.dev), and CitusCon (now POSETTE).

I’ve also been a guest on several Postgres podcasts — like Postgres FM, Talking Postgres, and Hacking Postgres.

Right now, I’m helping out with the Postgres Hacking Mentorship Program, started by Robert Haas. I’ve been had the benefit of mentorship throughout my career, so I am working with participants in the program to help them get the most out of their mentorship relationships.

Can you share your experience with mentoring or supporting other women in the PostgreSQL ecosystem?

First of all, I want to say that the job of mentoring women in tech does not fall only to women. There are fewer women than men, so if all women are being mentored by women, then men are not stepping up.

One way to help other women in tech is to be a technical role model. I have had some fantastic mentors — both men and women. And there are people in the Postgres community like the committers participating in the Postgres Hacker Mentorship Program who are working hard to create mentorship opportunities for more people (including women) to be Postgres hackers.

That being said, it is also really important to create opportunities for others as you become more established. Since becoming a committer, I have spent more time on creating mentorship opportunities and on advocacy.

I have spoken about inclusion of women Postgres hackers (at PGConf.dev 2024). I specifically recruited talk proposals from women applicants while on the program committee for PGConf.dev 2024. I am a sustainer of the PgUS diversity scholarship for conference attendance. I also participate in the Postgres Women telegram channel and have tried to create channels for women to ask questions about getting involved with Postgres hacking.

Insights and Advice:

Protect your time. Be sure to spend the time on activities that directly contribute to your career goals. If you want to build technical skills, focus on technical tasks. Don’t be afraid to say no to non-technical opportunities. Of course working in tech is about more than coding. But if you spend 75% of your time in meetings and writing blog posts, then those are the skills you are building.

Are there any resources (books, courses, forums) you’d recommend to someone looking to deepen their PostgreSQL knowledge?

The PostgreSQL Hacker Mentorship Discord server is a great resource for asking questions about Postgres internals and development. I also recommend listening to conference talks from Postgres conferences. These are great resources. There are a few books on Postgres internals that can be helpful (if you google Postgres internals, they show up in the results). There are READMEs in the code that can be helpful. I can give specific recommendations for sub-topic resources.

Looking Forward:

I’m very excited for AIO/DIO in Postgres. I’m excited for multi-threading. There’s so many big projects that folks have tried to do in the past and are trying to do now. I can’t wait to see where those go and to try and help them get there

Do you have any upcoming projects or goals within the PostgreSQL community that you can share?

I’m currently working on trying to make vacuum’s freezing behavior more adaptive to each table and its access pattern. I’d like to work on some ideas that we have been discussing about making autovacuum keep up better with table bloat. I’m planning on helping a bit with the work Andres Freund is doing to add AIO to Postgres.

There are so many projects on my list and ones I’d like to help with. I also want to spend more time reviewing (and committing) others’ work. I struggle to do that during this more R&D focused portion of the year.

As for community work, I’m working on PGConf.dev 2025’s program. One goal I have is for the annual Postgres developer and leadership meeting to lead to more action items and outcomes. I don’t have any good ideas for how to do that yet, though 🙂

Personal Reflection:

It means that I am part of something that is bigger than a single company or team. I have colleagues who I will probably work with for the rest of my professional life — regardless of my employer. That is a really special kind of security. But it is also a responsibility. That strategy will only work as long as we keep making Postgres better and continue to improve and address various architectural issues that may hold us back.

How do you balance your professional and personal life, especially in a field that is constantly evolving?

Balance looks different to everyone. I’ve strongly prioritized my professional life in the past few years, but that was my choice (and a luxury not everyone has). And I still said no to lots of opportunities that didn’t align with my goals.

This comes back to protecting your time. If you want to take a CS course or learn a new programming language, you will probably have to set down other tasks and reprioritize.

Share your priorities with others. Be clear about saying no to work that doesn’t align with these priorities. And if those priorities are your family or hobbies or just having some time for yourself, those are just as important.

You can’t always rely on your manager to make sure you don’t burn out. You have to watch out for yourself. And if you work somewhere where they are not respecting your boundaries, I recommend looking for a different opportunity. I’ve had co-workers I really enjoyed working with who were keyboards down at 5pm every day. And I’ve had co-workers I loved who worked 70 hour weeks much of the year. The key is communication. Communicate your boundaries and set expectations.

Message to the Community:

The Postgres community is full of kind, well-intentioned people. If you do have the bandwidth to get involved with community organizing, we are always looking for new people to help with meetups, conference organizing, and more. It’s not always clear what those opportunities are, so don’t be afraid to ask. Don’t be discouraged if someone doesn’t get back to you right away, as everything is pretty much run by volunteers.