How to avoid humiliating newcomers: A guide for advanced developers

To sustain an open source community's growth, we need to welcome new developers. Unfortunately, we are not always a welcoming bunch.
391 readers like this
391 readers like this
Woman programming

WOCinTech Chat. Modified by Opensource.com. CC BY-SA 4.0

Every year in New York City, a few thousand young men come to town, dress up like Santa Claus, and do a pub crawl. One year during this SantaCon event, I was walking on the sidewalk and minding my own business, when I saw an extraordinary scene. There was a man dressed up in a red hat and red jacket, and he was talking to a homeless man who was sitting in a wheelchair. The homeless man asked Santa Claus, "Can you spare some change?" Santa dug into his pocket and brought out a $5 bill. He hesitated, then gave it to the homeless man. The homeless man put the bill in his pocket.

In an instant, something went wrong. Santa yelled at the homeless man, "I gave you $5. I wanted to give you one dollar, but five is the smallest I had, so you oughtta be grateful. This is your lucky day, man. You should at least say thank you!"

This was a terrible scene to witness. First, the power difference was terrible: Santa was an able-bodied white man with money and a home, and the other man was black, homeless, and using a wheelchair. It was also terrible because Santa Claus was dressed like the very symbol of generosity! And he was behaving like Santa until, in an instant, something went wrong and he became cruel.

This is not merely a story about Drunk Santa, however; this is a story about technology communities. We, too, try to be generous when we answer new programmers' questions, and every day our generosity turns to rage. Why?

My cruelty

I'm reminded of my own bad behavior in the past. I was hanging out on my company's Slack when a new colleague asked a question.

New Colleague: Hey, does anyone know how to do such-and-such with MongoDB?

Jesse: That's going to be implemented in the next release.

New Colleague: What's the ticket number for that feature?

Jesse: I memorize all ticket numbers. It's #12345.

New Colleague: Are you sure? I can't find ticket 12345.

He had missed my sarcasm, and his mistake embarrassed him in front of his peers. I laughed to myself, and then I felt terrible. As one of the most senior programmers at MongoDB, I should not have been setting this example. And yet, such behavior is commonplace among programmers everywhere: We get sarcastic with newcomers, and we humiliate them.

Why does it matter?

Perhaps you are not here to make friends; you are here to write code. If the code works, does it matter if we are nice to each other or not?

A few months ago on the Stack Overflow blog, David Robinson showed that Python has been growing dramatically, and it is now the top language that people view questions about on Stack Overflow. Even in the most pessimistic forecast, it will far outgrow the other languages this year.

Projections for programming language popularity

If you are a Python expert, then the line surging up and to the right is good news for you. It does not represent competition, but confirmation. As more new programmers learn Python, our expertise becomes ever more valuable, and we will see that reflected in our salaries, our job opportunities, and our job security.

But there is a danger. There are soon to be more new Python programmers than ever before. To sustain this growth, we must welcome them, and we are not always a welcoming bunch.

The trouble with Stack Overflow

I searched Stack Overflow for rude answers to beginners' questions, and they were not hard to find.

An abusive answer on StackOverflow

The message is plain: If you are asking a question this stupid, you are doomed. Get out.

I immediately found another example of bad behavior:

Another abusive answer on Stack Overflow

Who has never been confused by Unicode in Python? Yet the message is clear: You do not belong here. Get out.

Do you remember how it felt when you needed help and someone insulted you? It feels terrible. And it decimates the community. Some of our best experts leave every day because they see us treating each other this way. Maybe they still program Python, but they are no longer participating in conversations online. This cruelty drives away newcomers, too, particularly members of groups underrepresented in tech who might not be confident they belong. People who could have become the great Python programmers of the next generation, but if they ask a question and somebody is cruel to them, they leave.

This is not in our interest. It hurts our community, and it makes our skills less valuable because we drive people out. So, why do we act against our own interests?

Why generosity turns to rage

There are a few scenarios that really push my buttons. One is when I act generously but don't get the acknowledgment I expect. (I am not the only person with this resentment: This is probably why Drunk Santa snapped when he gave a $5 bill to a homeless man and did not receive any thanks.)

Another is when answering requires more effort than I expect. An example is when my colleague asked a question on Slack and followed-up with, "What's the ticket number?" I had judged how long it would take to help him, and when he asked for more help, I lost my temper.

These scenarios boil down to one problem: I have expectations for how things are going to go, and when those expectations are violated, I get angry.

