
How to avoid humiliating newcomers: A guide for advanced developers - linuxasheviller
https://opensource.com/article/18/3/avoid-humiliating-newcomers
======
strkek

        [09:00] <Someone> Hi.
        [09:16] <Me> Hey, what's up.
        [09:23] <Someone> I have a problem, do you have some time?
        [09:24] <Me> Sure, what's it about?
        [09:27] <Someone> Have you worked with X thing before? I have to do Y thing but don't know how.
        [09:28] <Me> So, I just googled "how to do Y thing in X thing" and got this blog entry explaining in detail, and also this other Stack Overflow answer with a very similar problem.
        [09:29] <Someone> Sec, gonna try that.
        [09:35] <Someone> I got this error "someVariable is not defined". What's it mean?
    

_sigh_

    
    
        [09:36] <Me> You're trying to use a variable that doesn't exist. Can you paste the code you're using?
        [09:37] <Someone> (Code)
        [09:37] <Me> Replace "someVariable" for "someOtherVariable" and it should work.
        [09:38] <Someone> It works, thanks!
    

I really, really try to be nice, but there's a limit on how many situations
like this I can handle before losing my sanity.

~~~
colanderman
My solution to this problem is (1) avoid instant messaging at all costs, and
(2) delay responding to any mail that is either (a) a contextless plea for
handholding ("I have a problem, do you have some time?"), or (b) best solved
by the asker taking some time to educate themselves.

It's a win-win, because either the asker learns they can solve their problems
more quickly by Googling it themselves, or I can limit my responses to a rate
that is below my daily (or weekly) annoyance threshold.

~~~
jiryu
"Avoid instant messaging at all costs" is definitely good advice. I usually
forget to take three breaths before answering there, but I usually remember
before I answer an email. Plus, I have GMail's "undo send" feature enabled so
I have a few more secrets to repent before my message cannot be untyped.

------
cosban
I'm willing to admit that maybe I'm not the best at social interaction. I
think this article is on point though.

I am unable to count the number of times I've gone to some random project
community for assistance dealing with whatever problem I was having at the
time to be met with someone telling me that what I'm doing is insane and
shouldn't be done in the first place.

It's taught me that I should just use these outlets as a last resort. I'd
rather struggle with whatever I'm attempting to solve and try to refine my
searches beyond the amount of time for it to be useful than deal with very
opinionated and unhelpful people in a chatroom/mailing list/forum.

The unfortunate thing is that this is generally something that happens when I
deal with open source and when asked about why the interaction is the way it
is, there is always a retort by someone saying the help is free and that I
should be grateful. The feeling is certainly something that I could compare to
what I imagine the receiving end of the santa scenario was.

~~~
msla
> I am unable to count the number of times I've gone to some random project
> community for assistance dealing with whatever problem I was having at the
> time to be met with someone telling me that what I'm doing is insane and
> shouldn't be done in the first place.

There should be an explicit three-way breakdown for this:

1\. You're having trouble because of a bug, either yours or ours. If it's
yours, the helpful thing is to help you fix it. If it's ours, obviously all
projects should accept bug reports gracefully and work on them in some kind of
reasonable fashion.

2\. You've hit a deliberate design limitation, which isn't a bug as far as
we're concerned, but we're willing to acknowledge it's annoying. This might
turn into a feature request.

3\. This is out-of-scope for our project. You picked the wrong tool. Getting
us to change scope probably isn't going to be done using a bug report. That
should be stated politely and without denigrating you or your problem.

What should _not_ happen is what you describe: Developers fitting problems
into a Procrustean bed and cutting off the bits which don't fit the pre-
designed mold, and then claiming that this cut-down problem is all anyone
would ever need to solve. It's sometimes inevitable that you have to simplify
the solution by simplifying the problem, but never pretend that a solution
thus simplified is complete.

~~~
commandlinefan
Well, on the flip side - I've had similar experiences to cosban's, and it
usually goes like this: I'm neck-deep in a complicated scenario, and I'm stuck
and can't figure out what to do next. I can ask for help, but it will take
pages of explanation just to describe how I got where I am. Recognizing that
everybody's (myself included) attention span only goes so far, I try to
describe just the problem I've run into in as few words as possible without
going through the whole epic story. Then somebody comes along and says "what
you're doing doesn't make any sense, you shouldn't be doing that"...

