I've pretty much made a home of Stack Overflow — the modern age's answer to Experts Exchange — over the last year and a bit. From arriving in January 2011, I swiftly began answering C++, PHP and jQuery questions and asked a few of my own. By yesterday, I'd accrued 53,733 reputation points, 6 gold badges, 62 silver badges and 132 bronze badges over 2,045 answers and around 30 of my own [all but one high-rated] questions. I consistently fell within the top 0.1% of users over a quarter by reputation points. I'd made hundreds of gnomish edits across the c++, php and jquery tags and posted more than a few fleeting bug reports and discussion threads on Meta Stack Overflow.


Now, I'm not the first: sbi scaled back his contributions last year due to concern over the site's direction; Neil Butterworth and Roger Pate both ceased their activity too; other high-profile users whose names I've forgotten by now got tired of spending their energy on SO and threw in their hats. Even co-founder and super-admin Jeff Attwood left the site's parent company at the start of this month (though that likely had more to do with time and work constraints than much else).

So why did I do the same thing yesterday?

Stack Overflow is, on the surface of it, a great idea. On an saturated internet populated by hundreds of thousands of programmers and coders at all levels, it's difficult to find a forum of any kind whose signal-to-noise ratio isn't over the human safety threshold.

What do I mean by noise? I mean the low-quality, repetitive starter "questions" that post a block of poor code strung together from ten minutes reading an unauthoritative tutorial, asking "why doesn't this work?" No particular debugging effort has taken place, and the user in question would rather just "ask the internet" for "help" than set aside a few months to read a good, peer-reviewed book and properly learn the subject in question.

Here's where the problem lies; several, actually.

Problem 1: Laziness

I was recently witness to a teenager with a brand new tablet PC that needed to be configured get very frustrated when the work needed to configure it properly ended up taking more than a few minutes. Half an hour of software updates over a slow DSL line solved all the problems, but those thirty minutes had evidently been incredibly painful. The teenager had all but given up on the entire project after five minutes and, if it weren't for the fact that I was already on the job and had the tablet in my own hands, I'm sure it would have been shelved entirely for the day.

The information age seems to have bred laziness and entitlement into the latest generation. Why set aside time to properly learn something, when you've been brought up in a world where you can look up "facts" on Wikipedia in seconds? Of course, programming is about far more than just "facts": in fact, it's an art. And an art needs to be studied and learned.

Problem 2: Selfishness

Certainly everybody is entitled to their opinion, but mine is that there is a time and a place for everything, and if there is to be no place for quality, high-level discourse between mid-level and experienced programmers only for fear of offending the entry-level coders or sending them back to the web's advert-laden discussion forums, then that's a shame. This standpoint is still seen as "elitist" by many, but it's not.

Stack Overflow — for me, at least — started out as one of these places. After all, we say it's "not a forum" and that's not just because of its layout and posting mechanics. Inevitably, a successful programming Q&A gets famous enough to draw in anybody with a programming problem, because it's pretty much guaranteed that you'll get your programming problem solved in mere minutes if you post it on Stack Overflow.

But that's not what the site is. At least it's not what it used to be, it's not what I want it to be, and it's not what I think it should be. It's explicitly not www.debug-my-code-for-me.com: there's a question close vote reason called "too localised" for questions that wouldn't contribute to the site's archive of programming Q&A, and/or help anybody else at a later date. Dumping a link to a pastebin.com snippet and asking "why doesn't this work? solve my problem for me" clearly falls under that category.

Too many contributors now, though, are transfixed on the idea that "this site is here to help people" and that, as long as that goal is satisfied, that is enough. They jump on the "elitists" who disagree.

Problem 3: Expediency

But "help" is a very broad word. It's one thing to help somebody to learn and become a better programmer, and to learn something about a programming language; it's quite another to throw the code at them that fixes their problem, allowing them to skip — and never gain experience in — the critical steps of research and debugging. The IT industry needs more developers who know how to fend for themselves, who know how to use a debugger and who know how to apply their own critical thinking skills to solve a problem. These "helpers" are only doing the industry a disservice by encouraging this new lazy generation not to think any further than "I'll just tell Stack Overflow" when their 200-line program yields a segmentation fault.

My reaction

Ultimately, this is all just my opinion. I believe it staunchly and wholeheartedly, but it's just my opinion. It's one that seems to be shared by fewer and fewer of the contributors left on the site. It should be obvious that those spending the most time on the site would feel the most strongly about how their time is being used, and what the worth of the result really is. On a Stack Overflow that's flowing quickly away from the site that I believe it should be, I've been becoming more and more disillusioned about the hours that I spend adding to its value every day.

But, as a slightly obsessive Senior Software Developer, it's difficult to just leave a site. Since the start of last year it's been a core part of my daily routine; even after removing a button for it from my browser toolbar I'm still finding myself trying to click on it every ten minutes or so.

And, yes, the draw of gaining reputation — literally and figuratively — and in showing off technical accumen, as well as building up a portfolio of thousands of well-written technical explanations that might one day be shown to someone as some kind of proof of knowledge, cannot be ignored.

Consequently, I'd held on for a few extra months. But, having recently enjoyed a drawn-out debate with several people on the subject — including some over-zealous moderators — I've decided that it's just not worth it any more. It's a thankless job answering all those programming questions, and it's more thankless still having to try to explain myself every time I lightly berate a poster for not performing the most basic of critical thinking before posting (and such comments are usually upvoted several times before the nay-sayers step in).

So, I'm stepping out. I'd thought about deleting my account entirely but, as a natural hoarder, I couldn't bring myself to lose all that hard work. And who knows? Perhaps in a few months I'll give in and return to submit to more abuse for a few months, just for that occasional fleeting glimmer of glee at knowing that I've posted a top-quality explanation of some arcane technical limitation in one of the programming languages with which I am quite familiar. But, for the time being at least, I simply can't allow it all to get to me any more.

And if I have to re-configure my firewall to implement my choice not to do it any more (I do), then that's just how it is.


And, yes, I'm sure it's deliberately ironic that I made my blog typography imitate SO's.