Helping people online is difficult. We expect technical questions and discussions, but everyone involved are just people, so it doesn’t always go smoothly. There’s no way to guarantee a good outcome, but there are things we as helpers can do to improve the interactions.
There are plenty of pieces out there explaining how to ask good questions. This piece is different: it’s aimed at the helpers, not the askers. We helpers are the experts and the regulars. We are the constants in the help forums. How we behave sets the tone for everyone. We can’t expect to “fix” the askers.
Mostly, these ideas came from my experience in the #python IRC channel on Freenode, but they apply anywhere people are trying to communicate. The more emotionally weak the communication channel, the harder it will be to keep things going smoothly, so IRC is a tough medium and a good laboratory.
Let me say at the outset though: I have done and still do, all of the wrong things. Helping people online is not easy. Perhaps askers don’t know how to ask, or how to interpret our answers. Perhaps English is not their first language. We don’t know what they already know. And we are all human, so we are bringing our complex emotional state with us.
So I know this is hard. I’m hoping that talking about how things can go wrong will help us make them go right.
Answer the question first
When someone shows their code, it’s easy to lose sight of the question, and jump to other things in the code. Answer their actual question first. Once you’ve helped someone, and built a rapport with them, it will be easier to talk to them about other problems you see in their work.
No third rails
There are some topics which are so disliked that any mention of them brings immediate scorn. This is especially troublesome when we should instead be answering the question first. It should be OK for someone to ask for help with a program using sockets, and not have to defend using sockets, especially if the specific question has nothing to do with sockets.
Other third-rail Python topics include: threads, pickle, multiprocessing, globals, singletons. I know you don’t like them. I know you have been burned by them. I know you have better ideas of how to do what they do. Don’t let that derail the conversation. The goal is to help people. Strong reactions can make the asker feel attacked.
No dog-piling
The #python channel is large, and there are many energetic helpers. Everyone wants to help, that’s why we are there. But there can be too many voices. If people are already helping, you don’t have to chime in. If you have something truly different to say, say it. But if you don’t have a new thing to say, adding another voice could make things more difficult. Beginners can be overwhelmed, or feel like we are ganging up on them.
Conversely, if you have already been helping, and it’s getting frustrating, let someone else take over. You can step away. Maybe someone else will have better luck. I know it’s difficult, because we get invested. “I’m explaining it, and it’s not getting through” is a very frustrating feeling. Hammering away at it probably won’t fix it.
Meet their level
If you are a helper, you are an expert. You have learned tools and techniques over the years that have served you well. Askers may not be ready to hear about those things. The things that work for you might be over their head. Try to determine what they know, and give them a reasonable next step, not the ultimate solution.
A suboptimal solution they understand is better than a gold standard they can’t make use of.
As an expert, it’s tempting to present the full picture of a topic. You’ve mastered intricate details, and you want to share them, and to be accurate. But those extra details added to an ongoing conversation with a beginner can be distracting or confusing. It’s most important to give the beginner what they can use next, not what they will need eventually.
Say yes
As much as possible, answer with Yes answers instead of No answers.
“Is len([1,2,3]) how I get the length of an array?”
Bad: “That’s not an array.” (A “no” answer)
Good: “Yes, though we call them lists, not arrays.” (A “yes” answer)
It’s easy to pounce on incorrect things. It’s also unfriendly and gets in the way of actually providing help.
You are right: that isn’t an array. But you are here to help people, not to ding them for inaccuracies. Find the essence of their question, and answer it with a positive response.
Avoid absolutes
You are an expert, you know things. But strong absolute stances can come off as inflexible, off-putting or even confrontational. Add some doubt words. Even just “in my experience” helps to soften your message and put you on a more equal footing with others. This makes the ideas easier to consider and accept.
Step back
Sometimes interactions go poorly. Misunderstandings accumulate. Small friction makes understanding difficult, which leads to larger friction. When this happens, try to step back.
There are two ways to step back: one is to withdraw from the discussion. Someone else will probably take over. Another is to step back with them. You can talk about the difficulty.
Take some blame
It’s easy when things are going badly to think the other person isn’t trying, can’t be bothered, or won’t be able to understand. Frankly, maybe some of that is true. But try taking some of the blame. Instead of, “are you listening to me,” try saying, “maybe I didn’t explain it well,” or, “I don’t feel like I’m getting through.”
As much as possible, try to avoid “you’re doing it wrong” responses, and try to find ways to share in the effort and troubleshooting of the discussion.
Talking about yourself is always better than talking about them. Talking about the asker sounds accusatory and confrontational.
Use more words
IRC and other online mediums encourage quick short responses, which are exactly the kinds of responses that will be easy to misinterpret. Try to use more words, especially encouraging optimistic words.
Understand your motivations
We want to help, but let’s be honest: there are other forces driving us. There’s a dark appeal in pointing out where someone is wrong. We can retaliate against poor language stewardship by ranting to others. It feels good to win the competition for highest mastery of language implementation arcana.
It’s natural to find outlets for this kind of negative energy, but we have to keep it in check. Focus on helping people.
Humility
A lot of the above advice boils down to being humble. It feels good to help people, to know the answers. Being an expert and knowing things other people don’t know is very satisfying. But you can help people better if you approach the job with humility. Maybe you don’t know everything. Maybe some of it was your fault. You can be gracious in overlooking small mistakes.
Make connections
Another theme running through this advice is: making a connection with a person is more important than the technical details of the conversation. Points of correctness are useless without points of connection. Establish a rapport with people, and then deliver your technical message.
Finally: It’s hard
Again, I know this is all difficult. I know that some people are just not ready to be helped in IRC. Sometimes things will go badly. We can’t fix everything.
But I want things to go as well as they can, and I want us, the helpers, to handle ourselves as well as we can.
If you are looking for other thoughts about this, the Freenode Catalyst Guidelines are also good tips for how to be useful online.
Thanks for helping.
Comments
I had the same problem when I was asking for help couple of years ago in #python and other channels, I wanted so badly people to answer me only what I asked for. Of course people wanted to help by giving me a background on the topic or explain me things that were associated with my question, before explaining the bits that I really wanted.
It was so painful for me, I just wanted to move one small step forward to make my script work!
And guess what? I did the exact same mistake 2 days ago while helping a friend! I was shocked when I realized it!
Imo it doesn't matter if you tell the asker all of the details, at some point they will come to him/her with one way or another. I think it is more important to keep him/her excited to move on, but I might be wrong, I am not expert anyway. I am still learning on how to learn faster or more efficiantly.
Mr Ned you have a charisma helping others, you always help by thinking of the perspective of the asker. I've witnessed it multiple times in the #python channel either when you helped me or others.
And you influenced me so much that I want to help in the same way you do.
I never had the chance to express my gratitude so thank you for all the help you gave me and the way you treat askers especially newbies!
PS: I am sorry for the long comment and the personal tone in it, it is my 1st one, won't happen again, promised :)
Thanks for writing this. It's I think a skillset that goes beyond helping people online. It's a very concise explanation on how to be helpful in general. Reading through it it gives me affirmation how not to be "eek the cat" or "mister know it all", but an actual asset to someone trying to solve problems and learn.
Good read.
Jaïn
"no" answers can be useful for someone who is so completely wrong that they are jumping out of the nest and flapping their wings before they even grew feathers. For example:
"Is rm -r / how I should clean out temp files"
well the answer better be
"no no no no no!!!! who in the world told you that!!!!
A "yes" answer should be nowhere in sight on that one. Unless of course you just want to be evil and have them gun their system.
As for "overexplaining" that ALSO has it's uses (although NOT in an IRC forum) But in an EMAIL forum you SHOULD do it AFTER you supply the "get them over the hump" answer.
That gives them something valuable that they can go back and refer to, weeks or months later. They are going to need to learn that stuff so give it to them. Don't automatically assume people are morons. Just don't be a jerk and make them dig through it all to get the answer.
Good points, thanks.
Add a comment: