And here we have a prime example of why beginners find the programming community to be so abrasive, and worse, it's sitting at the top of this comment thread.
Ask yourself, would this be the answer you give to a 12 year old girl who's taken an early interest in programming? Or a single mother who's trying to switch careers to improve her lot in life? Or your own mother, for that matter? Is it really constructive to be so abrasive?
I'm starting to understand why we have such a problem with diversity in our field. This type of response is, in no uncertain terms, the response of a bully.
Pause for a moment. Try to remember what it was like when you were first starting out with programming. When "the fucking manual" was actually really confusing and loaded with domain specific terms, acronyms, and syntax. Can't remember a time when you didn't learn something immediately? Fine, step outside your world of programming and try to recall any painful memories you might have about trying to learn something outside your area of expertise.
Ever go to a gym and ask someone how to do a basic lift only to be scoffed at? Ever been to a foreign country and have someone berate you for not understanding how to navigate through some strange process or not knowing how to speak their language well enough? Perhaps you have, and it hurt, but you brushed it off and continued on. That's great for you, but not everybody is like that. A lot of people get discouraged and never continue with that sport, or with traveling, or with programming, and it's tragic because they might have otherwise excelled at those endeavors.
First off, why does your 12 year old have to be a girl? You are spouting off about diversity but you basically just used the stereotype that teenage girls are going to cry if you give them the hard truth. Why do we have to treat single mothers with kid gloves? Guess what, diving through some docs is a lot easier than anything a parent has to put up with.
3 of the 4 interns at the company I work for were women last summer, and they kicked ass. While they weren't 12 years old, they were young, and I had no issue telling them to start at the documentation.
There is a massive difference between "read the fucking manual" and suggesting "even if it takes longer, you will be better served starting with the documentation and working through that than googling or using stack overflow". One is bullying, one is teaching.
I always teach my interns to start with the docs. Give the docs 30 minutes before you Google or Stack Overflow. Give that 30 minutes before you ask a senior engineer. Struggling through it is part of the process of learning. The things you learn by going through the docs will help you later.
Or the shorter version, I want to hire someone that can answer Stack Overflow posts not find them.
> I always teach my interns to start with the docs.
> Give the docs 30 minutes before you Google or
> Stack Overflow. Give that 30 minutes before
> you ask a senior engineer. Struggling through
> it is part of the process of learning. The
> things you learn by going through the docs will
> help you later.
This is a skill I wish more programmers had.That's not asking, that's demanding that someone teach you. Its a brazen form of entitlement that completely disregards the state of the other person.
In regards to the gym, I don't go to the gym to wait around to randomly help some other person with their lifting techniques. I squeeze in going to the gym before or after work, to try to get in my exercise before I get home, so I don't die at 40. Don't be a dick and expect me to drop everything I'm doing because you don't know what you are doing. I am, literally, not here to help you.
If you really want somebody who is waiting around to help you, then your in luck: They are called personal trainers, and you can pay them to help you! If you don't have the money do that, then (god-forbid) you google it or get a book from the library and make a best effort on your own before getting pissy at me because I have other priorities than to make your life easier/less emotionally distressing.
And I think it's a lot easier to be a dick online, which is why programming in particular has a lot of these situations.
I think it's a lot easier to be perceived as a dick online, too, and that probably accounts for something like an equal share of the frustration that people walk away with.
However 2 things - #1 the bile you have for those asking for help is off-putting. #2 It takes more effort for someone to respond to a question and tell them off than it does to ignore it. And some of us in the programmer community would rather take the time to make a derogatory comment instead of either ignoring the comment or actually helping that person. THAT is the sign of a bully.
Except the culture of gyms, at least among most people to spend a lot of times at gyms and take fitness seriously, is to be helpful and charitable to others. Almost everybody I know who does any weight-lifting or anything related is always more than happy to help a n00b out if they have time.
Refusing to help someone if you're literally too busy is one thing. But a blanket attitude of "I'm not here to help you, ever, under any circumstances" is a pretty dick'ish position by the standards of many gym regulars. Of course it's your right to refuse anybody you want...
I guess what I was trying to say is if you were in the middle of a set and someone asked you for help I would be more understanding to the person being asked if they were annoyed about being bothered.
On the other hand you have to go out of your way to be an asshole on stack overflow, and yet it happens all the time. No one is demanding your attention or interrupting your code time to respond to a post on SO, and yet so many know it alls cannot help themselves by taking a swipe at the person posting a question. I just hate that attitude.
Maybe I should spend more time reading questions on SO and posting helpful responses.
Fair enough. There is an etiquette to things at the gym as well, and it may take a while to pick up on some of that stuff. Which is, I guess, the same as the Internet in some ways.
"Can you help me understand why this doesnt work?"
...is very different from...
"It looks like you know what you are doing, fix this for me."
..even though the outcomes are often very similar.
The relevant comparison would be to the gym's front desk. So, extending the metaphor:
1) Yes, it would be offputting if you asked them about lifts there and they just scoffed.
2) Yes, I have asked for help like this before ("where's the first aid kit, I'm bleeding?") and had that treatment, and it sucked.
3) But being pointed to the appropriate resource is a very reasonable response, and it's analogous to (a precise variant of) RTFM. It would be like:
"How do I lift?" -> "Oh, ask one of the people in red shirts."
"What are the rules?" -> "Oh, it's on that sign over there."
Not much different from:
"How do I make a website?" -> "start from this link"
"How do I make my DB queries faster?" -> "search for database index"
Btw, do you realize that your remark about diversity is sexist by itself? It assumes that females are not able to cope with the same conditions males do.
It depends on what "RTFM response" we're talking about. if it's simply,
1a) "Duh, read the docs" 1b) "RTFM"
then yes, it's abrasive and experienced programmers should cut it out. But we sometimes get the same flack for
2a) "Ah, that's called the controller and section 7 covers it."
2b) "Oh, I see. The term you're looking for is database indexing -- you should be able to get some good hits with that search term. Or 'add mysql index' for your case."
If someone is really like the diligent younger-me programmer you're referring to, they'll have already explained why the manual doesn't help.
You have to be careful not to equate the two kinds of levels of work (though obviously, politeness is always important, regardless of their level of effort).
As a father of 3 (11 yo girl, 9 yo boy, 6 yo girl) who actively works to teach all of my children programming (yes even the six year old); if someone is that delicate whether male or female then programming is not the right field. Any real programmer is going to eventually venture into unknown territory where they are unable to find an answer and they must learn to overcome.
My 11 year old daughter and 9 year old son are both currently learning Java (so they can do Minecraft mods). Our process looks like this.
1) Dad assigns chapter or chapters to read and implement lessons.
2) Child reads chapter twice. Then child reads chapter a third time while working through the exercises.
3) If child encounters and issue they are told to search the book for an answer.
4) If at this point they still have a problem they can't solve they are allowed to ask me. At that point I NEVER tell them what is wrong. Instead I ask leading questions that helps them to find the answer on their own.
Personally I wouldn't leave a RTFM comment because it is a waste of time and effort for all parties involved. However, if people leave the field due to these types of responses I think they are not well suited to being a programmer and the world has plenty of other great jobs to fill so they should consider pursuing a different passion.
Yes, yes, and yes. The best thing you can do for someone is show them their questions already have been answered because they have access to a massive, growing body of human knowledge.
> Is it really constructive to be so abrasive?
It's amazing that telling someone their questions have already been answered is abrasive.
Now, I am going to be abrasive, because I'm not talking to a beginner.
> Try to remember what it was like when you were first starting out with programming.
Ya, someone was going to to bring that up, like there is some sob story everyone has not being able to read documentation.
I'm not a programmer. I have to look up all sorts of beginner stuff all the time. Always have because I don't spend a lot of time getting better at it. I don't ever have to ask questions, and I haven't from before StackOverflow or where ever programmers asked questions before, because any question or issue I had had already been asked and answered (over and over). My problems have been encountered by everyone else at the same level of experience as I am. And because I do search for answers, I don't have to wait for someone to come along to answer.
Answering the same questions over and over without telling them they could have found the answer themselves is giving a man a fish. Your not learning simply being told answers.
> Ever been to a foreign country and have someone berate you for ... not knowing how to speak their language well enough?
No I speak English so I expect everyone else to as well. This is apparently appropriate behavior since it is appropriate to expect everyone else around me to answer ever question I will ever have without ever having to do any work or research of my own.
Ever asked a stranger out and been shot down harshly?
Part of the reason some people learn to respond this way is because there are so many people bothering them. One or two wouldn't be an issue. It may even be a small boost that they turn to you. But when it is person #6214, with the same problem, and the same solution, which is well documented for someone out there, it gets hard to keep responding kindly. In the same way that you aren't likely to be as nice saying no to the #6214 person interrupting you at a bar to ask you out.
I don't think this is a great example. Just because it happens doesn't mean that's a great response, either. It probably took courage for someone to work up the guts to ask you out. Even if you have no desire of accepting their offer it's just common decency to decline with respect and not make them feel like absolute crap while doing it. The same thing could be said for answering questions - except it's even easier, because when it comes to a question StackOverflow you don't have to even respond to not be an asshole. If someone doesn't feel like it's worthy of their time they can just move on and not say anything at all.
That would be true if men were treated any differently. If anything they are treated worse.
Kid gloves can preserve flighty women in IT, but it's not the reason there's so few.
An important bit of context is implicit in both your comments, and I think the context is different, which is where some of the differences in your stances are.
It's very important to know the purpose of the asker when answering a question. If the little girl or a single mother are trying to accomplish a single thing, right now, and their purpose is not to learn, then yes, just answer the question or don't bother commenting. If their purpose seems to be to learn, then teaching them both skills on how to better teach themselves and on better ways to approach the problem are ultimately more useful.
Does it really help that single mother trying to switch careers more to be told how to fix her HTML parsing regex[1], or would she be better served with a suggestion on a library that provided a more sane way to accomplish that capability? Of course, as a community we could do better at being more civil, and providing both answers, but if ever there was a place where the "teach a man to fish" parable fit, this is it.
1: Not to start an inflammatory discussion on that. I regularly use regexen to parse well formed specific HTML pages. The trick is knowing where it's appropriate and where it's not.
"Python strings have a method, rstrip, for that. You can read about it here: https://docs.python.org/3.5/library/stdtypes.html#string-met.... I find Googling 'python docs x', where x is what you're looking for is a quick way to see if Python has that thing included in the standard library."
And this is bad:
"It's in the docs, google for it."
And even worse, a literal:
"RTFM."
I understand the author to mean that if you want to say the last two things, don't bother.
In my experience, when a more junior co-worker has a question outside my immediate expertise, I find my self searching for what they ~meant~ not what they are actually asking.
I think a lot of disconnect in the community comes from this acquired auto parsing.
Which will never be learned if you never have to do it.
For a given... "repeat customer", I will eventually resort to search links, "What did you try", and then eventually "RTFM", "Google It", etc. - and intentionally not answering the question, to force them to go through the motions - if they don't appear to be doing so.
I start out by showing them how to describe their problem in a way that's easily understood by a more experienced programmer. Next would be to tell them some search terms likely to answer their question. If they're still stuck, ask which part is the most confusing and work through that a bit at a time.
Of course...this all can get very frustrating. After answering the same questions a dozen times, I often let someone else answer.
Another issue I see with SO is, a question gets answered then the language advances and boom the answer is now invalidated. So someone asks, "Hey I know it's answered here but I think there's a new answer, or has something changed." Those questions get shut down too which is frustrating.
I think SO should be a source of knowledge but it doesn't handle language versions well or out of date questions well. It doesn't even handle wrong answers well.
The bounty program is also bullshit. I 100% agree with the fact that the bounty should not be returned, otherwise dishonest users would just not award a bounty on the correct answer so they could get their karma back.
The 50% auto award of bounties to most up voted though is just garbage. I have had answers that are completely off base that extremely quickly get up voted and they end up getting the bounty. I'm pretty sure there is some type of voter ring style up vote fraud happening on bounties; at this point I doubt I will ever offer a bounty again since it typically no longer helps in me to find relevant answers.
Is there a manual? Is it searchable? Is it up to date? Is it common knowledge or has it already been pointed out? Was it written for programmers or does it require business/domain knowledge to understand?
You could theoretically plop someone with the ability to read English in front of a computer with internet connection and they could learn just about anything out there, but a little guidance is going to massively improve their productivity.
The way we should handle this at work is when someone comes asking for a fish, go on a little fishing expedition. If they don't get the fish themselves, provide them one. Keep an eye open for the ones who are learning and the ones who don't care to learn and respond accordingly.
Outside of work it has to work a bit differently for a number of factors. You don't have nearly the obligation to help others work together, there are far more people, there is less direct communication. I'm not sure if there is a better rule that doesn't end up being abrasive.
Or that there's a difference between saying "RTFM" versus "This is in the manual in the section 'FooBar' - what are you doing that isn't covered there?"
Because too many SO comments are simple RTFM responses.
Of course, when the code they find is incorrect, outdated, or not easily applied to their specific situation, they lack the understanding to figure out what they need to do to fix it on their own, so they ask.
This of comes out in the form of a question which, to anyone who has taken the time to build such an understanding, smacks of laziness, hence all of the "RTFM" replies.
And in that case, RTFM is the absolutely the right answer. They need to slow down, read the problem code, figure out what they don't understand, and learn. Maybe they need to slow way down and learn about some of the constructs of the language they are working with. Maybe they need to read the docs for a particular library or framework to figure out what abstractions it relies on. Maybe they just need a high level view of the API so they will know what all is available to them.
Could this be communicated in a more friendly way? Sure. Is it the responsibility of the community to do that? I don't know.
tl;dr RTFM.
Usually I have to find a third party simplified documentation sites, like dotnetperls or ss64, which have easy to read documentation.
Besides, at least with SO, it clearly states to search before you ask. The user is only asking because searching wasn't successful. An answer of "go search more" does not help the asker.
MSDN is better than most, but there's still a ton in there in places that has no examples or usage information, no indication of what valid inputs are, no indication of any other external state that could derp things up.
obviously some documentation is better than others, and asking specific questions to fill in the gaps where documentation is unclear is a good thing to do.
however, programming is very much driven by learning how to find the answers to problems on your own. often those answers are in the documentation but not always. sometimes they haven't been answered by anyone before and learning how to extrapolate from documentation to understand the behavior of programs in new situations is a skill that has to be developed.
and of course, ultimately, the final authoritative document on how a program will behave is the code itself. there are times when you have to read source. hopefully those are rare occasions, but being capable of doing it when necessary is yet another skill that needs to be developed. reading through an unfamiliar codebase is difficult and requires practice and experience.
all of these technical reading skills need to be practiced. beginners frequently make the mistake of denying themselves opportunities to practice those skills by simply asking for someone to tell them the answer.
These are skills that develop over a programmers career. And when you have issues like getting a for loop going, or if you can have a for loop in a while loop, then reading the documentation is not going to be very useful. Again, information density and assumed level of programming competence in source documentation won't help if you are trying to figure out fundamental programming issues.
Should people read documentation, of course, but the usefulness of documentation increases with programming ability.
1. You google the problem and find results from stack overflow and some out-of-date blog posts from 4 years ago.
2. You choose stack overflow!
3. The stack overflow question most related to the one you have is closed as a duplicate. The duplicate's answer is: "look at this manual: link" but the link is to some .edu website that doesn't exist anymore, or is for version 0.7 on a unix system and you're working on version 2.5 on windows.
In conclusion:
1. The world changes, so the same question may have different answers depending on when you ask it.
2. Having multiple different representations of a problem makes it easier to search for it correctly the first time, not harder (even if they all just link to one answer.)
Example: I've been getting hostile responses on StackOverflow when asked about RDTSC and MS QPC, and about some strange behaviour of XCode compiler.
Found out that both MS and Apple has wrong documentation, and that XCode compiler indeed does things differently than the official LLVM distribution (And way different from the published Obj-C standard).
How I am supposed to know that without asking someone that already knows?
> How I am supposed to know that without asking
> someone that already knows?
A good idea is to ask the answerer how he/she figured it out.Usually when I run into compiler bugs, I look at the assembly output to make sure.
I don't know why you were messing with RDTSC, but usually when I need a high resolution timer I use clock_gettime() or gettimeofday(). The former doesn't work on OSX, but the latter does, and mach_absolute_time() or clock_get_system_nanotime() seem to work on OSX if you really need them.
I think the point is that if you're going to tell them to RTFM or google it. you should also attempt to answer it or point them in the right direction. but don't tell them RTFM or Google it and nothing else. That doesn't help. A lot of time people have already tried that and don't know enough to know where to look or what to search. At least tell them to try googling XYZ or tell them check section whatever in the docs.
This is exactly why I just learned as much as I could on me own. I'm inviting downvotes by saying this, but you're being a dick. That's the point of his blog post, don't be a dick. I definitely agree that new people should come in and.. read posting guidelines and be receptive to feedback. The problem is that if we want them to be receptive.. responding like this will not help
I think linking them to a directly-relevant resource like an answered StackOverflow question or a specific documentation page is a totally valid way to answer the question. My impression is that the author of the article is referring to replies that simply state "Google it" without providing any useful links, search terms, etc.
- Either they couldn't find it. Then my answer will help. - Or they were to stupid/lazy to search. Then they're not worthy of my ire.
Exactly. And as the article was trying to explain, this is a skill which needs to be learned like any other kinds of skill.
Shouting RTFM means you demand that skill from the poster or even insult them for not having it - what you're not doing is giving the poster any help or encouragement in developing the skill.
A better solution would be to link them to the relevant previous discussion or documentation page or telling them what to google. This way you can actually bring the poster forward without causing duplicate discussions.
Your doing all the work, they just have to sit back and let someone else do it for them.
My general rule of thumb is the same I use for HN, if you want to comment about something non-related, or make an observation that isn't really relevant, make sure to contribute as well, preferably first in the comment. For StackOverflow, that would be offering a solution, or help in some way before offering as additional observation that "if this were me, I'd do X". For HN this is most commonly useful when making a joke. Unless your joke is insightful and relevant,you're best including some additional content contributing to the discussion at hand.
No, just no. There is no point to any of all this search technology and this accumulated knowledge if no one uses it.
Someone asking a question that is answered in the documentation or has been asked and answered over and over should be pointed at those sources. One of the most important skills anyone is going to learn in a technical position is finding answers to questions you have that have already been answered. The next important skill they have to learn is doing a little bit of your own research in understanding your problem.
This goes especially for places like StackOverflow which is not a discussion forum. It's value is diminished by asking and answering the same questions over and over.
EDIT: I'll mention the last part of the statement I quoted too, it's unfortunate the lumped the second half of the statement with the first.
> correct their grammar, or give your opinions about their choice of technology
Correcting grammar is not helpful in any way in this context. If you can't understand what they're getting at, ask for clarification. Nitpicking grammar is just being a dick.
Opinions about what they're using may have one very narrow use, if what they're using to do what they're trying to do is just so very wrong. And we're talking 'I'm trying to create a pure HTML page to run this Nuclear reactor' levels of wrong. Most of the time, you do need to keep it to yourself. Especially on sites like StackOverflow, which is not a discussion board.