Did you ever have that teacher or professor who always tried to tell you that: “there is no such thing as a stupid question?” This may have been true in school, but in a professional software engineering environment, I can confidently tell you there are some really dumb questions being asked. Before I rant on, I’ll qualify this further by saying the majority of these questions are not stupid because people are utter morons, but because people are either completely lazy or don’t know how to compose a question to get the answers they seek.
No doubt business and project management folks ask questions that you may want to categorize as dumb or stupid. However, most of these folks aren’t as technical as you, and the questions maybe hilarious at times. My personal favorite:
“So, do you use pixels because some people don’t have fonts installed on their machines?”
(This one was from a project manger trying to figure out why a web developer used “px” instead on “pt” in CSS). These types of questions from this group are not the targets of this post. That will certainly be the subject of another post.
In this post, I’m focusing on the technical folks who fancy themselves software engineers capable of solving problems. My hope with this post is that people think about the kind of answer they are actually looking for while also considering how their line of questioning is perceived. To help out, I’ve categorized a group of question types that can be categorized as not terribly thoughtful without some qualifiers. Here’s a list of a few:
The “How Do I” Question
No doubt, this is a very popular category of question.Â This question can often be valid a number of times especially in absence of adequate documentation. This may be because the API or programming language is new, or you’re working with a homegrown internal framework developed by one guy who has the details all in his head. In these situations, asking: “How do Iâ€¦?” can be perfectly valid.
However, here are a few cases where it’s not. Take this question for example:
“How do I create a new URL in Java?”
Blink. Blink. A guy with supposedly 6 years Java experience asked me this question 5 years ago and I’m still amazed to this day it was even asked.Â You might say that this could be considered a total newbie question and it’s okay. Even so, a newbie should be able to figure out the basics. A little research by Googling “create new URL in Java” would eventually bring you to:
A two second task and this guy could have snowed us for another day or two. It’s the lack of effort and research know-how that makes the question stupid. You’ve demonstrated that you don’t know what you’re doing and you aren’t capable of solving a trivial problem on your own by performing at least some investigation.
The developer might have been seen in a better light had he made an attempt at searching the docs himself and tried creating a new URL in some type of test case. Had he done that and perhaps asked something like:
“I tried following the docs here, and created a test case to validate my understanding, but I’m not getting the results I had excepted. How do I create a new URL in Java?”
Even though the question is exactly the same, it’s been qualified with some effort. Now I can tell the guy is really trying to figure this out, and more importantly, he wants to solve it but needs a hand. Granted creating a new URL is a weak-ass example, but showing some initiative helps make the question not stupid.
The “Will this Work” Question
It also make my blood boil when I get asked the hypothetical question that goes a little like:
“If I code X and pass it this, will I get Y?”
“Can I create a criteria to query to get this object?”
Here’s a thought: write a damn unit test to validate your question first. Asking, “will this work” without taking a stab at it, demonstrates a severe lack of initiative. What you end up with is a perception of trying to get other people to do your work for you. And that’s what makes this question stupid. Generally, a better what to phrase this is: “I’ve created a test case to pass X through Y, but it failed, and here’s the stack trace.” Now we’ve got something to talk about!
The “Why do I get this error” Question
This question can be absolutely mind boggling sometimes, mainly because you can spend a fraction of a second looking at an error and reading the error message back to a developer just as it was sent to you. My favorite recurring error is with Hibernate apps and some one gets a HibernateException and emails me the stack trace and is “confused” as to why they get the error. Just by scrolling down page to the very end, you can read: “TABLE OR VIEW DOES NOT EXIST.” About 90% of the time, the table name is misspelled in the mappings.
No doubt, sometimes this could be a perfectly valid question and sometimes. But as with all other points in this post, a little research goes a long way. Taking the “TABLE OR VIEW DOES NOT EXIST” error again, while your mapping files may be correct, a DBA may have not provided the developer appropriate grants to the developer. So the question could be rephrased as:
“Why do I get this error? I’ve checked the mapping files and verified the table and column names, but it keeps happening. Any ideas?”
Again, the developers done some digging, but still can’t get to the bottom of it. A developer who’s not thinking about developer grants is not stupid, he may not have considered it and may need a hand at exploring all angles of the problem.
The “What Should I do” Question?
No doubt, you’ve come across the type of problem that seems hopeless and you’re out of ideas. One question that’s generally not a wise one to ask is “What should I do?” A better way to ask such a question would be to have some basic ideas in hand and seek validation. Like:
“hey, I’m stuck on this but I was thinking of trying A and B out to see if that fixes it?”
You’re either going to hear one of three types of responses:
- “No, that won’t work” or “we don’t have time to do it that way”. Try this approach instead. (If you get a rude response to your idea or get simply shot down without any alternative options, fire up your resume).
- Yeah, that sound reasonable.
- Hmm, could work. If doesn’t, maybe try tweaking A with Z and see how that pans out. If that doesn’t work, lets come up with another strategy.
By asking “what should I do” with out any qualifier clearly indicates that you’ve completely given up and you’re not able to take the next step in trying solving your issue. This type of question can be a career-limiting move if asked to your projects team lead or architect. You’ve got to come to the table with at least something moderately intelligent. Otherwise, you’re company definitely paying you more than enough.
No doubt, developers are chronically faced with unrealistic deadlines and given problems that they can’t solve in five minutes. However, if you want to be perceived as a problem-solving engineer type rather that the “I can just bang out code given a spec” programmer type, you need to think about the questions your asking with respect to the answers you want. By providing more context to your question, the quality of of any answer will be greatly improved.