10 ms·
Friction Between Programming Professionals and Beginners
- gglitch 11y agoSeems like this article is mainly talking about cognitive dissonance occurring between a hypothetical beginner who imagines Stack Overflow is going to be a congenial conversation, and a hypothetical expert who curates SO as more of a high-viscosity Wikipedia that would ideally be ask once, answer once.
- nv-vn 11y agoI can definitely recall how alienating the stack overflow community was to me when I first started learning programming. You ask a simple question and they yell at you to Google it. You ask a complex question and they ask you why you're doing it. My solution was just to close myself off from StackOverflow and try any other community. My experience with IRC hasn't been great, but often my responses were miles better than what I would get on SO. Honestly, the best advice I can give to beginners is to make friends who know a bit more and go to friends first whenever possible (at the very least to help them make a good SO post with proper terminology, etc.)
- crdoconnor 11y ago>You ask a complex question and they ask you why you're doing it. How is that alienating?
- Armisael16 11y agoBeing dismissed or interrogated for every single question you ask is certainly alienating.
- denis1 11y agoMaybe, but 'why are you doing it?' is a very relevant question. And imo should be the first question to be asked. Knowing why you're trying to achieve something will allow people to provide alternate ideas instead of fixating on the narrow context that you've set.
- Zikes 11y agoMany times I've seen that it's been out of a genuine desire to solve the asker's problem, but the asker has already started down the wrong path and is determined to see it through. 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".
- collyw 11y agoIts not always the wrong path, but the only path available to you if you have a complex system. You could do as the alternatives suggest, but you know that will affect some other part of your system. The reasons for needing a particular soluition aren't always available without more context.
- 11y ago
- adekok 11y ago> You ask a complex question and they ask you why you're doing 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.
- olig15 11y agoI understand where you're coming from, but it's often the way questions are answered that's the problem, as shown in your example. 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'.
- adekok 11y agoThe example was just that.. an example. And a short one at that. It was intended to be illustrative, and not a definitive overview of the problem. 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.
- ska 11y ago"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.
- froh42 11y agoI feel StackOverflow is a bad place even as a professional. I don't agree with 90% of "closing" of questions, frequently closing a question is the ultimate upvote. StackOverflow seems to prefer questions that can be answered by just copying the fine manual - and frowns on those that might involve discussion. From time to time I still use it, but for me it has jumped the shark.
- collyw 11y agoWhere do you go to for answers? I hate the over zealous moderators, but it does end up answering a lot of my programming related questions.
- jschwartzi 11y agoI'm not GP, but I often still go there via Google searches that turn up questions, and then discover that a useful question with a great answer has been closed as off-topic to the programming forum. 90% of the time it seems like a legitimate programming question.
- froh42 11y agoYes, I turn to google as well. That's what over 30 years of development experience give you: You know how to use google to turn up the correct answers. And as I use Java for a living - there's a great decompiler in my IDE. Use the source, Luke. By the way, showing a talented beginner where good documentation is - I think that's frequently the best way to help them along.
- collyw 11y agoMost of the time Stack Overflow answers are top of my Google hits.
- Piskvorrr 11y agoGoogle Search is an elegant tool of a more...civilized...age. A long time ago, it used to have more result pages than the first one. (Technically, it still has them - but nobody ever goes there: just click through the first page results, or try something else.) 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.
- Mithaldu 11y agoThis article fails to notice the primary problem with people learning a programming language. 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.)
- kough 11y agoI'm not sure your analogy between programming languages and spoken languages supports your point. Pretty sure the best way to learn a new language involves lots of time practicing speaking. The analogy would then support trying to program as much as possible in a new language, rather than just reading books about it. Not sure if this was supposed to be a joke; I thought it was fairly well established that it's common and even encouraged for new programmers to start exploring and writing programs as soon as possible. Am I misinterpreting your comment?
- Mithaldu 11y ago> Pretty sure the best way to learn a new language involves lots of time practicing speaking. 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.
- kough 11y agoI dont think we're disagreeing. I don't suggest speaking practice to the exclusion of literary practice. In this comment you acknowledge the importance of speaking practice. That's what was missing from my reading of your first comment. I responded largely because I understood your comment to suggest (explicitly and through analogy) that new programmers study books before attempting to write code and interact with the community. Cheers, sorry for the confusion.
- mhurron 11y ago> Attempt to answer the question, or don’t comment at all. Don’t tell them to RTFM, Google it, 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.
- hellofunk 11y agoI would say that the real help lies in between. You don't go out of your way to explain something that is explained somewhere else already. But, you can go out of your way to show the person where it is explained or even what to search for. Researching a problem on the internet is a skill that needs to be learned; a meta-skill, if you will. Whenever a developer has told me in the past to RTFM, aside from the rudeness of this abbreviation, it really is no help. If they gently said, "the API docs for the UIViewController class, which are located <here>, shows the function in question, and how it is used." etc.
- mhurron 11y ago> Researching a problem on the internet is a skill that needs to be learned Which will never be learned if you never have to do it.
- dustingetz 11y agoDoes this generalize to diversity? Friction between people of diverse background and mindset.
- renlo 11y agoStackOverflow is a good place for intermediates and up. IRC is a better place for beginners, but truly if people are just starting out they need a dedicated teacher, or they need a good manual / tutorial that they read front to back. Most beginners don't read the manual / tutorial front to back; they try things immediately once they've read about them and their code understandably break. In this case they need a dedicated teacher, a person they can ask uninformed questions to. StackOverflow is the wrong tool for that.
- lists 11y agoSpeaking from my experience as a self-taught programmer, IRC convos generally follow the same trajectory as OP specifies.
- AndrewUnmuted 11y agoAs a kid, it took me a long time to learn to program because I was constantly fighting the very things that this article brings up. You can chalk it up to youthful arrogance. When I dropped my attitude and realized how wrong I was (around age 17, when many kids finally do this) I finally became a good programmer. I tried for nearly five years as a kid, but my naievete got in the way. 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.
- adekok 11y agoI agree 100%. I run into this every day. 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.
- diezge 11y agoThe problem is a lot of people misinterpret what StackOverflow is supposed to be - a repository of programming-related questions/answers that are useful to more than one person. 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).
- Piskvorrr 11y agoAlready done, and it's apparently RFC 1925 §6 - turtles all the way down. Now the problem is one level down the stack (pun not intended), with "newbies won't read http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/how-to-ask and get offended when prompted" instead of "newbies don't know how to ask and get offended when prompted".
- lambic 11y agoSome suggestions for the beginner asking questions: 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.
- deleted 11y ago[deleted]
- JayDouglass 11y agoSO is not for beginners, because beginners do not know enough to ask the right questions.
- sergiotapia 11y agoI joined StackOverflow when it was about 9 months old, it's completely different now and I would not recommend it for new developers. The vast majority of moderators and people who close questions are among the worst dweebs I have ever spoken to online. 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.
- legulere 11y agoIt's almost laughable that there's no work to identify the most common mistakes beginners do and let compilers etc. explain them. You probably could catch most of them. 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.
- teach 11y agoThere actually has been quite a bit of work on this front. DrScheme, for example. It's a very, very hard problem, though. And computers cannot, in general, figure out what's wrong with broken code.
- Piskvorrr 11y agoSure, it's a very hard problem to solve. It's much easier to warn against 80% of potential errors - the algorithm isn't "smart" enough to fix them, but is smart enough to give the developer a push.
- Piskvorrr 11y agoSeriously? Most IDEs do precisely that, and compilers do explain them. Eeeeexcept...their explanations are called "warnings," and ignored as such.
- gglitch 11y agoThis discussion is making me think that Stack Overflow has a solid opportunity to rethink how their architecture/approach could be redesigned to minimize questions that get closed due to redundancy or other reasons. One could indefinitely kick the can by saying the user should have known how to use SO better, but the questions keep popping up and getting closed. I for one personally have only ever found useful data downthread in closed questions. You could say that means the design is working, but it would still seem like a ridiculous, even risible design.
- jejones3141 11y agoA worthwhile article; thanks. I do think it could be improved with a link to esr's "How to Ask Questions the Right Way".
- fridek 11y agoThis is just a tip of the iceberg. Junior questions on stack overflow and general attitude towards learning people how to work with the vocabulary and the basic concepts are sort of addressed by many great tutorials (codecombat.com <3), podcasts and in general helpful people that are out there. But try to even formulate an advanced question, like "how should I fit this idea into my existing 200+ classes system". Even if you describe your problem in less than one page of text, there is no place to ask how to design stuff. I suspect most people just make enough mistakes to become this senior architect person who gets to say "oh yes, we did try that in the 70s, it won't work because X". </rant>
- Piskvorrr 11y agoPerhaps that is another issue - "MYYYYY question was cloooosed, that is a MORTAL INSULT TO ME" instead of accepting that mistakes do happen, and even I make them. Did I go out to find knowledge, or did I actually want a pat on the head for being a good schoolboy who never makes a mistake? 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?).
- doktrin 11y agoI guess I'm going to be the asshole today : 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.
- blueatlas 11y ago"I also don't understand why there is a constant push to coddle beginners to increasingly absurd degrees." 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.
- doktrin 11y ago> 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? 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.
- xlayn 11y agoWhile it address the situation on stack overflow, this is a problem in general with communities: -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.
- j45 11y agoI find beginners also can adopt this know it all attitude, and if something isn't in the scope of their understanding, it's either not relevant or capable of being understood. Curiousity, interest, cooperation is the key of creating new beginners.
- PaulHoule 11y agoCode your way out of this one. 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...
- AcerbicZero 11y agoPersonally, I find StackOverflow to be one of the most useful online resources for general/random programming questions. Its not a place that tolerates a great deal of willful ignorance, and does almost nothing to help you if you're not willing to help yourself. 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.
- ctstover 11y ago1. Sounds like a market opportunity for a beginner oriented forum, that somehow incentivizes experts to help constructively. 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".
- Piskvorrr 11y agoSO was never supposed to be a site for Eeeeeeeverything And A Kitchen Sink. "Cool and interesting things outside the box" is pretty much Reddit's tagline.
- known 11y agoPair programming is suppose to fix it.
- ktRolster 11y agoThe ideal of pair programming: The student learns at the side of the master The reality of pair programming: "Why doesn't this guy ever wash his hair! -_- "
- badloginagain 11y agoThe absolute worst experience is when the top link on Google is on a Closed/Duplicate/Invalid Stack Overflow, where the answers and comments are all on how the question is bad- especially when the question is almost verbatim to the search. 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.
- sanderjd 11y agoI enjoyed this article a lot. It has some really good advice on both the beginner and professional sides that I'll definitely be keeping in mind going forward. 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.
- Shog9 11y agoOver the past few years, we've put together a couple of (reasonably short) guides to asking questions on Stack Overflow; if you're a beginner (or simply struggling to learn the Stack Overflow way of doing things), it wouldn't hurt to read them: - http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/how-to-ask - http://stackoverflow.com/help/mcve 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.
- aje404 11y agoI don't really think this article warrants a serious conversion. 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.
- gravypod 11y agoI consider myself a fairly seasoned programmer. I have written countless lines of code, work on a few projects with friends, and automated most of my computer-related tasks. I've been doing this since I was 12, and I am 19 at the time of writing this. 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.
- Flimm 11y agoI have had a couple of my questions closed for reasons that I disagree with, so I can sympathise there, but to me it sounds incredible that someone would be banned just for asking programming questions. You say you think you've been banned, could you check and let us know what actually happened? Did you really get banned?
- josephg 11y agoJoel Spolsky gave a great talk a few years ago about the design of StackOverflow. Three groups of people are involved in every question on the site: the asker, the people who answer and the people who read the answer later. Which group do you think the site is optimised for? 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 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. )
- cableshaft 11y agoYou're right. SO is optimized for people who read it later. I.e. people who will Google their problem, get directed to the question...and then want to throttle you for answering "Just google it." 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.
- swayvil 11y agoThe "Programming Professional", as a rule, suffers from a kind of mental disease. He is deformed, clumsy, awkward, violent, narrow, infantile, dwarfish and wretched. These people need therapy. But instead they are encouraged and exploited.
- Xcelerate 11y agoGenerally speaking, I agree with the article. For some reason, there seems to be a widespread attitude of "meanness" on the internet (actually, perhaps that's just people in general...) 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-typing 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?
- pmarreck 11y ago1) Wheaton's Law. 2) You have to enjoy mentoring/assisting. If you don't, then don't do it, but also obey (1).
- agentgt 11y agoNot that it justifies the behavior I'm curious if there are any disciplines of where there isn't friction between professionals and beginners. In academia I noticed a similar friction. I would imagine politics to be similar... sports... they won't even let you play if your not good.
- alexchantavy 11y agoThe programming professional culture described in the article is a grown-up version of hacker culture seen in old newsgroups and IRC rooms. It's somewhat of a rite of passage for a beginner to first lurk in these communities and learn just enough to know how to ask the right questions to not get yelled at.
- ktRolster 11y agoOh, you reminded me there's actually a tutorial for that: http://www.catb.org/esr/faqs/smart-questions.html http://www.catb.org/esr/faqs/smart-questions.html
- s4chin 11y agoAs a self taught programmer, I went from a beginner to an intermediate level by learning from websites and books. My suggestion to beginners would be to read some stuff about the technology they want to use, then read and implement a few tutorials where they will make example apps, etc. This clarifies the terminology and makes it easier to describe the problem, read docs, etc. Because 99% of beginner problems have already been answered on StackOverflow. I have had some bad experience with SO but it was mostly due to not searching properly. I definitely understand how beginners feel. But if someone kept asking me how to reverse an array in C++ repeatedly, even I would be pissed.
- nanodano 11y agoI've been programming for ~20 years and I use Stack Overflow ALL THE TIME. The thing is...I've literally never ever posted a single question. Everything I've ever asked has already been answered.
- mettamage 11y agoI am surprised that no one linked the What Have You Tried article by Matt Gemmell. http://mattgemmell.com/what-have-you-tried/ 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.
- jrs235 11y ago"Beginners need to understand: why would I put more time into solving someone else's problems than the person asking me the question?" Is this because of how pervasive instant gratification [and entitlement] have become?
- mettamage 11y agoWhy would you call it instant gratification if the question also applies to when the expert is a beginner in another field? Also, edge cases should be nuanced. For example, typing up an answer in 2 minutes since you know a lot about the problem area in general, while the question was one sentence. 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.
- jrs235 11y agoI should have been more clear. Because of the pervasiveness of instant gratification (and entitlement) in society today, does it seem like those asking questions, strike that, wanting answers just want the answer to their immediate "problem" without having to invest their own time in researching an answer and even minimally writing up what they have already tried/done to find an answer? >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.)
- 32bitkid 11y agoThere are only three reasons why people answer questions on stackoverflow: 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.
- padseeker 11y agoWhat are the three great virtues of a programmer: laziness, impatience, and hubris? 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.
- frotak 11y agoI suppose I have a hard time empathizing with the archetype of the beginner as presented in this article due to just how markedly different my own experiences developing as a programmer were. 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.
- AndyKelley 11y agoI appreciate the discussion this article is bringing to the table, and I mostly agree with it. I'm going to pick on the one thing that I disagree with. 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.
- greenyoda 11y agoExactly. When I'm helping people solve problems, I find that "why would you want to do that" is one of the most useful questions to ask. The questions that people ask are very frequently about preconceived notions of what the solution to some problem should look like. If you ask about what the actual problem is that they're trying to solve, you might be able to suggest a much better or simpler solution, or inform them that the problem is solved already (e.g., there's a method in the API that does just what they're trying to do).
- jjuhl 11y agoAll I wish for is that more beginners would read (all of) "How To Ask Questions The Smart Way" http://www.catb.org/esr/faqs/smart-questions.html http://www.catb.org/esr/faqs/smart-questions.html before asking. That would help a lot I believe.
- onetimePete 11y agoThe RTFM reply s are the equivalent of teaching a man locked in a box to become a magician, by putting a Houdini-manual on top of the box. 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.