Wednesday, December 20, 2023

Praise, Criticism, and Dialogue

When my children were little and I was trying to figure out how to be a parent, I read someplace that you need to have five positive interactions with your child for each negative one to maintain a good relationship. I don't know whether that is fact or myth; a quick Google search suggests that the origin of the idea was in a study about how married couples argue, the idea being that in a good marriage, positive things continue to happen even amidst disagreement. It's wise to be wary about applying a number discovered in a very specific context more generally, but there's a compelling idea here: positive interactions build us up, and negative ones break us down, regardless of whether we're talking about a spouse, a child, or, say, the PostgreSQL community. Too many negative interactions and we just feel like giving up.

In the last few years, I've started to struggle more with the PostgreSQL mailing list culture. Somehow, the discussions often feel bruising. For a while, I didn't quite understand why I felt that way. After all, I do sincerely believe that (1) most people on the mailing lists are well-intentioned, (2) the community does a lot of good technical and non-technical work, (3) criticisms are almost always focused on the work itself rather than on the person who did it, and (4) even someone who takes the time to criticize your work is often doing you a favor, in the sense that they want the project to ultimately be successful and their purpose is to help you fix your mistakes. And then, too, I have the feeling that if anyone should be complaining about the mailing list culture, it surely shouldn't be me. After all, I have more success getting my own patches committed than most other people (and that's privilege). Also, I'm one of the most frequent posters to pgsql-hackers, so if the culture isn't great, surely that means I'm a big part of the problem, right?

Yeah, that's absolutely right. I am, absolutely, part of the problem.

But let's back up a minute. What, exactly, is the problem? Everyone will have their own view, but I think that what I wrote in the first paragraph above is a big part of it: when you or I or anyone posts something on pgsql-hackers, the chance of receiving negative feedback is far higher than the chance of receiving positive feedback. Regardless of the reasons why that happens, we're all human beings, and human beings tend to be averse to situations that involve lots of negative feedback even if that feedback is offered in the best possible spirit.

For newer contributors, one big reason for the preponderance of negative feedback is that you simply don't know enough yet. Writing PostgreSQL that will actually get committed and stay committed is really hard, which is another problem that I want to talk about in another blog post, but for now let's just take that as an unalterable fact of the universe and say that you're going to need to spend 10,000 hours writing PostgreSQL code to get really good at it. When you first post on the mailing list, you've probably not even spent 100 hours on it, so your first patch is probably not going to be a huge success. Maybe, the patch itself will turn out not to be a very good idea; or maybe you will have implemented it badly; or both. Even if you did all that well, there's a chance that you may not get as much respect as you deserve just because people don't know you or your work, especially if English doesn't happen to be your first language, or if your ability to communicate your ideas well in writing is anything less than superb. I think that PostgreSQL hackers typically try to be a bit extra polite to newcomers, with the intention of not scaring people off, but it doesn't change the fact that most of the feedback you get is going to be negative, e.g. "fix these 30 things and then maybe I'll look at your patch again."

But long-time contributors get mostly negative feedback, too. Everybody is busy, so if an experienced contributor is doing something unobjectionable, the other experienced contributors often just ignore it. Mostly, you hear from other people on the occasions when they don't like what you're doing. They may not like it because they don't agree with your goals, or because they think your implementation choices were poor, or for some other reason, but the point is that when they think it's fine, you just get radio silence. If I look at the ratio of positive feedback to negative feedback that my patches get now as compared to when I started, I don't think the ratio has improved. If anything, I think it's gotten worse -- and I'm WAY better at this now than I was back in 2008. Even though I know that in many ways it's a sign of respect, it wears me out, and I think it wears out other contributors, too.

So here's my proposal: we need to give more positive feedback. Maybe there's something to be said for reducing the amount of negative feedback, but a lot of that feedback is necessary to fix real problems. For instance, Jakub Wartak has found a raft of problems with my incremental backup patches, and I couldn't be more grateful. But if you see a thread on the mailing list about something that seems to be a good idea, how about replying to the thread and saying that you agree that it's a good idea? You're not obliged to review the patch, or continue participating in the thread -- you can just show up, say you like the idea, and leave. If you see other people saying that it's a bad idea, it's even more valuable for you to mention that you have a different opinion. A lot of ideas that would probably attract wide support get killed off because nobody wants to argue with the one person who doesn't like them. I've had ideas like this, that got killed off, and I've also been the one person who didn't like something that was actually great. I've been in both of those positions many, many times.