~~~
watwut
Many questions come from beginners - and they are often trying to do the wrong
thing. The developer who is answering you don't know who you are nor what you
tried before, it makes sense for them to eliminate most common scenarios first
before advising on something complicated.

It is not necessary personal nor lack of good intention, it is that experience
with answering questions teaches you that it is overall most effective to
check whether the problem can be solved differently as it often can be done.

------
everdev
It would be helpful if there were levels of open source:

Community - Fully open to discussion and contribution from everyone, decisions
are made collectively and contribution / support responsibilities are shared
by all.

Committee - Open to input, but decisions are made by the project leadership.
Leadership is voted on by the community and provides support and contribution
guidelines.

Ownership - There is a project owner or co-owners that make all decisions and
offer support if available and set guidelines on contributions.

Visible - Open source in the sense of being transparent or usable by others,
but little to no support offered and contributions may not be accepted.

I think many people think they're walking into a Community project when it's
really a Leadership, Ownership or Visible project and feelings get hurt. Much
better to set expectations early on in the README.

~~~
msla
> Community - Fully open to discussion and contribution from everyone,
> decisions are made collectively and contribution / support responsibilities
> are shared by all.

> Committee - Open to input, but decisions are made by the project leadership.
> Leadership is voted on by the community and provides support and
> contribution guidelines.

> Ownership - There is a project owner or co-owners that make all decisions
> and offer support if available and set guidelines on contributions.

Committee is the Debian Project, which has explicit governance and formal
process, correct?

Ownership would be the BDFL model, like Linux or Python or most other projects
I could name. Linux breaks down into subsystems, each of which are owned by a
specific person, so it's a recursive form of the Ownership model.

I can't think of any project using your Community model off the top of my
head.

> Visible - Open source in the sense of being transparent or usable by others,
> but little to no support offered and contributions may not be accepted.

I think this should have a different name, to make sure people don't confuse
it with the non-OSS Viewable Source licenses some companies use: You can see
the code, but you can't fork it and distribute modified versions.

------
tboyd47
It's absolutely true that you should be nice to people, but let me also issue
a similar warning to newcomers not to ask questions in a way that inspires
rage.

Programming is, in a very abstract sense, a dirty job. We get paid well, have
great benefits, perks, and mobility, but we are the toilet scrubbers of the
software world. We spend whole days hunting semicolons, or trying to reverse
engineer bug reports that no one remembers writing. I've spent a _whole week_
trying to move a button over about an inch in all supported browsers just to
make the product "pixel perfect". I've spent a _whole month_ trying to figure
out how to use a SaaS feature as advertised that had sparse documentation and
no tech support.

Some newcomers really don't understand/believe that, and think it's acceptable
to run for help every time something frustrates them... do everyone a favor
and don't be that person, please.

~~~
godzillabrennus
So you advocate for less communication?

Why not create a culture that embraces having new comers ask questions in a
non disruptive way?

Something like a slack channel where experienced dev's can chime in if they
have time.

I'd freak out on anyone on my team if they were telling new hires not to ask
questions. That's just stupid.

~~~
falcolas
My experience: If you come with a question _and the steps you 've already
taken, the research you've already done_, you will rarely if ever get a poor
response from developers (or at least those who are decent human beings).

So, don't start with Slack. Start with the docs, then google, and then end
with Slack (even as just a confirmation of your researched solution).

~~~
tboyd47
Agreed. I'm not saying don't ask questions. I said "not in a way that inspires
rage." Just make sure you do your due diligence first. That's important.

------
beager
There’s great wisdom here from an obviously enlightened crowd, but I will say,
as a php dev for 9 years, permissive attitudes toward bad advice about
programming did hold me back as an engineer.

I know php is the butt of many jokes about bad language design and bad
architecture, but I wasn’t helped by the glut of terrible, outdated advice
about php programming that just wouldn’t go away. I could have benefited from
a forceful, constructive voice that not only helped me solve my problem, but
taught me to seek a higher sophistication for the code I was writing.

And that’s where I think advanced developers turn into humiliating jerks. I
would wager that most of them aren’t deliberately trying to excoriate junior
devs, they just are frustrated that developers are repeating the same
inefficient path to good practice that they may have trod. Instead of being
short-fused and curt, they should take time to inventory the positive things
that helped them, and pass those tidbits of effective advice along.

