Skip to content

How to ask a good question

World Wide Web Server edited this page Jul 4, 2012 · 12 revisions

[color=green] (You should read this before venturing into the [url=/forums]Forums[/url] for the first time.)[/color].

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! ;)

[h2]After you have your answer[/h2] [color=grey;inherited;display:block;margin-left:1em]Yes, we may be getting ahead of ourselves here, but this is very important stuff that you'll otherwise miss if we put it at the end! [/color]

[h3]Update your Subject field to include the string [SOLVED][/h3] [color=grey;inherited;display:block;margin-left:1em]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! [/color]

[h3]Describe the solution to your problem[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [/color]

[h2]Before you post[/h2] [color=grey;inherited;display:block;margin-left:1em]Things to do before you hit that Post Message button.[/color] [h3]Check if the question is already answered in the FAQ[/h3] [color=grey;inherited;display:block;margin-left:1em]The [url=/wiki/FAQ]FAQ[/url] contains lots of good information - including links to existing forum posts, and other wiki articles. Be [i]very[/i] sure that your question isn't already answered by the FAQ, or you'll cop some serious grief. [/color]

[h3]Check if the question is already answered in the Forums[/h3] [color=grey;inherited;display:block;margin-left:1em]The [url=/forums/search]Forum Search[/url] 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. [/color]

[h3]Consider if this is a genuinely CodeIgniter-ish subject[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [b]But[/b] 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.[/color]

[h2]How to write a fantastic post[/h2] [color=grey;inherited;display:block;margin-left:1em]The things you absolutely positively must do in your post (lest the universe collapses on top of you!)[/color] [h3]Be clear about your end-game, your intent, your Big Picture view[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [/color]

[h3]Don't forget to ask the question, and ask it early[/h3] [color=grey;inherited;display:block;margin-left:1em]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.[/color]

[h3]Keep Fact & Observations separate from Opinions & Beliefs[/h3] [color=grey;inherited;display:block;margin-left:1em]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, [i]then[/i] 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?[/color]

[h3]Describe what you've done so far[/h3] [color=grey;inherited;display:block;margin-left:1em]Again, keeping it factual, describe exactly what you've done so far, and what the results of each step was. If you don't, you'll get several messages asking you to do things you've likely already done, and that's no fun, is it?[/color]

[h3]Post code - whether it's working or not[/h3] [color=grey;inherited;display:block;margin-left:1em]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.[/color]

[h3]Use the message formatting codes[/h3] [color=grey;inherited;display:block;margin-left:1em]Specifically - learn how to use the [b][ code ][/b] 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 [b]code[/b] button at the top of the editor (just as easy!). [/color]

[h3]Check your message before walking away[/h3] [color=grey;inherited;display:block;margin-left:1em]Use the [b]Preview[/b] 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. [/color]

[h3]More is more - you can never provide too much information[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [/color]

[h3]Describe yourself - your knowledge, experience, background[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [/color]

[h3]Finally - be polite and remain open-minded[/h3] [color=grey;inherited;display:block;margin-left:1em]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. [/color]

Clone this wiki locally