I've been studying Buddhism for years, so my understanding of this topic is based in Buddhism. I like to think that the Buddha discussed the problem of expectations in his first tech talk when, in his mid-30s, he experienced a breakthrough after years of meditation and convened a small conference to discuss his findings. He had not rented a venue, so he sat under a tree. The attendees were a handful of meditators the Buddha had met during his wanderings in northern India. The Buddha explained that he had discovered four truths:

  • First, that to be alive is to be dissatisfied—to want things to be better than they are now.
  • Second, this dissatisfaction is caused by wants; specifically, by our expectation that if we acquire what we want and eliminate what we do not want, it will make us happy for a long time. This expectation is unrealistic: If I get a promotion or if I delete 10 emails, it is temporarily satisfying, but it does not make me happy over the long-term. We are dissatisfied because every material thing quickly disappoints us.
  • The third truth is that we can be liberated from this dissatisfaction by accepting our lives as they are.
  • The fourth truth is that the way to transform ourselves is to understand our minds and to live a generous and ethical life.

I still get angry at people on the internet. It happened to me recently, when someone posted a comment on a video I published about Python co-routines. It had taken me months of research and preparation to create this video, and then a newcomer commented, "I want to master python what should I do."

Comment on YouTube

This infuriated me. My first impulse was to be sarcastic, "For starters, maybe you could spell Python with a capital P and end a question with a question mark." Fortunately, I recognized my anger before I acted on it, and closed the tab instead. Sometimes liberation is just a Command+W away.

What to do about it

If you joined a community with the intent to be helpful but on occasion find yourself flying into a rage, I have a method to prevent this. For me, it is the step when I ask myself, "Am I angry?" Knowing is most of the battle. Online, however, we can lose track of our emotions. It is well-established that one reason we are cruel on the internet is because, without seeing or hearing the other person, our natural empathy is not activated. But the other problem with the internet is that, when we use computers, we lose awareness of our bodies. I can be angry and type a sarcastic message without even knowing I am angry. I do not feel my heart pound and my neck grow tense. So, the most important step is to ask myself, "How do I feel?"

If I am too angry to answer, I can usually walk away. As Thumper learned in Bambi, "If you can't say something nice, don't say nothing at all."

The reward

Helping a newcomer is its own reward, whether you receive thanks or not. But it does not hurt to treat yourself to a glass of whiskey or a chocolate, or just a sigh of satisfaction after your good deed.

But besides our personal rewards, the payoff for the Python community is immense. We keep the line surging up and to the right. Python continues growing, and that makes our own skills more valuable. We welcome new members, people who might not be sure they belong with us, by reassuring them that there is no such thing as a stupid question. We use Python to create an inclusive and diverse community around writing code. And besides, it simply feels good to be part of a community where people treat each other with respect. It is the kind of community that I want to be a member of.

The three-breath vow

There is one idea I hope you remember from this article: To control our behavior online, we must occasionally pause and notice our feelings. I invite you, if you so choose, to repeat the following vow out loud:

I vow

to take three breaths

before I answer a question online.


This article is based on a talk, Why Generosity Turns To Rage, and What To Do About It, that Jesse gave at PyTennessee in February. For more insight for Python developers, attend PyCon 2018, May 9-17 in Cleveland, Ohio.

I’m a staff engineer at MongoDB in New York City. I wrote Motor, the async MongoDB Python driver, and I’m the lead developer of the MongoDB C Driver. I contribute to PyMongo, asyncio, Python and Tornado. I study at the International Center for Photography and practice at the Village Zendo.

14 Comments

Very pleasant reading. And an extremly important problem. Thank you!

One of the tasks I have taken upon myself in years past on the Scribus mail list is to intervene when someone responds to a genuine though perhaps naive question with gruffness or anger. There two sides to this, one is to soften the language to the questioner, and try to give some actual useful help, and the other is to communicate to the gruff answerer that the tone of the response was unnecessary and inappropriate for the list.

Your take is coming from the wrong direction.

The "benefit" to the community you mention comes from greed and motion.

Nothing good comes out of those intentions.

IMO, you get the most out of yourself when you help out of pure conviction; because you want to help. That is your reward right there.

Santa snaps on the other guy because he expects a reward. He should help because he knows he should and wants to.

This is one of the most common mistakes. Love because you get loved back. Thank you, Hollywood.

If you're to do anything, do it out of conviction. Otherwise, you always "charge" for what you're doing. Love, help, community, you name it. It's all the same.

Time to invest in what truly counts.