It’s very hard to pause and take note of resources or insights that made you
much better as a developer. However, those who can are able to give junior
devs a shortcut to excellence that is a net benefit to everyone around them,
instead of just getting frustrated that the junior devs aren’t achieving
enlightenment as fast as they themselves would have liked to.

------
mkoryak
I recently had a choice between being an ass or being nice to a guy asking a
really basic question about my open source project[1]. At first I was going to
tell him to read the docs and that I didnt have time but I decided to help the
guy out.

He ended up running into an bug that had been open for almost a year but I
never got around to fixing because of an existing workaround. Anyway, I was
slightly embarrassed and ended up tracking down the bug and closing it out.

It pays to be nice.

[1]:
[https://github.com/mkoryak/floatThead/issues/408](https://github.com/mkoryak/floatThead/issues/408)

------
gnode
I wonder if the underlying reason for this emotional response is guilt which
goes hand-in-hand with altruism. In the case of the Santa and the homeless
man, the Santa didn't want to give the man $5, but did so presumably out of
guilt, then felt angry. In the case of the author getting angry about low-
value questions, I wonder if that's because of a guilty feeling that they must
answer. Personally, I can't really empathise with the author's anger, yet I'm
arguably less generous than them; I don't feel much drive to spend my free
time on Stack Overflow et al. answering stangers' questions.

~~~
blub
The author is completely missing the point of his own feelings: his
unconscious mind is telling him to stop wasting time answering questions and
do something more useful.

But of course, the conscious mind knows better, one must behave nicely, be
zen, suppress their feelings, etc. And 10 years later you're visiting a
psychologist to deal with your burn out.

~~~
s_m_t
I don't even care if this is arm chair psychology, from a literary standpoint
this really ties the piece together. The Santa example doesn't make much sense
otherwise.

------
makecheck
With many things in life, it’s good to assume other people are _not_ in the
same situation as you. Just because you have all day to work on something
doesn’t mean that the whole Internet has all day to help you.

What _percentage_ of your free time, for instance, will be spent compared to
the _percentage_ of free time of another person? And, what have you done to
_minimize_ time required: have you tried to _succinctly_ describe your
problem, have you Googled terms in advance, etc.?

~~~
watwut
It takes less time to ignore question then to be sarcastic, intentionally
misleading or jerk about it.

------
cpburns2009
Those Stack Overflow answers are awfully contrived. In my experience answers
like that are quickly down-voted and deleted by the community. That being
said, if you ask how to parse HTML with regular expressions, or post some SQL
with injection vulnerabilities, they'll be closed as duplicates.

~~~
commandlinefan
Yeah, I believe him when he says it happens, but I've never encountered
hostility on SO, and I've asked some really stupid questions (and in each
case, I really ought to have known better and done my homework, so in my case
I would have deserved a bit of condescension).

------
internetman55
It's fine to humiliate newcomers as long as you're fine making enemies. As a
recent university grad, most people entering CS today are not geeks or nerds
or whatever--they're more and more the high IQ people who just want to make
money. These people have higher social skills and self-esteem then traditional
geeks. The truth is that most programming done today is pretty easy and does
not require deep technical skills, so these guys can really advance without
problem anyway. Being an asshole means that you're 2-10 years out from people
with better social skills than you and hate you advancing into management. At
least that's how I read the current trends.

~~~
PeterStuer
"most people entering CS today are not geeks or nerds or whatever--they're
more and more the high IQ people who just want to make money. "

Hey, that's what we said in the 90's as well ;-) Well, tbh, we left out the
'high IQ' part.

~~~
bitwize
Well, it's even more true than ever now.

------
iamcasen
I think what's worse than lazy newcomers wanting someone to hold their hand
through a problem, is newcomers who try and argue for a truly terrible idea,
or worse yet, call into question an idea that is as old as time.

I have had more experiences than I can count where people keep trying to
reinvent the wheel and poo poo an idea that Knuth himself would be proud of.

"I don't have time to explain to you why this idea is good, it should be
common sense. It would take you learning programming principles for years
before you'll get it, so I won't be able to convince you in a 30 minute
presentation."

