Friction Between Programming Professionals and Beginners
programmingforbeginnersbook.com
programmingforbeginnersbook.com
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.
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.
Your doing all the work, they just have to sit back and let someone else do it for them.
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.
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.
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.
"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.
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.
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.
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.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.
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"
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.
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.
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).
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.
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.
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.
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.
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.
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.
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
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.
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.)
How is that alienating?
A recent example: someone was using a map/hash object to store a series of documents, and needed a way to extract N items from the map for pagination reasons. They presented a for loop but said that something "felt wrong" about that. Many of the comments were about how maps had no guarantees about order, and that each attempt to grab a "page" of objects would result in a random set, meaning pages 1, 2, and 3 could all conceivably have common items, rendering pagination fundamentally broken.
There were several suggestions to use an ordered array of map keys, but the asker was determined, stating "it's just for testing purposes, order doesn't matter, I should never have mentioned pagination".
Maybe there's an important detail that the asker left out, but by all accounts they were given sound advice and even working examples, but they still seemed frustrated and would likely describe the experience as "alienating".
It's more of a condescending "Why are you even doing THAT" (because the person doesn't actually know the answer). You see this kind of problem in person too with people who feign surprise over you not knowing something when asking a question so they can act like they're much smarter, but they're really just insecure about what they know.
"You don't know what X is?!"
This is toxic, but in real life the best approach is to just reiterate you don't know and ask. This usually reveals the person claiming to be surprised doesn't actually know either (or if they do you can at least quickly learn something). This doesn't work as well with an online community though and people usually just leave it.
As someone on the other side of those questions, perhaps I can explain.
Very often, people unfamiliar with a subject area ask questions about solutions, instead of asking about problems. They've done a bit of googling, and have a partial solution. But the solution doesn't work, so they ask "how can I fix this solution."
To someone familiar with the problem space, the question is often nonsensical. It's based on false assumptions about how the API / system works. So the question is largely un-answerable.
The only possible response, then, is "Don't talk about the solution. Talk about the problem. What goal are you trying to accomplish? Maybe there's a different solution which can help you reach that goal."
This response can be seen as obtuse and unhelpful by the questioner. But it's often the only possible response, given the incorrect assumptions.
e.g. Q: How do I get diesel into my gas car? The nozzle just doesn't fit!
A: Why are you trying to do that?
Q: Stop being annoying, and just help me!
A: No, really... why are you trying to do that?
(after some back and forth)
Q: My car is in front of the diesel pump, and the hose from the gas pump won't reach.
A: Well... move your car.
It's not always that simple, but the back & forth is similar. It's hard work convincing people that their assumptions are wrong, and that they have to re-visit their assumptions, and re-do all of their previous work.
Like.
"I would like to help you but I need some more context. What are you trying to do"
Imagine asking "how do you say 'house' in German?" Well that depends: is that a verb meaning "accomodate"? Is that a noun? Does that mean "a building," as in "three-bedroom house"? Or "a dynasty," as in "house Stark?" Or music, as in "house music"? Or something completely different? https://en.wiktionary.org/wiki/house
"I DONT CARE JUST ANSWER ME IS IT SO HARD?!!!!" Yes, yes it is.
The answer in the above case is: "There are many different meanings of the word 'house' in translation (e.g accomodation, a building) so it depends on context."
You could then elaborate on different meanings, or suggest the question be made more specific; This is a question that requires more context; however, it's not the same as the procedural questions that often feature on SO where there is no ambiguity in the language.
If someone's asking to put diesel in their petrol car, they obviously don't know that's a bad thing to do. Just asking 'Why are you trying to do that' makes you seem like you're trying to be difficult. A better answer would be 'I think you're looking at the problem wrong - diesel won't work in your petrol car, what are you trying to achieve by putting diesel in your petrol car?'
Yes it's a bit longer, but it actually helps someone know they are wrong, rather than coming across like 'Pff you idiot, you want to do it my way'.
In short, the answer you give doesn't matter. What matters is the attitude of the questioner, as shown by AndrewUnmuted, below.
A good questioner can say "That's not a good response. I'm trying to do X because of Y and need help with Z."
A bad questioner says "How dare you question me. Give me an answer now!"
I have 17 years of experience in running an open source project. My conclusion is that the content and/or the tone of my answers are less relevant than the attitude of the questioner.
People who want to solve a problem don't pay attention to the emotional content of an answer. They keep pushing for a solution, no matter how much they dislike the questioner.
People who have an attitude see personal insults in technical responses. An answer of "Your question is answered at URL X" is an offensive response which is intended to personally denigrate the questioner, and insult his intelligence. The only proper response for such a questioner is to insult someone back.
As I said below, the only real solution to such people is to inform them to be polite, and then to ban them. They are toxic.
I don't see this, for beginners the reply will be "I'm trying to bake a cake" ... "I need to get milk from the store" ... "I need gas to get to the store"
Each ... is a back and forth focusing on the actual problem. Beginners don't necessarily know what information is useful information. This is why physically working with an experienced developer is so useful, because that exchange (which provides a useful learning experience for the beginner) is so much easier in person.
Try sitting on an open source mailing list sometime. :(
If someone asks the wrong question, they might get the right answer, that doesn't help them. That's not a problem. That might be the right answer for someone else - no answer is just for the original submitter, but for anyone else to whom it is relevant.
The problem I've found is I've asked a very targeted question, and rather than answer it (or not, in the case that someone doesn't know the answer) people imply it's missing the context of what it's for - it doesn't matter, that would be a different question!
It seems sometimes people ask "what are you trying to solve" (in the guise of "helping newbies who ask the wrong questions") hoping it will turn out to be an easier question.
I'll also note, even if the question is the "wrong" way, those are the best ways to clarify how to do, since they'll be done on only rare occasions, and hence have less documentation.
"You ask a complex question and they ask you why you're doing it."
Without context, it is very hard to differentiate complex questions that are necessarily so, and the much more common case of them being due to muddled thinking or fundamental misunderstanding.If you are looking for help, the most important thing is to clearly describe the problem you are trying to solve, much more so than the details of the approach you are trying. This leads to a much more productive conversation, and can avoid a lot of back and forth based on mutual misunderstanding.
http://mattgemmell.com/what-have-you-tried/
This is how I almost never got my SO topics closed. I state beforehand what I have tried, how certain SO questions may look related but are still not giving me enough knowledge to solve my problem. I do my best to make a convincing argument that I need help and can't make it on my own. A few days later and I get my answer :) (and sometimes I figure it out myself which takes a while)
I agree with the HNers that say that someone needs to struggle a bit first. It's necessary to develop the emotional coping skills, because programming can have very frustrating moments. And they can answer "what have you tried?"
Beginners need to understand: why would I put more time into solving someone else's problems than the person asking me the question? I notice that a lot of friction comes from that place. Sometimes beginners don't realize it, but I've seen some lazy people as well. When I am on the beginning side I really try to take this into account and value the time of the expert.
Is this because of how pervasive instant gratification [and entitlement] have become?
For me, it also shows motivation on the person asking the question (and vice versa). It's not effective to help someone who isn't going to do anything with the information.
I don't see how entitlement and instant gratification play a role.
>For me, it also shows motivation on the person asking the question (and vice versa). It's not effective to help someone who isn't going to do anything with the information.
Amen! My in-laws keep talking about listing some items for sale on Craigslist. They usually ask me how much they think they could/should sell things for. I usually stand mute. The implication is that they want me to list the items for them. If they aren't motivated to minimally research or determine an asking price themselves I figure they aren't motivated enough to actually sell the thing. (Not to mention their motivation tends to be "what's the most I can get for this" while mine in the situation would be "what's the highest price I can ask and still ensure this thing is gone with in 2 weeks". Additionally, if I list the thing, I'll probably have to deal with the communications and exchanging the goods... no thanks.)
"And this whole notion of making someone "struggle a bit" is entirely misplaced when you keep purpose (2) in mind."
I didn't mean it that way. Struggling a bit also implies Googling an answer or looking things up on StackOverflow, it's part of the struggle before you ask someone (online or IRL). Specifically, querying Google, querying SO and typing in the question on SO and then clicking on the suggestions first are all part of the struggle since you haven't asked a person yet.
"Compare this to spending 15min to write a precisely-worded question (but without "steps you've tried"), and an expert spending 15min to write up an answer. "
When I think about it, a precisely worded question implicitly shows the struggle. Implicitly showing it is more effective than telling a whole story about it.
I detest busy work, but in this case it actually often needs to be done unless you're relying on ESP.
From time to time I still use it, but for me it has jumped the shark.
By the way, showing a talented beginner where good documentation is - I think that's frequently the best way to help them along.
In other words: just because Google ranks a result best doesn't actually mean it is best for you: I have frequently found the actual result I was looking for two or three result pages down.
I did, and they replied :)
Like at which point do they understand that maybe their desire conflicts with how most community wants to use SO as.
[1] http://stackoverflow.com/questions/16392260/which-websocket-... [2] http://stackoverflow.com/questions/5062614/how-do-i-decide-w...
It's just stupid to reduce such a portal to only questions that can be answered by RTFM.
Questions that need discussion due to missing information should be voted away, I agree on that. But some allow subjective answers - and those are frequently those that require experience. (What's the best way to solve this-and-that? It depends, in situation a use solution A because, in situation b use solution B because, ...) Such questions typically are being closed by the moderators as well. And frequently the person who asks is not aware of all the factors influencing a solution, so there's a lot of useful information in such questions.
This is nonsensical, because the reason that it isn't a duplicate is inherent in the question itself. I'm not sure how I would edit it without writing a non-sequitur. Even though I've actually accepted a correct answer, I cannot get rid of the prompt.
Arbitrarily closing/rewriting questions, removing useful information etc. The site can be useful - but only in spite of the community tasked with running it (not because of them) and it makes it frustrating to use.
We added that prompt because a huge number of people were asking questions that were either duplicates or were so poorly presented that the nugget of information that made them unique was obscured; either way, the asker wasn't getting an answer. It's been live for just under a year now, and the response has been incredible: more duplicate questions are confirmed by the askers themselves than are closed by voters; meanwhile, the number of people editing their questions has also gone up.
Sorry you had a bad experience with it, but this is part of the work we've been doing to reduce the amount of conflict and frustration on the part of both askers and answerers.
No, it explicitly forbids questions that involve discussion.
The point of Stack Overflow is (and to a large extent always was) to be the place for definitive answers (and their alternatives) to well-asked questions. It is not a place for discussions, ranked opinions, interesting conversations, or anything else that does not have a "right" or "best-guess" answer.
It so happens that many questions are interesting to the community of people who visit Stack Overflow, but that doesn't mean they are contextually appropriate. If you want a discussion, go elsewhere. This isn't just a "if you don't like it, leave" judgement: it's explicit in the design and mission of the site[1]. There are better places to discuss things, just not on Stack Overflow.
[1] "This site is all about getting answers. It's not a discussion forum. There's no chit-chat...Avoid questions that are primarily opinion-based, or that are likely to generate discussion rather than answers.", from http://stackoverflow.com/tour
In fact, many of the most impressive developers I've gotten to know, like Rich Hickey and others, have low scores on the site. You can't judge the contributors by whether or not they know what they are talking about, just whether or not they are addicted to answering questions first before anyone else. And many of them just like the power they have over other users to close and moderate things, often in an unpredictable way.
That said, many of the contributors are genuinely helpful and the site has helped me tremendously in the past. But just as many contributors are narcissistic and think they invented both chickens and eggs.
OTOH there is definitely a need for a forum for the questions that get closed on SO but collect a huge number of upvotes. These are important questions and answers, people want and need them, and keep asking and answering them.
One important question is whether the approach to the site governance used on stackexchange sites would work on such a forum.
Quora tries to somehow serve as such a forum, but it lacks the focus of SO.
Despite me being a very experienced programmer (I started to learn coding when I was 6 years old), I find SO extremely hostile.
Examples: One question of mine from 2010 got vote closed in 2014 (yes, people will hunt down questions even that later!) and now has vote deletes, also the same question the most upvoted answer is a snarky answer (copy paste of the answer: "You can't eat your cake and have it too.")
Recent questions: They all get downvoted and vote-duplicate even when they aren't.
I made some questions about RDTSC, people kept arguing with me about how I was doing something wrong, my CTO is retarded, or that I was retarded, or whatnot... and all I wanted was to fix some games (RDTSC behaviour changed from counting CPU cycles, to count whatever arbitrary frequency the hardware wants, this break old games that rely on it counting literal CPU cycles).
Another was when I asked details about some bizarre behaviour of Objective-C in recent versions of XCode, people said it was dupe (not exactly), that I was retarded, that it was all in the fucking manual, or that I could google it, and noone EVER replied with a single official answer.
I asked then on Quora, found out that XCode DO have non-standard behaviour (ie: stuff that ins't in Obj-C standard, and ins't in official distribution of LLVM), and that the Apple manual is wrong, thus no wonder why I wasn't finding the info on the manual or on google.
I asked about these issues on Stackoverflow Meta, got attacked, downvoted, deleted, etc... no meaningful discussion.
I am impressed that some people went to great lengths to argue with me without posting a proper answer, one guy even wrote something I considered an answer in the comments, but lacking details, I asked him to expand in an actual answer so I could accept it, and he replied in the comments: "Nah, that would be a waste of bandwidth."
If someone lets a few rough edges on SO dissuade them from learning, they probably didn't care for any of this to begin with.
I mean, every single one of these traumatized "beginner" comments were sourced from reddit - where there are at least a half dozen subs that would gladly accommodate questions unsuitable for SO.
On a related note, I also don't understand why there is a constant push to coddle beginners to increasingly absurd degrees. It has literally never been easier to learn to program. There are hundreds of resources available to the aspiring learner - more so than any other field I'm aware of. Yet somehow the anal retentiveness of SO is the problem here? Come on.
Apply this perspective beyond software development. Law, medicine, firemen, teaching a kid to play baseball. Why do we continually look at software development different than other acquired skills?
To answer your question directly, it is my opinion that the layers of abstraction that we have today, and that continue to grow, put those new to software and computer science at a huge disadvantage. They have a very long haul. And yet, demand increases for these skills. Yes, we should coddle to the best of our ability.
Well, that's a good question. What do you think it takes to break into law, medicine or fire safety? I can assure you that being willing to put in significant work, and tolerating adversity, is a hard requirement for each of them.
Much of my family is in medicine, and I used to work in law - both professions are absolutely merciless in comparison to engineering. The expectation that would-be [doctors, lawyers, bankers, etc] put in the work is unwavering, and the professionals in those fields can be huge dickheads to boot. Yet, they somehow manage to attract more than their share of candidates.
Holding on to old teaching methods "just because" isn't the right answer, nor will it help the programming profession in the long run.
Teaching and pedagogy is a broad topic, and there are certainly things that can be done to improve most existing models. However, a willingness to tolerate some modest level of adversity will remain necessary.
Or perhaps people have different levels of emotional sensitivity (for environmental or genetic reasons). I detest conflict and go to extremes to avoid it; thus I try to stay away from situations that entail a lot of negative interpersonal interaction. If I was just now learning to program, an abrasive comment on SO would not turn me off to programming, but it would make me dislike certain types of people more, and in the future I would steer clear of that particular website.
This actually describes me fairly well. I began seriously pursuing programming as both a hobby and profession about 6 years ago. I was turned off by SO's somewhat prickly community, and to this day only use it as a search engine.
That's just it, though : SO is just SO. As valuable as it is, it's still only one resource among many. That was true then, and is even more true now. What your comment helped me internalize was that one of my principle objections with the OP is that the scope is overly broad. It's not so much about "beginners vs professionals" as it is about "Stack Overflow vs the uninitiated". It's perfectly legitimate to write about how to correctly ask questions on SO, but framing it as some sort of macro issue concerning the programming community at large feels wrong headed to me.
Programming requires a nearly dogmatic adherence to methodology, logic, and best practices, to be done well. What the article describes as unfriendly towards beginners, is really just an attempt to bestow upon beginners a thought process that needs to be instilled to be successful.
The people who give up their ego and follow methodology, logic, etc. get things done.
The people who have an attitude don't get things done. Even worse, they often accuse everyone else of being arrogant and unhelpful.
On the Open Source mailing list I administer, I've had to resort to banning these people. Ask a question? OK. Argue with the answer? Not OK. Tell the people who are helping you that they're assholes for saying you did something wrong? Ban.
I can say with confidence, I have never been able to successfully ask a question on stack overflow. I think I have been banned at least once, or they deleted my account.
I've asked questions ranging from implementation of 3D matrix manipulation to avoid gimbal lock to writing a python client-side application that needs to be able to edit a google docs file.
Everything has been closed, locked, or down voted. Each time I followed standard procedures that we are all familiar with for reporting bugs.
- Include output
- Sample code
- Explanation of what the current code does and what I want it to do
- Pictures/Diagrams if helpful
I have NEVER gotten a single useful response. Granted it's a great resource for programming information. I use it as a library: I can go there and look at all the books frozen in time, all with good information on a wide variety of topics. But I know, if I attempted to write one of these books or jot down my feelings on the side of a page I'd just get yelled at by the librarians.There are two things that I have noticed about stack overflow: it's one of a few sites that for some reason prides your identity over your work. Your 'karma' is displayed just as big as your name, and it seems to be implied that the bigger that number is, the more right you are. I have also noticed that most of the resources that are indeed helpful are either locked, closed for 'read only', or every reply is down voted even though the responses and questions are still valid.
I jokingly tell people who are going into CS at my college that "you are not a programmer until you have gotten banned from stack overflow for asking perfectly reasonable questions". Whenever I say that, I can almost hear a sub-audible sigh of relief from everyone in the room including some professors from other departments attempting to learn CS.
Stack overflow is presented as a site for the end user learning how to program. It is not.
I cant login to either.
It also seems like I am not the only one: https://np.reddit.com/r/learnprogramming/comments/1wpbhv/i_e...
That was linked in the article.
I spent that entire week upset because I felt I did something wrong (this was back when I was like 14, 2 years into programming and still very much an emotional edgy teen).
I'm very lucky that I eventually brought it up to a long time IRC friend and programming "mentor" of mine Steve who said that he was also banned. To me this was crazy as I could not understand how he could have been banned. He was, and still is, my last go-to resort for programming help; basically Mister Miyagi.
Because of this, I have surmised that to be good at programming, you need to be banned from SOF for asking a perfectly reasonable question.
Edit: I was banned when I asked for help with writing a 3D matrix camera with not problems from gimbal lock and another time for asking if there was a datatype for allowing two threads to mutate the same state.
Back then, I did not know about locking, concurrency, and all of the cool jazz. I learned most of what I know myself.
Thank god google indexes all of the closed SOF posts or I would have never been able to.
Account deletion is only used for spammers, sock puppets used for vote fraud and for persistent trolls.
You can get blocked on SO from asking questions if you ask too many heavily downvoted and/or closed questions without a lot of positive contributions, but accounts aren't deleted just because someone asks a few bad questions.
Yes, that was it. I asked two questions, and was banned for it.
> ... The exact formula for the bans is not disclosed, but users are only banned if they have a significant number of heavily down-voted, zero-voted, or deleted posts. One or two bad posts will not cause you to be blocked from using the site.
So what happened is definitely against current SO policy and auto-banning rules. If you want to share the question URLs and your SO user id to help sort out what happened, I'd be happy to assist, I can see deleted posts, I'm a fan of SO and I would raise a ruckus if I had proof that new users were banned after asking two programming questions.
Just as with a real language you learn the highest amount of material by absorbing explanations and expressions by qualified users of the language; not by immediately trying to form sentences as soon as you know 5 words.
A user of a language only becomed a skilled user when their mind contains a large enough corpus of absorbed expressions to imitate and combine.
IOW: Yes, the newbie does need to read the manual first. And after that some working code. (Though admittedly many manuals are crap and recommending a good, useful and fitting manual is a skill in itself that is lacking in many professionals.)
It isn't. It really isn't. :)
While it is a big part, and necessary if you actually want to talk to people, in terms of time spent it is much more important to get the vocabulary in and as much exposure to expressions of the language by competent users as possible.
That's why people recommend travelling to where a language one wants to learn is spoken; not because one must speak it there as well, but because one hears and reads it there everywhere.
Cheers, sorry for the confusion.
Plus, newbies who refuse to actually read a book front-to-end annoy the ever-living shit out of help channel people, because they end up asking all the stuff that the book would explain fo them, and the chat people end up being nothing but an interactive and abusive book.
http://www.amazon.com/Method-Programming-Edsger-W-Dijkstra/d...
The answer is the third group. The average SO question gets read 30 times per day. Any value captured by either of the other groups is massively dominated by the value captured by people who google the question and land on SO. Complaining about the site being harsh to question askers fundamentally misunderstands the value SO provides to the community.
I'm all for websites which help beginners learn programming, but if you need 1-on-1 help to figure out why your loop is invalid, SO is the wrong site. https://hackhands.com might be a better destination.
(I can't find the video on my phone - if somebody could link it below that would be great. )
Because they just did that.
And the next eight links on their google search also link to forums with people saying "RTFM", "Quit wasting our time", "This has been answered a bunch of times before.", or even worse, someone who clearly didn't bother to read the question and gives a blatantly wrong answer.
And then the answer they have been looking for is now buried in legions of programmers' impulsive expressions of indignation.
At the very least link to somewhere where it is properly answered, or don't answer at all.
I recall three years ago asking the question "What is dependent typing?" on Stack Overflow. The first commenter replied "Did you try google? wikipedia?" to which I provided a sassy retort (http://stackoverflow.com/questions/9338709/what-is-dependent...).
Some people seem to become quickly exasperated with what they perceive as "stupid" questions (e.g. Linus Torvalds). I don't understand why; just ignore them. On the other hand, I get exasperated with mean comments. I frequently upvote people on Hacker News that I disagree with if they have worded their stance in a nice way, and I also frequently downvote people that I agree with if I find their comment particularly rude.
Some feel that rudeness is necessary in order to drive a point home (particularly in politics — lots of mudslinging), but I disagree. It would be interesting to see if any research has been done on this subject: are blunt, mean comments actually effective in certain situations?
1. Make it clear that you are a beginner and that you're eagerly learning. Otherwise it's easy for someone to assume that you're a more experienced developer and answer accordingly.
2. Don't ask people to do your homework assignment for you.
And some suggestions for the experienced devs answering the questions:
1. Don't assume that the OPs first language is the language of the forum.
2. Don't assume that the OP is an adult, lots of kids are learning programming these days.
I have never relied on the generosity of others to take their time to teach me - nor have I seen it as the responsibility of anyone to carry me along. I'm not dead weight, I'm independent and I have things I want to do.
One of my first experiences with programming was automating a menial task at my first internship. I was studying mechanical engineering at the time and my older brother had gotten me an internship at the company he worked for in the QA department. I was given the task of testing their in house search engine and recording the results in an Excel spreadsheet. When I got tired of doing it by hand I wrote a script to do it for me - a horrific mashup of PHP and awk and sed and all sorts of other gristle. But it worked. And it was mine. And I put it together by piecing together man pages, internet documentation, and trial and error.
After I switched my major in college to CS I was working on a personal project and when my professor couldn't give me an answer (he rightly expected me to figure it out for myself) I eventually ended up trawling though Java reference books at the local Barnes and Nobel to find a solution because nothing freely available gave enough detail.
The barrier to entry to programming is incredibly low. Anyone with a personal computer or laptop has an unbelievable treasure trove of incredibly high quality and FREE tools and resources to do absolutely amazing things...but that does not lessen the inherent complexity or difficulty of what programming is.
I think the attitude that many hobbyists or beginners bring to programming would be unheard of in practically any other sort of hobbyist field.
Build a basic knowledge and grow it. Yes. That means making an investment of time and possibly money. I have bought many supplemental educational resources (at first foundational algorithm and data structures and eventually technology and framework specific) because I want to learn. If you do not want to learn no one can teach you. And learning requires effort and engagement that are altogether lacking in many individuals.
Most questions asked these days are duplicates, syntax errors or are answered in the relevant online documentation - I really think there should be online courses on 'How to find the right thing to search for' because it would help newbies so much, and prevent them from having to interact with the mean/rude side of StackOverflow (which is proving hard to get rid of despite all the initiatives).
They have some minuscule, irrelevant taste of power, and it immediately goes to their heads. And in their eyes they are correct.
Instead, opt to go to a forum. For example, if you develop with ember go to their forums, meteor, go to their forums, elixir? They have a slack channel. Etc. Anything but stack overflow.
What would compel those who hang around Stackoverflow to be complete assholes to those who ask questions? Definitely hubris, and most probably impatience.
As a mediocre programmer I've been subject to ridicule from experts. I remember when I was trying to learn ExtJS (before is was Sencha) and for the life of me I could not get past a bug. I went on the ExtJS posting board.
Along the way I noticed one guy who answered replied to a lot of posts, but frequently not with an answer. It was more often than not to ridicule the original poster. Sometimes he would help but more often than not he would make a derogatory comment. I eventually broke down, and decided to post a question on the board, and within a short period of time the aforementioned guy replied, but did not provide a real answer. Something about 'you clearly don't know how to debug'. Yes dumbass, I can't figure it out that's why I'm asking.
I don't think any particular field has a shortage of arrogant know-it-alls that take pleasure in lording over the masses and gain pleasure out of humiliating those who they perceive as being beneath them. However programmers can be a funny lot, and without going too far out on a ledge there are quite a few of us who are brilliant at code but not so much in other areas of our lives.
Plus I have to wonder how many of us programmers have been on the receiving end of abuse in other areas of our lives, and take that repressed frustration out on others in the area we have confidence in.
Also, I'm not surprised to see a bunch of comments taken from r/learnprogramming, a subreddit dedicated to helping beginners, being somewhat critical of StackOverflow and its style.
But I think the article, and the comments here, have a bit of a blind-spot: teachers and/or mentors. As much as people seem to want to believe that it's easy to self-learn programming, the issues brought up in this article are among those that give the lie to that idea. There would be tension in any field if untrained beginners were asking questions in the same forums used by experienced professionals.
Questions like "javascript while loop not working" demonstrate a fundamental lack of understanding that professional support forums like SO and IRC are not designed to address. Most fields recognize that those sorts of fundamentals are best learned with the support of teachers who can evaluate what is missing in a student's mental model and answer questions in a way that builds knowledge. I don't see what makes us think our field is so different.
</rant>
This is a (mostly subconscious) theme in most of the SO flamewars: "they are attacking me for trying to find out the Truth" vs. "I'm trying to get to the root of his question, and he's just being stubborn" (I have seen such pointless bickering from both sides; hopefully I have learned something from that?).
- http://stackoverflow.com/help/how-to-ask
- http://stackoverflow.com/help/mcve
Disclaimer: I work for Stack Overflow, but these were mostly written by folks who don't and who just wanted to see new users have an easier time - I just edited them.
Curiousity, interest, cooperation is the key of creating new beginners.
The problem with SO is that there isn't an alternative with a user base large enough to get that critical mass of answers. That means that there are no real alternatives to the very well defined limitations of Stack Overflow.
Without an alternative, it puts contributors in an adversarial position against askers- trying to close as many questions as possible to try and keep the mission statement alive.
The article said that professionals should not say: “why would you want to do that?”
I think this question is quite possibly the best thing about asking for help in a programming community. What better way is there to learn about programming than the Socratic Method?
What this question means is that the professional is dedicated, not to simply finding the short term answer to the beginner's question, but to helping the beginner actually understand the problem, and what the range of solutions are, and what the best solution might be. It teaches the beginner to not get stuck in a rabbit hole and look at the big picture. It teaches the beginner to do it the right way instead of the easiest most obvious way.
Its arrogant from the new users perspective, and basically just a result of the human mind purging negative moments, like ones own beginners frustration, lost in time.
-It's my opinion that with enough time communities are
driven and shaped by the leaders this has at least the
following two aspects
-The leaders (assuming they were elected or emerged from
the community) will strength the core values of the
community (look at it as the identity).
-Previous statement can also be read as: they will make
everything they can from prevent the community to
become something they don't like
How do you prevent people with strong insert here characteristic or property, e.g. technical background and therefore after some time taking leadership from driving the community that way?On the other hand (and I speak for myself here) when I started learning programming I were extremely frustrated with my first Java class for a desktop application, you copy paste something, modify it and then got into a situation where you ask for help.
Years later I did understand all the reasons why my approach was incorrect:
-you can place logic inside the class or outside of it
-You later learn that code should not repeat itself
something called *one source of truth*, how that
drives code from instances to the parents from where
it its inherit
-you later learn or discover that; that's the same
principle behind normalization on databases
-then you learn that behavior respects the same
rules and hence interfaces and contracts
-then you can understand easily mef and maf for
example
-....
for that basic point above I would have need to be told to read and learn about a lot of things, if you get to the other side, the simple question becomes a really long explanation and tutorship about something.Maybe this exemplifies and proves the necessity that can be addressed by a new community, Ask and learn community with rules looking forward to address this kind of learning.
1. fake internet points 2. a genuine interest in the question/problem 3. get paid to do it
I don't know anyone who sticks with stackoverflow very long if #1 is their primary motivation.
And group #3 is a pretty small percentage of users whose companies have off loaded support onto SO, but they are paid real money to answer whatever question someone posts, so they will put up with a lot.
But leaves, in my opinion, #2 is being the majority of people actually answer questions on stackoverflow. Which I think breaks down to an aspect of question-asking that is often overlooked. Given that I am not just waiting around to help you, then it is up to you, question-asker, to motivate me to want to take time out of my day to answer your question.
At the worst, are people who asks questions with a chip on their shoulder, as if the internet is broken or the people who wrote the documentation committed some personal foul against them, and its up to the rest of the internet to make it up to them. I have absolutely zero motivation to help that person. Then there are the people that but no effort into either composing the question or finding thier own answer, a question that can be answered trivially enough by copying the title of the question into google and looking at the results. Again, you have failed to motivate me to answer your question.
Then comes the good questions, the ones that tell a story, that entice me into wanting to help this person achieve their goals. I want to help you, but have other things to do, give me a reason to procrastinate and help you figure out your problem/misunderstanding. Tell me a story of what you are trying to do, what you tried and failed, let me see your thinking process that went into it. It's up to you to build a social bond that I care enough to help you.
That, to me, is your job as "the asker". Make me want to help you, and when it's done we can both feel good about what happened. If you can't take the time to do that, then there is little point in me helping you. I, honestly, have more important things I should be doing.
2. The number one sign an expert is an impostor is the way the play the role of a teacher and student.
3. The main thing I hate about SO is the illogical ban on questions that recommend something. At least 80% of my searches that land on a SO page are like, "this is blacklisted by some troll master, because it encourages people to post links to cool and interesting things that might be outside of the box".
Google is awful for programming research for instance if I look for javadocs it is random if I get jdk 6, 7 or 8.
Same for the other dependencies in my code despite the fact that I use maven so the versions of everything are specified.
The how do I question has to be managed on an individual and project basis because in a certain projects we do it the same way so the system has a property we need and we don't care what the stackoverflowers think...
2) You have to enjoy mentoring/assisting. If you don't, then don't do it, but also obey (1).
These people need therapy. But instead they are encouraged and exploited.
The student learns at the side of the master
The reality of pair programming: "Why doesn't this guy ever wash his hair! -_- "He leads with "I’m not endorsing either side", then proceeds to denumerate every wrong that SO regulars have inflicted on poor, benign newbies, and intersperses it with quotes with hard-working, incipient programmers ( who are, naturally, all from Reddit) who've been abused by oppressed by this ill-tempered cadre of SO devs. Many of them decide to quit the dream they're working so hard at because an experienced developer didn't debug their while loop.
Naturally, he's peddling a book that teaches you how to install a text editor and run hello world. The only travesty here is that he's getting from free publicity for this troll-bait.
It's also ridiculous through how many hoops you have to jump to start programming. Take python, which is touted as a begginner friendly programming language. First you need to install it (most people use windows or os x, which both don't have python 3). Then you need to get an text editor. You're recommended to use the python repl, but it lacks syntax highlighting and autocompletion.
It's a very, very hard problem, though. And computers cannot, in general, figure out what's wrong with broken code.