I've been making an effort lately to be more positive in my communications. It doesn't come terribly naturally to me and I'm not sure how noticeable it is to anyone else, but I am trying. Even when I have to send an email that feels more critical, I'm starting to try to think even more carefully about how I phrase it: is there something positive I can say, along with the negative stuff? It sounds a little silly, maybe, but I think it really makes a difference. At least, I hope it does. And when I screw up and write something needlessly harsh, I'm making an effort to promptly apologize, which I hope makes a difference, too.

These last few paragraphs might give you the idea that pgsql-hackers, or PostgreSQL mailing lists in general, are terrible places to be, and I'd like to reiterate that I don't think that at all. There is a tremendous amount of really good work and the PostgreSQL community includes not only a ton of people who are really, really smart, but also a ton of people who are really wonderful human beings -- and just today I got several supportive messages via email or IM, so there really are a lot of good things happening on the mailing lists and in the community more broadly. But, I think we can do more to make it better, and to make it better for more people.

Thanks for reading.


  1. Very we said, thank you for this.

  2. As someone who has a long time relationship with the community and doesn't delve into the server code very often, I have experienced many of these things. I think this is a great first step for change. Thanks for writing it.

  3. This is an important topic. Very well articulated and inspiring. Thank you for saying it out loud.

  4. As someone who is willing to start contributing in the OSS it is very inspiring to read this!

  5. Wholeheartedly agree with your posting, thanks for writing this down, and also thanks for your effort to be part of the change!
    This has been a big discussion last week in Prague, how can the project encourage more people to stay as contributurs, and not shoo away new people with rude communication and very long processes.

  6. All of this is true, not only for PostgreSQL, but for any work-related interaction, at least.
    Encouraging positive feedback is really important to have a general balance and good atmosphere in a community, and has positive impact on efficiency.
    Actually, giving good feedback should be something we learn to do correctly. And good feedback does not necessarily mean positive feedback, but constructive feedback which makes every part involved progress.
    Not only feedback content matters, but also the form is crucial.
    At Oslandia, "Do you get enough feedback on your work ? and "How do you give feedback to others ?" are questions asked systematically and frequently to collaborators.
    We also have a dedicated documentation page describing how to give efficient feedback for a good company culture and global progression of everyone.
    Public praising, private discussions on possible improvements to a task, vocabulary and turn of phrases to use, tone, empathy, consideration of collaborators communication profiles, little attentions, small celebration ceremonies of successes are among the things which can be integrated into a communication culture for everyone to feel better at the end of a day.

    Therefore, thank you for raising the topic !

  7. Robert, you know that I value you very much, and I also fully support this statement of yours. Thank you very much from my side!

    1. By the way: In his keynote speech in Prague, Simon Riggs emphasized the importance of getting more people to program for PostgreSQL. I think you're seeing the same problem, but possibly from different angles.

  8. This is very well said, but unfortunately won't reach the right people. Even if 90% of the community is nice and welcoming, but the remaining 10% is not, but this 10% is the cluster of people driving newcomers away, they should be targeted specifically through interventions rather than posting here, where it is more likely for the 90% to be seen. Ultimately I think it will be very hard for anything to change, even though I appreciate the effort of speaking up.

    1. From your perspective sensing a 10% group that you don't expect to change: what are the reasons you think that they have for finding it difficult to communicate more positively?

  9. It's true that there are always those keen to criticize, finding faults even in the best of efforts. As you insightfully pointed out, being part of the problem by contributing to negative feedback is an introspective realization. It's important for recipients of such feedback to adjust their perception, understanding that their work might not align with PostgreSQL's current needs. Most crucially, as you suggest, positive reinforcement is vital. It has the power to significantly alter someone's journey, often in profound ways. The balance between constructive criticism and encouragement is delicate yet essential for fostering a healthy, productive community.

  10. Thank you for this post, Robert. In addition to providing positive feedback, we can also do better about how other feedback is phrased—it is possible to offer constructive criticism on an idea, and it is not necessary to be dismissive or patronizing. Too often, I see comments that could be phrased in such a way as to be equally useful in practical terms and without the harshness. There's no need to be rude or patronizing, and too many people post comments that are either directly or indirectly "you should know this, why are you bothering us with this?" That's discouraging for anyone to receive, and gives the community a reputation as judgmental and unwelcoming.

    I did notice your more positive perspective at PgEU, and was delighted after our conversation. Many times before, there's been a moment of bracing myself before engaging, because I was never certain if I was going to be dealing with Robert In A Good Place or Robert In A Difficult Place. I appreciate your efforts, and I hope that others find them worthy of emulation.