My previous post on constructing meaningful questions was inspired by years of frustrating experiences on forums and bulletin boards, but it wasn’t until I had a chat with me ol’ mucka Dan that I realised that there are actually quite a few cases where good quality questions are given inappropriate or completely misleading answers.
The intent of this post is to cover that side of the argument. How do you give a meaningful answer to a well constructed question?
I’d like to start by sharing an example of a recent forum thread that I saw which highlights the issue nicely.
Asker: I’ve recently been given the task of creating a C++/Win32 version of application appname. Unfortunatley I’ve never written any Win32 code before, so I need a few pointers to get started. Can someone please show me an example how to create a Window using Win32 and C++?
Answerer 1: Download .NET and use managed C++ to create your form.
Answerer 2: I use allegro for everything, and I think it’s great. Download allegro and use the tutorials.
Answerer 3: Managed DirectX extensions make it easy to GUIs, try using that.
Answerer 4:Using Win32 is a pain, why are you using it? Why not use Java?
Answerer 5: If you’re going to use a graphics API then you’re better off using something like SDL which is cross-platform.
Is it just me, or are all of those answers total and utter shit?
The bloke who asked the question clearly wanted an example of window creation using the Win32 API and C++. What did he get in response? Recommendations for 5 other technologies that people like to use for their own projects. Not one meaningful answer.
As far as I’m concerned this is the same as having someone ask “I’m really in the mood for fish and chips, does anyone know a good shop to get some?” and have a few people respond with “Well, if you’re going to eat food, then you should consider a Thai Green Curry with Lamb” or “When I eat, I like to have lots of sugar. So go to Dreamy Donuts, and try the super heart-stopping, 3-hour-old, artery-blocking cardboard donut. It’s fantastic!“. WTF has that got to do with fish and chips?!
One of the universal issues we face is the fact that people do not have the ability to read the question. It’s something that people have had a problem with since the early days of school. They fail to read the question properly, and instead come up with their own version of the question that isn’t the same, and hence their answer is poor.
In the case of coders, there’s a bit more to it. People like to preach and evangelise technology, languages or applications that they like to use, as it makes them feel good. Most people like to push form threads and conversations towards a topic they consider themselves to be experts in because it gives them the chance to get on a soap box.
Now, I’m not going to say that I don’t get on a soap box, because I quite clearly do!
But the point I’m trying to make is that people who ask specific questions deserve specific answers. So here are my rules of thumb for answering peoples questions.
- Read the question. Then read it again. There is no way you’re going to be able to give a meaningful answer to a well constructed question without fully understanding what’s being asked. Try to adhere to the golden rule of answering questions: If all else fails, READ THE QUESTION.
- Answer the question, but don’t post the response. Answers to questions are like solutions to problems in development. Your first iteration is going to be a solution, but it’s not going to be the best solution. Reread your answer. Scrutinise it. Look for as many holes as you can find. Any that you miss will be picked up by someone else!
- Rewrite your answer. After you’ve answered, and you’ve found the holes. You’ll no doubt have to rewrite it. Make sure you use grammar, punctuation and well constructed sentences. Try to keep sentences as short as possible. Be as clear as you can without being verbose. Provide examples of code or references to cases where your view has worked in the past. Provide links to documentation to support your answer.
- Direct your answer at the question! Make sure that your answer does actually answer the question. Make specific references to the parts of the question that you’re answering and point out how it’s of benefit, or how it actually relates to the problem.
- Don’t evanglise your favourite technology. If you come across as an evangelist, then people will tend not to take your response seriously. It’s easy to see whether someone has an open view, or whether they’re biased towards something they have a passion for. Don’t be a preacher!
- Don’t answer if you don’t know! Lots of people seem to put their $0.02 into the conversation even if they don’t know what they’re talking about. It’s quite simple: if you don’t know the answer, do not respond to the question. You won’t be adding anything of value to the discussion and you’ll end making yourself look stupid. Instead, you should monitor the thread and wait for someone else to respond. Chances are you’ll end up learning something!
Thoughts?










July 18, 2007
While those answers don’t answer the question as asked, they still provide an important service when speaking over the internet. If that exchange happened in person, I would say the answers were wasting the questioners time, being obtuse, or just not paying attention. However on the internet, there is a very low cost for communication — its easy to provide information, but its also very easy to ignore information that contains a high noise level; in fact its considered a necessary skill in an information age.
(It also does depend on the culture of the specific forum. If the topic is specific and high traffic, you should follow etiquette by stowing your opinion if its not relevant to the question.)
The benefit to the asker is that, even if the asker is very smart and experienced, it is still possible that one of the tangential answers is actually something that the asker hadn’t thought of yet, and thus could be considered “thinking outside the box”. This is especially pronounced for me working in Japan, where its culturally common to simply do whatever you’re told to do without thinking if there is a better way to get things done.
For example its possible that this persons requirements were poorly stated and while win32 was what was asked for, really any native looking app might do.
Where this particular exchange fell down, is that there is no one who addressed the question as asked in addition to furnishing their own opinion. The ideal answer would have been:
“Here is my fav win32 tutorial http://example.com, but I really recommend you use my fav tech X instead.”
For that reason, I would pare down your list to only options to just 1. 3, and 4.
July 20, 2007
There is something else that also annoys me.
A question is asked.
Some brief answers are given.
Original Poster says. I have sorted it, no worries!
PLEASE put up the solution that you figured out in case anyone happens to google along this page.
This is how 80% of my googled pages come across
July 20, 2007
Ryan: I don’t think I agree with you. My points are from the perspective of the person who answers the question, and really what you should be doing is answering the question and moving on. If people aren’t sure about what they’re doing, then they should state that in the question. For example: I need to use tech X, to do function Y. Can I please have some help? The answer should consist of details of X and Y, and almost nothing else. If the asker also says: I’m not sure if I’m approaching this the right way, so if you have any other suggestions regarding other technologies or languages then please let me know. THEN you have the chance to evangelise. That’s just my view though
Matt: That’s a very good point. There are lots of cases where people are more than happy to waste other people’s time by asking the question, but then won’t give the answer themselves if they manage to solve it. This just goes to show how little consideration there is out there for others. People who need help tend to be very selfish. Manners are lacking, and “giving back” is something that they just don’t consider.