Skip to content

How to ask a good question

Derek Jones edited this page Jul 5, 2012 · 12 revisions

(You should read this before venturing into the Forums for the first time.).

You may have been taught at school that there's no such thing as a stupid question - if so, it'll come as something of a shock to learn that stupid questions do exist. The CI Forums are full of stupid questions, as it happens.

The following list will help you ensure you're asking a Really Smart <tm> question - so you'll make lots of friends. Plus you'll get lots of useful answers back, which is what you really want, right?

Think of each heading as a check-list item - if it doesn't make sense, read the explanatory text beneath it. These items relate primarily to the technical/coding forums - obviously you can rabbit on about whatever you like in the informal forums! ;)

Before you post

Check if the question is already answered in the FAQ

The FAQ contains lots of good information - including links to existing forum posts, and other wiki articles. Be very sure that your question isn't already answered by the FAQ, or you'll cop some serious grief.

Check if the question is already answered in the Forums

The Forum Search function is very effective. Consider the key words to your problem or question, search on Titles only at first, try a few variations on the key words, and then expand your search to Titles + Text. Using the search function will likely yield you a much better and faster response than repeating a commonly asked question.

Consider if this is a genuinely CodeIgniter-ish subject

CodeIgniter problems often stem from the inter-relationships between a bunch of technologies - Apache, PHP, MySQL, various GNU tools, etc - and sometimes it's not clear where the root cause of your problem lies. But if it looks like you're knowingly asking about something entirely not related to CodeIgniter you'll likely irritate the locals, and possibly lose out on a lot of potential help in the future.

How to ask a Really Good Question

Be clear about your end-game, your intent, your Big Picture view

Describe where you want to get to - not how you want to get there. That is, make it clear what you are trying to achieve. It's easy to fall into the trap of describing the approach you're currently using to solve some problem, and demanding help in getting that approach to work properly. It's quite possible that approach simply is unworkable. Describing where you are heading makes it easier for other people to give you fundamental advice.

Don't forget to ask the question, and ask it early

It might sound funny, but it's common for people to forget to actually ask their question. There's plenty of posts with lots of code, some comments about that code, and then a plaintive 'please help!' at the end - but without any clear expression of what they want help with. Don't be one of those people. So, ask your question - ask it before you provide too much background information (it's easier for people about to help you if they know where you're heading) and whack a question mark at the end of it so it really stands out.

Keep Fact & Observations separate from Opinions & Beliefs

This is easy stuff - start out by describing exactly what happens, as you see it on the screen or in your log files, with code snippets and error messages. Once you've done that, then you can tell us what you think might be going on, what you suspect has happened, making sure to identify these two types of information clearly. Precisely what is going on is much more useful to us than what you think is going on - not being rude, but if what you think is going on is actually going on, you probably wouldn't be posting here, right?

Describe what you've done so far

Again, keeping it factual, describe exactly what you've done so far in trying to fix the problem, and what the results of each step was. If you don't, you will get several messages asking what you've done so far to fix the problem, and/or asking you to do things you've likely already done, and that's no fun, is it?

Post code - whether it's working or not

If you're asking a question about some code that's not working, or code that kind of works, or code that gets you half way to where you're heading - post the code! Programmers respond very well to actual code - much better than to verbal interpretations of something going wrong with a piece of code they can't see.

Use the message formatting codes

Specifically - use [ code ] tags around your code snippets - it makes it much easier for us to read. You can either put them in manually (easy!) or you can select your code and then click the code button at the top of the editor (just as easy!).

More is more - you can never provide too much information

Don't listen to the less-fanatics. Describe your problem in lurid detail, copy error messages verbatim, provide code snippets of your programme, highlight which line in your code is the line number in your error message. If you don't do this, the first several messages are going to be from people asking you to.

Describe your environment - your OS, software and versions

The Forums are populated by Mac OSX, Microsoft Windows, and GNU/Linux users - so don't assume that everyone runs the same operating system you do. Tell us what database you're using - postgres, oracle or MySQL, say. And what version of PHP and CodeIgniter you're using.

Describe yourself - your knowledge, experience, background

Obviously you don't want to go overboard here - you like long walks on the beach, pina coladas and so on - but it can often be helpful to know what skill level we're addressing. For example, you might mention how comfortable you are with the various technologies - PHP, MVC frameworks, MySQL, etc.

Check your message before walking away

Use the Preview feature, or at the very least scan over your message after you post it so you know it looks like you intended. Common mistakes are forgetting to close a [ quote] tag and turning the whole message into a misquoted quote - or discovering the joy of the rampant javascript filter.

Finally - be polite, be patient and remain open-minded

Yes, it's frustrating when things don't Just Work - we all know that, and we try to be Sensitive and Caring New-Age Types - but try to be patient with us, even if we're asking you to do things, or answer things, that don't make much sense to you at the time. And always be open to the idea that you might learn a totally new approach to your problem - even if it means throwing away a lump of your code, making a change to your database, or modifying your basic design.

After you have your answer

Update your Subject field to include the string [SOLVED]

If someone has provided the answer, it makes this thread an important resource for future hunters of knowledge - make it easier for them by making it clear this thread contains an ANSWER!

Describe the solution to your problem

If you worked out an answer to your own question, then be sure to detail what you've done in the thread, for the same reasons as above - it makes life better for those that come after you.

Clone this wiki locally