How to Ask Questions the Smart Way (2014)
catb.org
catb.org
“If you are a programmer, try to find an answer by reading the source code”
This is basically a superpower at any large tech co if only because few people do it, even though we’re literally all capable of it. When I inherit or start interfacing with a new service, the first thing I do is checkout the code and peruse through it. Even just 30-45 minutes, for an experienced engineer, is enough to get a feel for the layout of things. Then when you have a question about “How does X service handle Y scenario” you can just go read the code and know the answer exactly.
I can’t tell you how many times I’ve had the answer to a question and get something like “dang rco8786 how do you know so much about how everything works” and invariably my answer is just “I read the code”.
Sometimes a question will come up during a meeting, nobody knows the answer, so I’ll just pull up the source and because it’s already handy and since I know the structure I can find the answer in a matter of seconds.
Your ability to navigate a codebase, to able to see how its components relate to each other and to the effects the software has on the external world, is the perhaps the most valuable skill you can develop as a programmer. If you also have strong communication skills, you will go far.
The entire set is good and I occasionally go back and revisit them.
It's tedious, slow work, but you can use note-taking, the REPL, tests (reading, if any, but also writing them), diagrams or any other tool for creating mental models until you manage it.
You can get lost in certain codebases.
Clearly, ESR (and anyone following the tenets of documents like this) are not actually interested in teaching anyone anything. They have a truly transactional perspective on "Question Asking" in that some questions are "worthy of answering" and others aren't. People who "Take without giving back" (his words) are exactly those who you're teaching. They absorb knowledge directly from those providing the answers.
Teaching is the act of understanding where your audience is in the learning process, and leading/guiding them through that journey in a kind and patient way. The truly ignorant don't know how to ask the question. Think of a child who's first learning computer programming. Think of an adult who's studying a foreign language for the first time. Think of the questions of a child who's never experienced snow.
> What we are, unapologetically, is hostile to people who seem to be unwilling to think or to do their own homework before asking questions. People like that are time sinks — they take without giving back, and they waste time we could have spent on another question more interesting and another person more worthy of an answer. We call people like this “losers” (and for historical reasons we sometimes spell it “lusers”).
And this is why "internet hostility" is a thing. Good job creating this horrible culture right from the start.
Please don't follow the advice of this column. Be patient. Encourage anyone and everyone to ask questions, even if they're "duplicates" or "easy to answer". Use the Socratic Method (ask questions that lead to more questions). Actually teach people things.
If you've ever tried helping out large numbers of people online, you'll have encountered most -if not all- of the described situations yourself.
ESR is definitely a bit of a personality though. Better versions of the document appreciated.
Criticisms of tone are more subjective, but I don't think they hold up here either. It lacks the structural characteristics of a flame or rant, nor does it portray anyone in an uncharitable light: both the perspectives and needs of those asking and answering questions are presented fairly.
But the article is written as instructions for asking questions to non-teachers, and is a flawed but generally decent guide to that. I'm an educator turned software engineer and one of the difficult parts of that transition was learning that I had to stop answering most questions that weren't "worth answering". While I'd love to teach the people answering these questions I don't have the time, it's not my job, and often the ROI is low (many people asking questions don't want to spend the effort needed to learn, they want a problem to be solved for them).
That's the thing though, this is advice for people asking questions, not answering them. If you are advising someone on how to ask questions on the internet, telling them how to avoid being called a "luser" is very good advice!
He actually does give advice for people answering questions at the end, and he definitely encourages them to be more gentle and helpful. But it is important not to waste the time of people who are providing what is essentially complex technical consulting for free.
BTW, this is also good advice for asking questions in a professional setting. Not being someone who needs to be spoon-fed information is always going to make you more respectable.
If you want to be effective at getting answers, please do follow this advice.
If you don't want to be impolite and entitled, please do follow this advice.
I'm saying this as some one who answers newbie programming questions on the internet. Trying to help some one who has not put any effort into understanding is taxing.
> Teaching is the act of understanding where your audience is in the learning process, and leading/guiding them through that journey in a kind and patient way. The truly ignorant don't know how to ask the question. Think of a child who's first learning computer programming. Think of an adult who's studying a foreign language for the first time. Think of the questions of a child who's never experienced snow.
These are all allowed - "I'm trying to learn more about <topic>, I searched for <a,b,c> and the results did not seem related, can some point me in the right direction?".
>Please don't follow the advice of this column. Be patient. Encourage anyone and everyone to ask questions, even if they're "duplicates" or "easy to answer". Use the Socratic Method (ask questions that lead to more questions). Actually teach people things.
I will not do this unless the person I'm teaching is showing a willingness to dedicate their own resources to the issues at hand. I'll do this for my own child, but if you seriously apply this online at big forums you'll get infested with help vampires. Help vampires F:ing SUCK, for real. You speak with a lot of pathos and like you've never have tried to help people a lot and had to deal with these. These people will do anything to take your energy and time away from you. They'll ask a question that's answerable in the FAQ, you'll direct them there, and they'll say "oh, it's just nicer to speak to people, can't you tell me :)?" or "my situation is very special, it's not answered by the FAQ".
I'm ranting, but holy crap having to deal with help vampires completely destroys your outlook on these things.
I feel you've helped too many people, with too little reward, and for that matter with too little progress in your ability to help.
That's not the fault of the people needing help, though, now is it? So why are you characterizing them as vampires?
IMO rather than embittering people against helping others, you should retire from helping ppl that aren't paying for your help. That way, you'll stop embittering and misguiding helper volunteers, whose jobs literally ARE to help people who don't seem to "get" the docs.
And I know what they're talking about. I'll put it a bit more politely: You can't help people who aren't willing to help themselves.
It's a thing. When you start helping out people in forums or on irc or what have you, sooner or later you'll encounter people who either can't be helped or just require far too much energy. No matter how much you'd like to help everyone, you just can't. It happens.
I believe parent poster has already calmed down, but I can understand their feelings. It's frustrating sometimes!
The many people you are able to help make up for it though.
When a helper fails to advocate for these people, it's wrong to conclude that they didn't want the help - a moral judgement. The help being offerred might not have been good enough, or the person might not have been ready for help.
In the end, whenever we do get to help someone we should be happy (since that improves the work. But when we fail someone - or we think someone has failed themselves - we should not be bitter, but become better at finding those who we can help, and improving what we offer to those we help.
I don't think you would doubt any of what I said. Instead, I think you're here to defend a morally negative view of students and others who "do not want to work" for the help. And I think that's wrong.
On the other hand, if you're in a situation where you're encountering random people on the internet at a rate of say 10-100 (or more) per day (possibly never to return); then the way you deal with it is you look for signs that the person has been trying. If they have: you go out of your way to help them, you absolutely do. But if they haven't, sometimes all you can do is hope that one day they'll run across someone like you in real life, who can teach them kindness and respect and humility.
I'm curious now, in what kind of environment have you worked? Are you a teacher?
Think of it this way, helping people is good, right? So you should help the people who are trying to help you.
> this is because your attitude could prevent people from helping!
Likewise, the attitude of people who put in minimal effort and expect lots of effort from volunteers causes the volunteers to burn out and makes it less likely that people will help you. Heck, even if they don't directly quit, they'll even end up with other people telling them to stop helping people.
That's an ethically bankrupt position, and I reject it.
You're simply wrong here. Any teacher who starts to be paranoid about the ineptitude of their students will be MISERABLE. Instead, teachers must establish better boundaries, and better materials and methods for their students.
For instance, I've /been/ the hapless student, and you probably have been too. I've asked silly X-Y questions. I've refused to read the docs before asking questions that have been asked millions of times before. And what helped me was people linking me to articles on how to ask good questions and how to get good answers and generally how to help and be helped.
Throwing in the towel and saying "man these students are just too lazy and expect too much" is not going to help the community, and it's not going to make the students magically ask more insightful and considerate questions. In my experience working with tutors, professors, mentors, and students in both professional, open source, and academic contexts, no skilled and happy teacher thinks or talks this way about their students.
So if you want to relate to students this way, just realize that it's no better than haplessly trying to help everyone in the first place:
- It still burns you out and makes you miserable (in fact, it's the one of the end stages of burnout)
- It still fails to make your students more self-reliant
If that's what you want, please continue to denigrate people who, after all, simply want to be helped and don't know how to be helped.
Rather the opposite. Though this document is written for people who ask questions, see also the section on how to help.
http://www.catb.org/~esr/faqs/smart-questions.html#idm667 (How To Answer Questions in a Helpful Way )
(Of course: this is ESR. He's ... opinionated. But does seem to have his heart in the right place in the end)
"If you can't be bothered to do that, we can't be bothered to pay attention. [If you ask for help, hackers] are likely to return logically impeccable but dismissive answers like “Yes, you can be helped” and “No, there is no help for you.” Claiming urgency is very likely to be counter-productive: most hackers will simply delete such messages as rude and selfish. There is an ancient and hallowed tradition: if you get a reply that reads “RTFM”... [If you screw up] you'll be told exactly how you screwed up, possibly with colourful asides. Hackers are in some ways a very ruthless meritocracy."
The guide also has "yikes" parts such as: "Seriously overusing smileys and color and fonts will make you come off like a giggly teenage girl, which is not generally a good idea unless you are more interested in sex than answers."
So you're opposed to people be respectful of the time and attention of others?
What an interesting and unique perspective.
Please go on.
The whole point of the rationalist movement what to develop better intellectual hygiene, which meant taking people at their word and arguing against their ideas in good faith (Scott Alexander being the best demonstration of this).
To see essentially partisan political flame bait penned under the auspices of alleged rationality is pretty off-putting.
see:
https://www.lesswrong.com/posts/WYzZ3bxctEJ2q6HFQ/what-are-y...
But I agree with your comment otherwise.