------
heckless
I've been the organization administrator for a library that participates in
Google Summer of Code for many years now. Of the questions that we typically
see and the requests we typically get, some are high-quality and constructive
---and are people legitimately asking for help.

But the article here kind of glosses over the reality of the hard part: the
low quality questions. The "please help me get started"; the "how do I get
accepted"; the "please review my PR".

It's all well and good to say, hey, take a step back! Be nice! Don't respond
when you're angry! But this is not the reality for an overwhelmed open source
organization---and let's face it, most popular projects are completely
overwhelmed. The reality is that to wake up every day to countless new issues
and pull requests and other demands on your time is absolutely soul-sucking,
and after years and years of this it grinds you down and leaves you with
resentment and disappointment, and that's just absolutely not great for
anyone.

I don't necessarily have any rebuttal to what the author is saying, and I
think the intentions are great, but I think it's also important to point out
what reality is for people who are trying to build community and help:
everyone slowly burns out doing it. It's like social work.

(food for thought: Github has made this problems orders of magnitude worse for
organizations, because lowering the barrier to entry means now anyone who
doesn't know where to start can open an issue and clog up a bug tracker in
just a few seconds, and anyone who thinks they can write code can open a low-
quality PR in just a few minutes, and this is more to do for the
maintainers...)

------
mmsimanga
Slightly off topic. In big non IT corps I have worked with people whose title
was developer but they couldn't do a thing on their own. I am not talking
newcomer here, but people mid career. They basically mastered, I am helpless
look and would rotate whom they ask for help. My turn would come every third
week. Great people but just not interested in programming.

~~~
NumberCruncher
If I am a great guy but not interested in cooking maybe I should not work in a
kitchen?

------
peterwwillis
Things I've found to help situations like this:

1\. When a person is asking you for help, try to imagine a situation where you
have needed help and asked someone for it. Imagine your responses to them as
someone's response to you. Empathy and compassion are really great tools to
use when communicating.

2\. Do not sign yourself up for something you don't want to do. If you don't
have time to help or don't want to, simply say so. There is no reason to make
yourself upset, and then lash out at a stranger, if you don't need to.

3\. Be a teacher. Teachers don't give the answers, they help give an
understanding of how to solve the problem.

4\. Don't continue a conversation if you feel you are angry, upset or annoyed.
Try to redirect your energy. Talk to a boss, co-worker, or friend about the
situation and ask for their advice. Go for a walk. Listen to music. Write out
the experience and your feelings to a private journal.

------
sg0
This is endemic with SO. Particularly, I am not happy with the Python
community of SO either. Couple of months back, my wife who is a student and
very new to Python (and had to quickly prototype an intermediate part of a
Genome Assembler as a PoC, before she could recreate it in C++ and MPI) asked
some question in SO, and met with sarcastic comments by an experienced user.
She didn't have time to read up a book on Python, since she had a time crunch
to finish the work within a couple of days. So the day she posted the
question, she told me that she fears snide comments, and that's exactly what
happened. If you are in a position to criticize someone's sarcastic comments,
then please take the time in doing so.

------
expertentipp
Not only on the web but it’s an issue in workplaces as well. FPS style
humiliation, and it’s not about knowing the basics but when learning the
project or questioning some quirks or weird architectural decisions (so easy
to trigger someone right here). Listen, the world is small, professional
environment is not an online game, and your experience in a particular project
can be surprisingly worthless during the next job search.

------
blub
What a pretentious piece of writing, I can't stand this kind of goody two-
shoes attitude.

It's ok to be human and get upset every now and then. Heck, you might even
take it out on someone. Apologise and move on, you don't have to become a
buddhist and take the three breath vow - it's useless and unhealthy.

~~~
jamesgeck0
What is unhealthy about deciding to pause before responding harshly to
someone?

~~~
blub
That's not what's being discussed... the author gets themselves into
situations that can easily turn irritating, like hanging out on StackOverflow
or answering noob questions on chat. The solution is for them to take time out
from that, not become a zen monk.

In general it's a valuable skill to have self control, but it doesn't work
perfectly, so it's best to avoid having to exercise it all the time and
pressuring oneself to always react "correctly" through self-guilt.

------
birchb
I absolutely adore the ambiguity in this HN title. Perfectly crafted. Well
done.

------
sporkit150
How about we start with condescending blog titles?

