Wednesday, November 6, 2013

On Asking Really Stupid Questions on StackOverflow

"There’s no such thing as a stupid question." As the proud author of several stupid questions immortalised on Stack Overflow (no, I’m not going to delete them) I can tell you that that’s a good example of the "Hey, deep down we're all equal, right?" fallacy. No we’re not, yes there is such a thing, and that’s a good thing.

StackOverflow (SO) is a truly great repository of stupid questions and answers, indubitably the main one for programmers. At this stage there’s hardly a thick question that isn’t there. And if it isn’t, in two minutes you can put it there. Like I did with this one: "How can I run an MVC app as a class library?" Answer: you can’t. Despite spending 18 months on an MVC3/4 project at my last job, when I fired up an MVC app at my new job I failed to notice that the project was a class library, not a web application, something I never had to worry about since practically the inaugural week of that previous project. I just presumed that since that was the way I found it in the new place, it must be right. Well it wasn’t, as I found out when Smudge202 told me so in a comment, correctly assessing that the situation was quite a silly one, and didn’t merit a proper answer.

Was I suffering from inattentional blindness? Maybe, maybe I just needed to ask the rubber duck. When John Donne wrote "No man is an island", giving us one of those selectively applicable great quotes from history, it’s clear that he never worked as a contractor in a government IT departmen, surrounded by people who weren't programmers. Here in my current job, I have no-one to ask when I get stuck on something. Except SO, that is. About one in every three of my jobs ends up being lighthouse duty, as I call them.

Flickr photo
FlickrIt's been a long week.

Like the time I worked in Mineral House, George St., surrounded only by business analysts, project managers, content specialists, and fridges to full to put my sandwiches in. In desperation I posited this stupid question one quiet suicidal afternoon: "Where are my WCF client constructor overloads?" The clue is in the comments I made to the question ("Long day. Just me here. Needed another pair of eyes."). However, despite the mortification I felt when I found the answer, myself, I got a couple of upvotes for this one. Strange, I thought, but it clearly resonated with others in the same boat. Maybe not such a stupid question. And anyway, what's the harm in posting a dumb question on SO? You use up other people’s time, and that's it. But so what? They’re unemployed, or bored at work, or simply rep-whoring. I’m outsourcing: isn’t that what we do in IT?

You might say that being so tied to SO's apron strings reinforces learned helplessness. But there's an interesting thing about stupid questions though. Even the most ridiculous among them isn’t stupid at the time of asking, as long as it’s an honest request for information. It’s only after you find out the answer that you might feel the question was a silly one and experience a strong desire to unask it. But the cat’s out of the bag, and the horse has bolted. Hell, maybe the chickens have even come home to roost. Thing is, you had no way to know that until you asked it. And you should never be made to feel that you shouldn't ask a question. There’ll be plenty of time for that once you get married.

Now I’m not going to beat myself up too much - I’ve asked some good questions, and got some points for my questions. "How can I preserve lexical scope in TypeScript with a callback function?" is a good question which I really needed answered, and I got a great answer. What I am suggesting however is there should be a healthy stupidity ratio to your questions on SO, or by extension, just within your team - maybe 1 in 5 - of "dumb" to smart questions. If not, I suggest you're being anally retentive, hanging on to it too long. Just as my grandmother didn't trust people who didn't drink, I don't trust people who don't ask stupid questions every now and then.

Reputation-induced paralysis

If you’re worried about the effect on your reputation (your real one, not your Stack Overflow one) of asking a silly question, then you’re stupider than the guy who asked this question: "How to connect to local instance of SQL Server 2008 Express?" Imagine not knowing that you have to select the Client Tools Connectivity checkbox during the rather long and complicated installation process. What a schmo. Anyway, don’t worry about your reputation: you need an answer, you don’t need a reputation. You can always delete the question anyway. The most important thing is that you get past the obstacle that is holding you up. You will always get blocked by things that were, in retrospect, stupid. You can waste more time than you need to trying to work it out, which is stupid, or you can ask a really stupid question, which is smart.

It should be clear that I’m not talking here about 'seemingly naive, but actually hard and heroically necessary'-type questions, the sort that people are afraid to bring up because they think it’ll make them look stupid, but actually are great questions, like, "Ahem. Since we’re going to be sailing through water containing icebergs, are we sure that we have a good way of avoiding them?", or "I’m sure you've all thought about this, but what happens if some of those people can’t pay back the money they owe the banks? Where does that leave us?"

No, oh ho no, I mean the mundane, 10-a-penny, ordinary, pedestrian, no guts and certainly no glory questions that make up the bulk of your day. Stupid questions like this one: "Where is the C# language specification located?" where the guy even ends up apologising for it, hoo hoo! You're blind to something. It's the one thing about the framework that everyone knows, but you never actually learned. So you ask the question. You make yourself vulnerable, but you get an answer. Maybe the answer, as disposable as it seems to everyone else, opens a hitherto unnoticed epistemological door to some aspect of computer science that you never realised, allowing flowers of understanding to suddenly blossom in the lush, green valley of your worldview, making you a better and happier person. Or maybe it'll be like Seinfeld, where the characters don't learn anything from week to week, and make the same stupid mistakes over and over. Hopefully the former, naturally. But you still have to ask the question.