Stack Overflow and the Zeitgeist of Computer Programming (priceonomics.com)
An anonymous reader writes: Stack Overflow remains one of the most widely-used resources in the developer community. Around 400,000 questions are posted there every month. The Priceonomics blog is using statistical analysis to ask, "What does the nature of these questions tell us about the state of programming?" They see tremendous growth in questions about Android Studio, as well as more generic growth in work relating to data analysis and cloud services. Topics on a significant decline include Silverlight, Joomla, Clojure, and Flash (not to mention emacs, for some reason). The article also takes a brief look at the site's megausers, who receive a lot of credit for keeping the signal-to-noise ratio as high as it is, while also taking flack for how the Stack Overflow culture has progressed. "Others are worried about how Stack Overflow has impacted programming fundamentals. Some critics believe that rather than truly struggling with a problem, developers can now just ask Stack Overflow users to solve it for them. The questioner may receive and use an answer with code they do not truly understand; they just know it fixes their problem. This can lead to issues in the long run when adjustments are needed."
Can you tell me how to finish my homework assignment for Script Kiddie 101?
For me, I use stack overflow for library related issues, not language related. Dealing with bullshit subtleties of things like jQuery, instead of fucking around for hours trying to figure out why a particular function has a weird ass edge case, someone else has already figured it out and documented it. It just so happens that said documentation is the comments within StackOverflow.
The best-rated answers aren't always the most effective or maintainable, but they do tend to be the ones that look neatest at first sight, and almost invariably are written by someone already with a high score.
When I was a junior developer, I used to think that this this sort of thing demonstrated the hypothesis about most programmers being mediocre with a few stars. Now I learn that's it's just a small subset of people have a lot of time to spend answering cookie-cutter questions and know how to express confidence in their solution, and you get the Wikipedia effect where one bad answer has been given and suddenly everyone else is repeating it as gospel - not realising that it's because they all got the bad answer from Wikipedia/Stackoverflow/whatever peer-to-peer collaboration site is relevant to the field.
The complaints remind me of the old usenet groups, especially C and perl programming. A few people appointed themselves to be the arbiters of what could be posted, and flamed anyone who didn't meet their personal standards.
On the other hand, take away that moderation and the site quickly degenerates into what /. has become. Given the choice, I'll take StackOverflow the way it is.
Indeed, a good programmer will be able to adjust the answer give to fit their needs. It is no different than many of the O'Reilly press books that walk you through a project.
Yup, you're right. Program or die. That's certainly the way it is where I live...even if it's my own projects -- ESPECIALLY if it's my own projects.
This is probably not going to be a popular opinion here, but I have a low view of developers who spend an hour writing code they could have copied off the internet in 5 minutes. Yes, there is no replacement for discernment. You shouldn't Ctrl+V code you don't understand. But to not even try Googling it indicates, to me, someone who is more interested in padding their hours than getting shit done. The solution, once arrived at, is probably not novel or better than what's out there, anyway.
This is to say I prefer to spend my hours on problems the community has not already found to have a ready-made solution.
On the flip side, programmers may receive better answers on SO than the ones they had come up with themselves, and gain new insights in programming patterns, use of SDKs, etc. That sort of learning and sharing of knowledge is encouraged and facilitated in other fields for good reason, and I've learned a good many things that way myself. As long as the answer explains or shows how to solve the problem instead of actually solving it completely. Post text or pseudocode rather than complete working code fragments. Same way you teach your kid how to fix a punctured bicycle tyre: don't fix it for him, but let him fix it under your guidance.
If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
Duplicate questions are discouraged on the site. This is problematic because the accepted answer will remain the apparent authority even while languages evolve or APIs change. I see it happen a lot with jQuery, for instance.
Well, sometimes the replies are amazing. "This is an undocumented way the compiler actually works" or "the debugger is actually crashing here, the reasons why are X, Y or Z, good luck.
Sometimes the replies make it easier to figure out how to use a library.
Sometimes they point to papers on algorithims I never found on my own.
But you have to be able to read it to separate the signal from the noise. It's more like the Physician's Desk Reference. Great if you're a doctor, maybe only as useful as WebMD if you're not.
Your ad here. Ask me how!
"I have Requirement to build Python website. Provide info on how to write the Python. Please do the needful."
FTFY - Which, coincidently, was a question I read on the Python email list this morning.
Some critics believe that rather than truly struggling with a problem, developers can now just ask Stack Overflow users to solve it for them.
Get a load of these guys. As if "struggling" should be applauded and praised. I understand that there's a certain skillset with generic problem solving. The first step is to consult the grand answer of questions, the google, and see if this is common knowledge. IF NOT, the second step should be to ask for specialized knowledge, which is where stack overflow (and more broadly, stack exchange) excels. Another great resource for that second step would be your co-workers, peers, or teacher. Because this is how you learn. After that, sure, it's a hard problem you actually need to develop something novel or drill down to the root problem.
Hey, there is certainly variance when it comes to how tenacious people are. And it'd be great if people followed up the solution and figured out that "why" portion. But that doesn't mean we should snub those asking questions. You can lead a horse to water, etc.
Do we REALLY want a billion people banging their head on a brick wall just trying to find out why their string needs to be null terminated? Can't we just tell them?
(Also, it's a communally generated users-manual for WAY too many projects out there. MSDN sucks)
Emacs questions may be lacking because it has a dedicated stackexchange site of its own.
"Others are worried about how Stack Overflow has impacted programming fundamentals. Some critics believe that rather than truly struggling with a problem, developers can now just ask Stack Overflow users to solve it for them"
It's pretty rare that someone will discover on their own a better solution then a more experienced developer. I have learned quite a lot looking at other's solutions to a problem... in particular where the tool is not the best for the job.
love is just extroverted narcissism
Can't we just tell them?
Lord no, if you know information, you have power. You cannot just give your hard earned power away to just any pleeb that has the gumption to ask. Also:
"Some critics believe that rather than truly struggling with a problem, developers can now just ask Stack Overflow users to solve it for them."
Couldn't this also be extended to books? I mean, how are you truly learning anything if you can just pick up a book and read about how to solve a problem? These 'critics' are just obstructionists who are afraid of sharing information and allowing more people to be effective coders. Yeah, sure, there will be some bad coders who don't understand what they are doing, but really, who cares? The site has and will be an excellent educational tool for a vast number of people.
Good coders don't have to rely on hoarding information to be good.
HA! I just wasted some of your bandwidth with a frivolous sig!
1. Often leads to mixed up styles and programs that are spottily documented.
2. Tons of example code does little to no error checking.
3. Plus many times when I clean up from example code programmers they haven't really stepped through the new code very well. They get in a hurry meeting the insane deadlines they feed to business and fuck up.
4. Do you really understand something if you cheat on it? How do you really know what you know and don't know if you can't do it yourself (this a serious fucking problem, very few people can truly estimate what they do and do not know) ? That is like saying, why do all of the homework that has been solved before.
5. Leads to the "Then why not use libraries for everything" kind of mentality that we have at my work.
Still beats expert sex change.
If you paste code you don't understand, then you're in trouble.
Of course. But most Stackoverflow answers include comments (written by the submitter, or appended by others) that explain why the code works, what the limitations are, and any gotchas that need to be considered. If I write the code myself from scratch, by reading API docs or whatever, I don't benefit from that collective experience, and I am likely to understand the problems with the code even less. There is nothing noble about "struggling" with code, and that does not necessarily lead to better understanding.
but you should understand anything you put in your own codebase.
Yes, yes, of course. But there is no good reason that a solution from Stackoverflow should be less understood, and plenty of reasons it will be more understood.
Very often "collective experience" is wrong
But is it more or less likely to be wrong than a roll-your-own solution? Solutions on Stackoverflow are rated and moderated, and written by people with visible reputation points.
If you were a tech manager, and you had two candidates: One that claimed to use Stackoverflow regularly, and one that claimed to avoid the site, which would you hire?
Yesterday there was a post titled "The History of SQL Injection, the Hack That Will Never Go Away ".
Someone raised a good point that the problem was more economics than technology.
Employers, with no clue about technology, "employing monkeys and paying them peanuts" to produce something that looks visually ok but hacked into existance underneath.
We, programers, work in an unregulated profession which keeps it dynamic, fast paced and forever evolving.
Regulation = stagnation
So, yes, there's a lot of crap code out there and it won't go away - live with it.
Without Stackoverflow years of man hours would be wasted struggling to figure out some problem that has already been solved by someone else.
Wasn't that the idea behind the free software movement, not having to re-invent the wheel each time?
What about re-debugging, re-attaching, the wheel each time?
If the strength of our profession is in the fluidity, speed of adaptation and evolution then something like Stackoverflow is essential.
If you really need the accreditation of a regulated profession then ask an interviewee for their Stackoverflow account to see what questions they've ask and answered.
Stackoverflow is the best thing that's happened to our profession that I can remember in my 25 years as a programer.
You overstate the capabilities of stackoverflow. I have 30K+ karma there. Right now the most upvoted answer to "How do I track location with GPS on Android" is badly broken. It has been for 5 years. I've wrote my own answer to combat it, but as the original answer is 5 years old it doesn't get the upvotes it needs to drown it out. I see questions on how to work around the bugs in the original answer on a weekly basis, still can't kill it.
Just because an answer is highly upvoted, used, or commented on SO doesn't mean its right. It means its worth looking into. But using it without testing and understanding is unprofessional and will cost you more time than you'd save by using SO.
Also- I almost never see comments about why code works, limitations, etc. Sometimes it happens, but not all that frequently.
I still have more fans than freaks. WTF is wrong with you people?
I've been posting/moderating slashdot for years, but just started with stack overflow. Here's my experience.
I definitely agree with and have seen what the articles are driving at. In particular, the "The Decline of Stack Overflow" is absolutely 100% on the money.
I answer questions. At least five / day. In a short time [about a month], I amassed 1000+ rep points. I'm now in the top 0.5% for the quarter. The article's comment about "SO hates new users" is true. Before I got to this point, I used to have more difficulty with certain people. As my point total got higher, the snark level went down. Ironic, because I was doing [trying to do] the best job I could at all times. My answers didn't change in terms of quality, just the tone of comments I got back.
When I post an answer, I take several approaches. Sometimes, a simple "use this function instead" is enough. Sometimes, "change this line from blah1 to blah2". If the OP has made an honest effort to be clear, but the posted code is way off the mark (e.g. has more than two bugs), I'll download it clean it up for style [so I can see OP's logic before I try to fix it], fix the bugs [usually simplifying the logic] and post the complete solution with an explanation of the changes and annotations in code comments.
This is the "cut-n-paste" solution. I may be just doing somebody's homework for them. But, usually, it's just somebody who spent days on the code and is "just stuck" [I've asked some OPs about this]. The controversy is that "if you do that, they'll never learn anything". Possibly. But, it's part of my judgement call on type of response to give. IMO, in addition to research and traditional classes/exercises, one of the best ways to learn is to read more advanced "expert" code. Compare one's original to what the expert did and ask "Why did they do it that way?!". This may foster more research on their part and they will have an "AHA! moment"
Unlike slashdot, one can edit a post [either a question or an answer] and you can delete them. Comments can edited for five minutes and deleted anytime. Now this will seem goofy: If you comment back and forth with a given user over an answer one of you gave, either a collegial discussion or a flame war, eventually an automatic message comes up asking if you'd like to transfer your "discussion" to a chat page. Also, because comments are limited to 500 chars, I sometimes have to post a partial, incomplete answer because what I need to say needs better formatting/highlighting than a comment and wouldn't fit in a comment, even though it's more appropriate as a comment.
The goofy thing is that you start with 1 rep point. You can post a question or a full answer. But, you can't yet post a comment!?
On SO, people edit their questions and answers, based on feedback in the comments. The answer may be edited several times before questioner accepts it. Sometimes, for complex questions, it can take a day or two to come up with the right answer.
Despite all this, once and a while, I get a "heckler" who doesn't like an answer [even though it's correct]. It goes several rounds in the comments, usually the other person doesn't understand the problem space enough to realize the answer was correct [or more subtle than they realized]. So, it goes back and forth, and each time I explain how I was correct, adding clarification or highlighting what I said originally. Eventually, the heckler says "Your answer doesn't answer the question". This is for an answer the OP questioner has "accepted" as the best one.
I've seen reasonable questions downvoted within minutes [I upvote them back]. I've seen people threaten to close the question as unclear, requires opinion, or can _not_ be answered as described. The last one is funny, because the question is clear to me, and I provide a correct answer [that eventually gets upvoted and/or accepted]. Sometimes I send the commenter who is threatening doom a message [you can direct a comment to
Like a good neighbor, fsck is there