Has StackOverflow saved billions of dollars in programmer productivity?
skeptics.stackexchange.com
skeptics.stackexchange.com
The site has enabled software vendors to slack off on their documentation. If there was no StackOverflow the vendors would have to do better. I'm thinking of msdn as an example since a lot of the Stack questions are MS technology based. MS is far from alone though. Much of the money saved has gone to vendors.
Even given those points it has still saved a lot of money. But billions? I don't know if it would be that much. It would be interesting to know what the global number for reputation points is. There may be a correlation to money saved.
With open source and sites like stackoverflow, a single programmer can become a team of programmers/knowledge very quickly. It is part of what has made each programmer better I believe. On the flip it has also made programmers more lazy possibly. Finding an answer and being able to solve and provide an answer to the question are two key pillars to providing solutions. So I'd say question answerers and associated companies are getting more out of it.
I've experienced this several times too. In verifying details to make sure I'm not handing out duff information, I've stumbled over a semi-related point in the documentation that triggers a "I wasn't aware of that, I'll have to look into it as it might be very useful" response.
Also I sometimes just browse for interesting questions. You occasionally stumble upon something you didn't know that you needed/wanted to know!
The site has enabled software vendors to slack off on their documentation ... I'm thinking of msdn as an example
The number of questions on SO that can be answered by RTFM is quite remarkable. I think that points to a lot of the documentation being just fine. The last bug of my own I spent any significant of time on was answerable by RTFM [1].There are plenty of PHP+MySQL questions that appear where the OP is clearly learning about PHP+MySQL and the code looks something like...
$result = mysql_query("select username, password from user where username = " . $username)
...shows that they haven't bothered to RTFM [2].[1] I had made a new thread and was calling ShellExecute on it. It didn't work on some computers because I hadn't initialised COM (presumably they had some shell extensions installed). See the first sentence of "Remarks" http://msdn.microsoft.com/en-us/library/windows/desktop/bb76...
[2] Big red box: http://www.php.net/mysql_query
And we as programmers add to the problem. It's not very sexy to say that there is a lot of useful software out there written and documented by smart people and if you read that documentation, and think through a problem with great analytical detail you should be able to find a clear solution.
In fact, it's probably higher than searching SO through Google. This is why I'm hugely in favor of even basic questions getting answers on SO.
(Aside from above) I love Python. I only know enough to get by though. I have this program that runs for a really long time, storing the results of each iteration in a dict. These results are complex python objects, and are meant to be processed later on.
Naturally, I tried pickling them. As the file grew, Pickle quickly became cumbersome. It was a bad idea to read and write something that big every iteration. I started wondering if there was some way to write pickle objects incrementally. Then googled it, and an answer from SO led me to the 'shelve' module. It does exactly that, pickling objects incrementally. Its part of Python's standard library. But it didn't turn up on the first page of google's results. It is described in the docs as a 'persistent, dictionary-like object'. Well, if not for SO, I would have been stuck with the wrong set of keywords to search with. So, my point is, even if things ARE in the manual, it takes some effort finding it. And SO does an excellent job of leading you on to the right places in the manual/reference rather than just looking down upon you for not grokking the entire manual.
This is precisely the sort of bootstrap problem good tutorials are meant to help you avoid. Learning out of a book is not as satisfying as grabbing an interpreter and some example code and just hacking away, but this is precisely a case where the by-the-book method can save you a lot of time and frustration later on.
Another example of a problem tutorials solve is not knowing what 'tasteful' means in a given language. If you don't know what the language culture considers good taste, you'll beat your head against a wall trying to solve problems tasteful developers don't even have, because you're cutting against the grain.
(Yes, yes, a Real Programmer can write FORTRAN-IV in any language.)
Many other languages I've come across have oddities that pretty much require asking someone who already knows the answer.
Not suggesting there's anything wrong with using SO for this but that the cost of reading the manual for these purposes would actually be far lower.
My problem is the duplication of those simple questions: people asking the absolute basics having not bothered to try Google or the site's own search function. They know the right keywords, they've got them in their question, and they'd learn more by looking through the existing answers than by asking a very specific question themselves.
Some people aren't there to learn: they are there to get someone to do their homework/job for them. But many genuinely are and I'd like to help those people where I can, especially those who have obviously given some thought beforehand and articulated their attempt at understanding thus far (it is easier to be helpful in these cases: you often don't have to explain everything in detail you can say "it looks like you've got it almost right, the niggly little thing that you are missing in your understanding is..."). And sometimes even the obvious beginners will actually ask a really interesting question.
From the other side: answers that simple say "Do X" but ofer no further word of explanation are worse than a bad question. A good answer will help the questioner and other passers-by learn from the question+answer, an overly terse answer is just handing the man a fish (and not necessarily the right fish). Luckily there are enough good people contributing on most of the stackexchange sites that the bad answers are outnumbered and the voting system works well enough that the good ones float to the top.
It's even further increased by being able to read the source, but that's even more costly.
And free of vendor BS, too.
And you're a bad person for asking!
Actually that must point to the opposite: that manuals are not information resources that are easily consumable, and hence a new service (Stackoverflow and co.) needed to be developed to "disrupt" this.
The more questions the better IMO, it's just more of a wealth of data to search through and serve to people.
I wish there were better ways of asking more general questions that one just has no idea though (e.g. "How can I send SMS messages from a web site?" Random example of which I have no clue). These are more open-ended, but provide a ton of value. At the very least, they make googling for such things that much easier and direct.
And then there's also the problem of cross-technology questions, where you have a question of combining multiple technologies. These kind of questions are usually a bad fit for documentation.
Every language needs two manuals: A reference text, to teach you what is possible, and a tutorial, to teach you what is tasteful. You should expect people to read the tutorial, but expecting everyone to inhale reference material is a bit much.
(Later, there should be a third book: An anti-tutorial, laying out anti-patterns, or things you shouldn't be doing but that people tend to do anyway, and how to solve the problem the right way, with pointers to other tools if necessary.)
Documentation quality had been declining for many years before SO -- I think its more accurate to say that if vendors were doing better, there would be no (or less interest in) StackOverflow than the other way around.
Edit: Somehow this reply ended up with a different parent than I intended...
That's not a contradiction to the claim that wealth has been created. Of course it has to go somewhere.
There was no claim wealth was created.
"SO has probably added billions of dollars of value to the world in increased programmer productivity."
They just post questions about strange windows problems they can't work around. Somebody on SO will respond with a 1,000 word essay with 500 lines of code about it within a day, thus solving their problem with no employee time "wasted" by thinking or researching or paying for anything additional resources.
Programmer culture involves too much self-glorification & SO embraces that in the hugest way. If the discussions were more interesting it would probably worth more attention but usually it's just some know-it-all quoting docs they just Googled for so they can lock down the question / points. I'm not sure I'd ever want to hire a SO mod...
I had someone add a link to MSDN to an answer I posted on SO a few years back. That topic didn't exist when I wrote the answer - and the subsystem being documented was already fairly old when I wrote about it.
Waiting around for months or years for vendors to get their documentation up to snuff is rarely an option; how many people have ended up reinventing the wheel, badly, because the only indication that it already existed was tucked into a bit of test code collecting dust somewhere?
Every time Apple releases a new version of iOS, I see questions regarding the new APIs being asked and answered on SO... Usually before the NDA is even lifted. "RTFM" is useless if the manual is incomplete or inaccessible until long after the fact.
I get bitter though because any time I post a question that actually requires thought (can't be answered by checking an API) it ends up getting downvoted because you well... actually have to read a paragraph to understand it, I assume. That site has an uncanny ability to trash anything of value so a lot of the time I spend on it I wish I just spent reading programming theory instead of gleaning random bits of knowledge. I guess its enlightening though to see the level of developers & tech engagement in the different communities. It lets you see how active the community is and what level of quality the devs are, basically. (So... more questions doesn't necessarily mean better community...)
& o god lets not even get into the amount of wasted time spent wanting to claw your eyes out when someone (especially mods) say some horribly arrogant thing responding to some imaginary version of your question (i guess they read 2 or 3 words from each sentence?). or they point out some semantic reason why theoretically they're right even though in practice they're wrong and the theory doesn't actually support their argument, it's just agnostic... chills
Agreed, however one answer will help many developers, which should more than offset the initial effort
> The site has enabled software vendors to slack off on their documentation.
Documentation has not deteriorated, in my opinion. In fact, a point could be made that it is now much easier for small vendors to have outstanding developer support through stack overflow. A lot of open source project use it as the main support line.
> It would be interesting to know what the global number for reputation points is. There may be a correlation to money saved.
It is probably correlated to the time spent on the site, but the money saved is certainly not related, as users don't gain any reputation by reading answers or simply browsing the site.
What they do fantastically well is quickly push the stupid questions out of the way and let the good ones float to the top (on the site and in search rankings).
Sometimes I ask questions, and usually receive good answers, but it may take a day or two.
In search results it is an information-dense bible of programming knowledge.
If you click on the feed of newly asked questions, it is filled to the brim with idiots with barely any understanding of programming whatsoever.
The magic of their voting system and google's search algorithms converts the latter into the former.
In addition to that, there's a lot of peer review going on. First posts, late answers, low quality posts, suggested edits, and so on are all reviewed by the community. Once you start reviewing, you'll quickly notice lots of shoddy content.
Some programming language and software product vendors encourage quantity rather than quality in questions posted to Stack Overflow because various popularity rankings use the number of Stack Overflow questions as one criteria when calculating rank.
What Stack Overflow is great at is SEO (not sure if this is organic or deliberate or both). This at least tends to pull interested eyeballs in a kind-of similar direction. What happens then is anyone's guess.
1) Highly ranked answers are often horribly wrong. People asking common questions are, presumably, often being pulled to these answers and treating them as gospel.
2) Once an answer gets "ticked" (even when hopelessly wrong) there's very little that can happen to fix it.
3) Stack Overflow is (actively or passively) good at appearing in Google search results, but not at converging like threads; which thread appears in a search is far from stable, so two similar searches can take you to completely different threads.
4) The depth and quality of threads seems highly language-correlated. E.g. the PHP threads I've seen seem to mainly consist of someone posting bad code they've written and having it debugged by someone else. Javascript discussions are of a much higher quality. Obj-C discussions are another level or two beyond that. (Which says something... perhaps about the awfulness of PHP's error messages.)
That being said, I agree with everything else you've said :)
Billions seems like a lot, but I wouldn't call BS on it out of hand.
Also thanks for teaching me a new idiom :)
Try this thought experiment: if a stack exchange competitor showed up tomorrow, what sorts of features would it have to have to make you start waking up in a cold sweat every day?
One of the things I consider a main detriment of our current product is that for the vast majority of users it's built to be transactional. Search, land on SO, read, go back to work.
On our currently in development mobile apps we're trying out something different, for the first time at scale we're pushing content to users rather than having them search for it as the number one utility of the product. The apps have a "Feed" which is machine learned interesting for you questions.
I love it since I search SO at work but when I get home or am walking around town I can open my app and instantly lose 30 mins (at least) to reading and interacting with very interesting content. I can't wait to see if others like it.
I think SO and Server Fault are the size they are because they have an intrinsic advantage over our other sites. People in the target audience work and live in the same tech ecosystem as a website, with something like physics that's an initial burden.
SE itself also has a high barrier to entry. Every one of our sites has it's own rules and definition of what type of content is acceptable. This is for a very good reason, seeking out absolute answers to questions. Most other websites on the internet live to foster discussion, but we're not a forum.
Making stack exchange a common name (in more than our sizable niche) is one of our company goals, but I don't really know what we can do to get past the initial issue I mentioned and reducing the second would hurt our product.
It's quite an interesting idea to be more proactive about bringing thought leaders to out lesser known sites, I don't know if we could do it just directly since most thought leaders are very busy people who already have a dozen places people ask them questions but it's something to think about. We already consider expertise of contributors in Area 51, our incubator for new website ideas.
Perhaps while we may not be able to get the top 1% of thought leaders onto our websites without giving them a really hard question to answer (my mom loves difficult questions, god knows how many times she used to run into my room and say she solved a question I asked her in passing days prior) but it might be possible to bring in up-and-coming thought leaders. A lot of my friends from the health and fitness industry (were I used to live) might want to use our Physical Fitness Stack Exchange site to foster their own personal brand.
To your initial issue, yes reaching out to the upcoming thought leaders could be great. I know of a few friends in fitness industry who send me thoughts via email. But don't discount the ability for you to get the top 1% thought leaders. Have you tried it? You would be surprised by how many of them actually want to show their leadership and 'help' others.
BTW Thanks for reading my answer. I usually am a silent browser of HN and felt compelled to answer since I have been thinking about this a lot. Would be happy to jump on skype to chat further.
So there's less need to be constantly feeling out new undocumented territory in other professions.
Source: https://www.quantcast.com/stackexchange.com?country=US https://www.quantcast.com/stackoverflow.com?country=US
From the start I've always thought that the biggest danger to SO/SE wasn't failure, you guys are smart enough to see and recover from outright failure. Instead it's reaching a level of success far below what you're capable of.
It seems to me that SO/SE spent a lot of work innovating in the early days but once they found their comfort zone they've stopped innovating. They are good sites for their intended purpose but how much of the original vision has been abandoned? I remember back when you and Jeff were talking about taking over the way all online discussion happened. Nothing like that is even remotely possible with the way StackExchange is today.
To be bluntly honest I think you guys are just lucky that most of the ambitious and competent folks in the industry don't view discussion as "sexy" so you don't have as much ompetition as you would otherwise (quora is practically a joke). But realistically it's just a matter of time until SE will be out innovated.
However, I do hope that we get an even better discussion platform than the ones we have now. I really look forward to even cooler products in the future.
Aren't they now -- or at least Jeff Atwood -- working on Discourse?
See http://discuss.emberjs.com/ and http://bbs.boingboing.net/ for real world implementations. It's very, very cool to see forums being dragged out of the 1990s.
The whole point of SO from the beginning was to build a Q&A site for programmers that didn't suffer from the shortcomings of using apps such as phpBB etc, where threads get hijacked and pages upon pages of extraneous discussion and arguments take place making it difficult to find and answer to a specific problem.
However, when I need to go to work, and my boss decides "So that position we hired you for, now its going to be ruby as well, but later on ObjC and Java.", SO comes to the rescue.
The core concepts of programming languages were cemented in my years deciphering terrible notes and learning to code in college, however the little nuances of each language inherently evade me. This is where SO has shined the most. Most of the time, solutions with multiple approaches suggested show more about the language itself than the problem asked.
[1] The year before Haml was introduced.
But for other answers, to the kind of lazy questions that save me the momentary hassle of consulting the docs, it's also kept me from the serendipitous learning that should happen in that process. Since knowledge compounds and makes it easier to learn other things later, overall I'd say the "lazy questions" on SO definitely have a significant learning opportunity cost.
Will it be a net productivity gain over my lifetime, including learning opportunity cost? Probably, but only because of those insane bugs I'd never solve on my own.
Edit to clarify: I'm not the one asking the "lazy questions" without looking around. But these SO results often rank higher than official docs for my google queries.
As a result something like 85% of my questions go unanswered or are eventually answered by myself. I have stopped answering my own questions on SO because some of the questions I ask and do legwork on I feel I should be paid for since it's shitty lack of documentation from the vendors, so screw them.
So in short: if you are novice engineer (or novice in certain field) then StackOverflow might help. If you are experienced engineer, stackoverflow is useless.
In my experience I have found this to be true. When first starting out stackoverflow was crucial to my learning process, now it seems I've answered all of my own questions the last year or so. And I wouldn't even claim to be extremely experienced. Thus, SO has certainly become significantly less valuable to me, but I would have never gotten this far without SO.
My take is that experience only lowers the value of SO for the particular platform(s) you have experience in. I've found SO very valuable in the last couple of years even though I'm (in general) not a newbie anymore, because I've had to build software for many different platforms like ruby, mac cocoa, ios cocoa, and windows (C#/WPF and C++).
A more constructive way to think about StackOverflow is you give in those areas where you know more and take where you know less.
I feel similarly. I'm uncomfortable asking for help on stackoverflow, a mailing list or IRC if I haven't tried everything I could think of to work something out. I always have this[1] in mind when I do end up writing a question. I almost think it should be required reading.
That is a feeling, not a thought.
http://www.wildmind.org/applied/depression/distinguishing-th...
When I am truly stumped, I immediately start drafting a comprehensive SO question. Nine times out of ten, clearly enunciating the problem leads me directly to the answer and I never even post it.
Saved me time the second time around I guess.
What types of questions are you asking (any examples)? In the time I've been using SO (just over 3 years) I think I've only ever had one question closed (and it was a bad question so they were right in closing it).
You may not be following the guidelines.
Its been a while since I asked questions over there. Haven't logged in for a long time but I do find useful answer through google search quite often. I just don't ask questions. I think its a major annoyance when you spend decent amount of time writing questions only to get your question closed with vague reasons. Maybe I had some bad luck and things might have gotten better? Who knows.
- That as soon as an answer to something is on StackOverflow, it isn't available anywhere else
- That every pageview on an answer saves someone 10$. Everyone running any kind of webpage knows how small of a percentage of the views is from people really trying to use it at all, and likely even among those a large fraction does not have any particular problem, but just view those "top 100 books" etc. mini-articles.
Costs need to think in terms of the entire ecosystem: the time spent creating the answers, the time spent writing official documentation that isn't consulted, and the time saved finding the answer faster. Many technical writers and documentation teams from large corporations have been reaching out to me on this topic, they are definitely interested in learning how to adapt their processes based on Stack Overflow's success.
But not everything is roses. Providing answers can be [slow](http://blog.ninlabs.com/2012/05/crowd-documentation/), unanswered questions are rising, and [users stop doing actions](http://research.cs.queensu.ca/~scott/papers/MSR2013.pdf) that lead to badges as soon as they achieve them. On recent field study at a large industrial company, when learning WPF, they relied on books, and internal seminars to learn new concepts because Stack Overflow at the time did not have sufficient saturation on examples yet. As seen with [another study](http://blog.leif.me/2013/11/how-software-developers-use-twit...) on twitter usage, in some contexts, the subject matter and available of easily accessible experts makes looking online less effective.
I work at Stack Overflow and we are very liberal in sharing our data when it doesn't involve PII. If there is any way I can help you, I am sklivvz@ our domain name.
Or at least so my reasoning goes. So to answer the question, I believe it had done much more than that - stackoverflow drove people to improve their technical knowledge, and that is priceless.
I'm incredibly thankful for the many, many hours that SO has saved me personally.
A lazy debugging practice is to find a question that generally has a subject line almost exactly the same as the error message and pick the first answer, without even trying to understand it. I see the difference personally when I worked on .Net/Java and when I was working on a applet for Gnome. The latter is not very popular and so I have to resort to documentation, IRC etc. I might spend more time initially but I end up reading the documentation, develop a better understanding and even create my own snippets which in turn save me time eventually. To summarize, SO saves time but one might tend to leech on to it instead of learning. I guess some metric of how many times a person revisits the same question might be a good indicator of this.
Not to mention how many times I have seen a comment like, is this homework; show me what you tried, instead of an answer.
I think SO/SE's aggressive discouragement of leechers and high question-closing rate makes their website better for everyone. Except the leechers and "help vampires", that is.
Even with that though, it has undeniably saved me time. All told though, possibly not as much as Google results for blogs talking about similar things, which usually have a lot more context so you can determine if it's still accurate or not. SO has huge bit-rot problems.
If not for SO I probably would have had a lot of 12-hour days of frustration that wound up only being 8-hour days of frustration.
Which is good, like life-improvingly good, because project timelines and estimates don't often budget for the kinds of bizarro problems that sometimes only have solutions on Stack Overflow.
But I think in the long term, when everybody incorporates the same QAOP skills all developers will compete at the same level and new productivity horizons will came.
Your 100% certainty means nothing to me.
> makes my employees and me more productive.
A very strong claim.
> QAOP (Question and Answer Oriented Programming) boosts the productivity significantly.
First Google results don't even know what this is.
Listen, I actually think your claims have merit, but the way you present them is "crap, crap, mega crap". Please cite something we can take take to the manager or test or vet in some other way. Otherwise you comment is just "ME RIGHT. ME SELL YOU SOMETHING".
I am not writing a formal proof here in HN. I have proofs of what I said but don't like to discuss them with you, your reply was rude.
I invented the QAOP acronym just to be funny and illustrate the concept. Your answer reminds me of this Babbage letter: http://www.uh.edu/engines/epi879.htm
Meanwhile, language has been around for thousands of years and is not quite comparable.
Obviously, someone will always build a better mousetrap eventually. They still deserve credit for actually doing it.
I remember when I was using stack overflow for the first time, I asked a really silly question, and got my answer within 1 minute. I thanked that person for helping me with such a simple question, but his reply changed my thinking about the communities and why they help each other.
He just said : "no probs, someone did that for me too".
My primary reason for believing that SO has made a net positive impact on my productivity is that about half the time I google some programming problem, I end up on SO. I'm fortunate that most of my questions (or questions similar enough) have already been asked on SO.
I suspect I've read thousands if not tens of thousands of SO answers, and most of those answers were far more helpful than what I was able to find elsewhere.
I've often wondered why I've never asked a question myself. I think part of it is that I like searching/tinkering to find answers, and I hate waiting. I know it's not the best explanation because I know how quickly some SO questions can be answered.
I guess I should just be thankful there are plenty of other programmers more than willing to post SO questions.
- stackoverflow tends to have the most relevant answer when searching on a programming problem .
- wikipedia tends to have the most relevant answer when searching for broader/more general knowledge, .
Also recently I took up adding details to answers on stackoverflow that help me, or that have incomplete answers.
SO saves time and nerves of countless newbies, myself included from RTFM-ing through each vendor's convoluted ways of presenting messy instructions or being abused on IRC by OP's :)
(note that value for the world as stated in the question is a lot harder to grasp)
At the end of the day it's a matter of knowing whether the programmer was the bottleneck of the productive system he is a part of or if he had slack capability.
EDIT: I was going to post a more complete answer, with references bells and whistles, on Stack Overflow, but having never created an account there I didn't have the 10 reps minimum. Kind of dumb for a question with zero answers IMHO.
Shameless plug - I did some analysis on closed (or low quality) questions on Stackoverflow [0]. I owe immensely to Stackoverflow for my doctoral dissertation.
Below my committee, but above the good people at Dr. Pepper.
I used to trace into disassembled library code to root cause issues. Now that's somewhere between infeasible and impossible. On Android I can sometimes look at the source to solve issues. On closed platforms I have to rely on cut-and-paste from StackOverflow forums.
Commercial software vendors are lucky SO users are doing their documentation and testing services for free.
I have sometimes been answering stackoverflow questions, that I happened to come across and that I knew the answer to. I gave that up because my answers stood next to other people's who obviously spend extensive amounts of time researching and compiling their answer.
I sometimes use stackexchange network (more precisely: tex.stackexchange.com) to provide many, many answers and I have spent hours over hours there, mainly to procrastinate. So, before reading the article, I'd say it evens out. But stackoverflow really helps me a lot.
No weekends, no vacations, and 2 hour daily unpaid overtime. :)
Probably, back of the envelop calculation, with a lot of rounding in the parameters.
a) 45k has not been the average for the years leading up to 2013.
b) 45k is pre tax, 33k is post tax.
c) I suspect that SO is used more frequently by people on the lower rungs of the pay scale.
d) The average for "developer" (which is the biggest group in the stats) is 40k.
As a side note, wow 45k is a massive number.
In other words, if you pay for something that you could get for free with just a bit more effort, how is that saving money?
Anyway, in his twitter TL he has an answer for a quip similar to yours:
> "people probably said similar things about books..."
Yup. Reading books has made people lazier, because if they had knowledge about [topic] they shouldn't be reading about it anyway.
That is, BS estimates of an essentially non measurable factor.
That alone is probably worth $1B+.
If I define taking a piss as saving me $10/hour in productivity, then I can arrive at a number of $2,847,000 saved by me urinating an average of 3 times a day throughout my lifetime. That says nothing about productivity and clearly my piss isn't worth $2,847,000.