Stack Overflow – social media brilliance for the working programmer


Note: this is a rewrite of Take 2 of this post. An earlier, incomplete version was published accidentally, and then found its way automatically into the DECO3500/7350 feed. There was nothing I could do about it except to create a new, better, less typo-ridden blog post, and delete the original.

DECO7350 was one of those subjects which included group project work as assessment. The goal was to create a prototype for a social and/or mobile computing application. 

Many of my subjects have programming assignments – unsurprising when one chooses to do a degree in Computer Science. I've used Java for two courses this year and C# for "Service Oriented Architectures". Then there are other subjects such as this where coding is just useful, not mandatory. For the group project, I'm doing a little bit of server-side programming in Python and Django. It's kind of fun.

However, programming is never 100% all-the-time fun. All too often, I encounter seemingly insurmountable obstacles that prevent any progress. There's a problem that has to be solved, but there's too many variables that have to be constructed in a certain order, and too many classes that interact in mysterious ways. Dazed and confused, I often go for a long walk or a coffee or a long walk to a coffee. But after a short, self-administered break, I ask myself questions like these. "Has the problem been encountered before? If so, is there at least one solution, if not more? Are any of these solutions elegant and simple?" Most importantly, "Am I alone in encountering this problem?"

Fortunately, nine times out of ten, I know I am not alone, because I have seen this very same problem addressed, solved and bulldozed aside at Stack Overflow. I can't praise the site highly enough. It has saved me a lot of hassle and time this year.

A question asked about C# MVC controllers
Stack Overflow

The idea behind Stack Overflow is simple: a user comes by and asks a question about code. Users look at the question, and try to answer it, and there may be several answers per question. The code can be in any language, on any platform, and with any framework, although more popular combinations of the three will get more responses. The question could be a simple "How do I do this?" However, it is better manners to attempt a problem before calling for help. That's why questions of the form "I want to do this, so I have done that, but I get this error: how do I go on from here?" are generally more appreciated than the "How do I do this?"

Unfortunately, "What's the answer to this question?" websites are not guaranteed to work, especially with large amounts of users. There are too many people with mischief or malice on their mind: trolls that call the questioner an idiot, and spammers that pile on their "solutions" without even attempting to comprehend the questioner. Even well-managed websites that attempt to keep out the "riff-raff" have their own issues. Take the ASP.NET forums, which attempts to help users code with Microsoft ASP.NET and related technologies. I have not been impressed; in fact, I have often been downright contemptuous. There have been too many times where a question has been answered with "You can't do that", quoting some Microsoft API page, without attempting to read the original question. It's a wretched hive of laziness and mediocrity.

How does Stack Overflow avoid this situation? Users can up-vote or down-vote anything. Smart questions get up-voted; dumb questions get down-voted. Excellent answers get up-voted; lazy answers get down-voted. In that way, users gain reputation, and the trolls, spammers and even the well-intentioned mediocrities get short shift. Users can also get badges like "Custodian", but it is the reputation scores that really drive them to do their best. It helps that the membership of Stack Overflow are technology-skeptics, unlike the Microsoft fanbois at ASP.NET. There may be many users that work with C#, and even enjoy doing so but are always willing to critique the top-down APIs supplied by the Beast of Redmond.   

I should add that Stack Overflow uses nice stylesheets. Commentary is clearly distinguished from code, the latter which uses syntax highlighting to differentiate keywords from variables.

I've used Skirky's A Group is its own Worst Enemy before to slag off YouTube, as it fails on all four of his "Four Things to Design For". In contrast, Stack Overflow has a 100% success rate by these rubrics.

  • Handles the user can invest in: there's a lot of information on a user's information page, and it would be a shame to lose it all if the user wants to change the handle. Take Platinum Azure, where you can see all the questions he asked, the questions he's answered, where he gained his reputation, and all the badges he picked up along the way. Another benefit of a good Stack Overflow handle (allegedly) is to wrangle a good job.
  • Design a way for there to be members in good standing: all users have reputation and badges.
  • Barriers to participation: users have to register and log in to vote, let alone comment.
  • Spare the group from scale: pages are generally about problems with narrow focus, such as how one user's Python Fibonacci algorithm slowed the computer to a crawl. Threads are small, becuase they are generally about tackling the problem. More wide focus questions - such as which is the best Model-View-Controller web framework - are discouraged and often closed by moderators.

Stack Overflow will do nicely until something better comes along – but since Stack Overflow has the "critical mass", that something better coming along will probably be ignored anyway.

Currently unrated