Thanks. I believe you and I are already in agreement about how to benefit the community. I wrote that problems occur because "I have expectations for how things are going to go, and when those expectations are violated, I get angry." But if I remember my true intention, "Helping a newcomer is its own reward, whether you receive thanks or not." So my take appears to be coming from the same direction as yours. The difference is I acknowledge I'm not yet perfect. =)

In reply to by Renich

Thanks for your honesty. Some stackoverflow tags are incredibly caustic. On one tag which will rename unnamed I've had every question downvoted or closed. It does not help when the public profile of one of the top maintainers reads all of the interesting questions on this tag have already been asked so I spend my time downvoting and closing questions. I kid you not.

I no longer post under that tag.

I think the Mantra that there are no stupid questions is honourable but only partially right. Some questions are stupid because they could have been answered by 2 minutes of research.
The problem is that beginners will often not now where and how to look. So even if you receive a stupid question it might not because the person asking is stupid. So you shouldn't get angry but you shouldn't just answer the question right away because if you do the beginner never learns how to research their own answer, which is one of the most important skills for a developer. Rather you should tell them where to look before asking a question so that they can answer future questions they might have themselves.

It's hard.

It sounds like a conflict of world-views. One assumes "hey you're here to help, we work together, or have similar interests". When it's met with "sure #12345" the person could be forgiven for getting the same way back if you ask for help.

It wouldn't be any more right for them to get like that with you though because we are all human and maybe you're busy.

None of us is infallible and none of us never gets annoyed, but I think it's awesome you thought about it after and want to do the right thing more often.

I think digging in until something is solved is an awesome thing if you can build a community or culture to support it.

Thanks for the mantra. Whatever the type of answer you decide to give, the mantra must precede it. Besides, it will be good for your own health!

Being in an account, since more than a year old, a few questions are answered. And, among other things, the comments received are in the style of: "You, can't answer yet". Although there are people who some of the things is useful for them and vote positively. But other people vote in a negative way without reason.

And when asked to stop giving negative votes without meaning, users who have more reputation within the site and which should will show a example of good behave, they do not. Instead, they look for the answers and vote them as negative. Which, makes the reputation points obtained (to be a user "acceptable") go down until the profile is automatically blocked for "problems".

And those things are not seen by the moderators? If the same people who do that, are the ones who have more reputation and generate that sick behavior. Using as an excuse that: "They are following the rules", without reasoning what they are told. So, it's not following the rules. They are doing it on purpose.

The technology industry needs to improve to encourage people to ask for help and teach that nobody knows everything.

"Perfect", is the enemy of the useful.

I too have been "abused" by those smarter than I when I joined not a programming mailing list but a Linux mailing list...(you think YOU guys are harsh?...go ask a question on one of those mailing lists about workin with sudo......synaptic...or apt-get!...they will EAT YOU ALIVE!) but I guess because its not a face-to-face experience...I was able to grow a thick-skin...and after about a YEAR and a HALF of that kind of behavior?...the moderators FINALLY removed the ONE person who seemed to literally hang around and just WAIT to see me post a question online and then "pounce" with insults....snide remarks....ridicule etc. And what's funny is?....I had gone on to other mailing lists, and although the NAME might have changed....their "writing style" was instantly recognizable.....they got booted from those other mailing lists too! And I'm using this to show that people are people, some people are bitter, are high-minded....some people have a superiority complex....others a power / control complex. I find these kind of people HILARIOUS!...I was a total geek when growing up throughout H.S...Shelley....Sir Arthur Conan Doyle....and almost all of the Greek philosophers were my companions during lunch and after school...so I look at EVERYTHING through the eyes of a "Vulcan" for lack of a better definition. Very logic-oriented, and when people revert to their "Klingon" ways?..I just sit back and am slightly amused by their behavior, as there's no positive from it. There's not valuable output, nothing but a void. (which Nature abhors!) which relegates people like that to the same "level" as:
a mushroom
growing along the side of a stream
that's forty miles away from the town
that's connected to a river
that skirts the mountain
that is located across the lake
that’s on the OTHER SIDE OF THE PLANET!

'Nuff Said. LoL!

Great article!!

Part of the trade is to not ask questions that have been answered before. and provide reproducable bugs so the developers can spend very little time on reproducing it. If you post a very open question you are sure to be down-voted or receive negative feedback.

Maintained a very profitable part of code for many years. but learnt a lot when others started to hack on it. I believed my documentation was good, but if you have a completely different skill-set and do not know about the ecosystem implicitly used it is very hard.

did you flag the SO answers for the moderators? on gis.stackexchange.com that sort of answer would get you banned for a week for a first offence.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.

Get the highlights in your inbox every week.