What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 133 Stack Exchange communities.

This isn't meant to be nonconstructive or flippant. This genuinely bugs me.

98% of the time, when I know the question, then I can find an answer, and the other 2% of the time I can ask a question and the answers are excellent.

But what I really struggle with, is when I have an issue and I don't know where to start, especially when I am learning something new, and the issue could be in one of many places. Is there a way to ask a constructive question that would be useful not only to my issue, but to the community at large?

For example, I've been trying to figure out how to use backbone.js models to communicate with my django server through tastypie, and I keep trying to pinpoint why it's not working. My approach has been something like:

  1. Work through tutorials
  2. Read articles, opinions and search through stack overflow questions
  3. Implement some code, attempt to debug
  4. Read more, implement suggestions
  5. Go through backbone.js code and tastypie code
  6. Use lots of console.log debug statements

Which has been somewhat successful in narrowing down my problem to backbone and how I'm using it... but it's still too vague for me to put into a question. Is it a problem with how I'm syncing, is it a problem with how I'm formatting the data, is a problem with how I've set up my backbone model, or is it an error in my code?

This is what I mean, by saying I don't what the question is.

Usually I program in small incremental bits. But in this case I'm trying to rebuild something complex. Is it a manner of scrapping the complex piece and building a simplest model of what I'm doing, and progressing from there?

I'm curious what do other people do when starting something new that you don't understand. What do you do?

There are some good questions on this, such as How to ask a smart question, especially Lennart Regebro's answer, which suggested

  1. Look at the possible duplicates
  2. Tell us what problem you're trying to solve
  3. Format your code

And I liked the answer in How to ask a "Where to start" question? to talk about it in a chat room when it's a broad topic, which I admit I haven't done since AOL in 1995.

What else do you do?

share|improve this question
    
I call this the "Microsoft Applications Help Conundrum." Once you know what damn-fool term Microsoft uses to refer to a given feature, you can easily search and find what you need in the documentation. But woe to you if your vocabulary is different. If you don't know how to use a feature but you don't know what they've chosen to call it, you are hosed. –  Ernest Friedman-Hill Jul 14 '12 at 14:48
    
@ErnestFriedman-Hill - agreed... I guess learning any new framework or library has its own vocabulary that you just have to figure out before you can speak it eloquently, especially when you don't know what you don't know. Sometimes you just do your best and learn from how people correct you. –  Adam Jul 14 '12 at 22:29

2 Answers 2

up vote 7 down vote accepted

Good Questions, In General

I would say that a constructive question has a fairly basic formula, although there are certainly variations. At its most basic, a good question might look like this:

I am writing a program or feature to do X. In order to accomplish X, I have
written the following code:

    # code snippet here

I expect X to return the following results. The expected output *should* be:

    # insert sample of desired output

However, it returns the wrong results or gives me an error message.

    # insert verbatim results or error message

I looked up the documentation/faq/wiki and it says I'm doing everything right.
See here, here, and here.

    # insert references

How can I properly solve for X?

The more information you can include about your assumptions, expected results, analysis of the problem domain, and prior research on the topic, the better your question will be.

Your Issue, Specifically

The reason you seem to be having trouble formulating a question seems to be that you aren't isolating or decomposing your tasks well enough. In the example you provide, each step should have some well-defined input and output, and you should be able to take each step separately. If that were true, you could ask targeted questions like this imaginary example:

I want Django to pass an array as a JSON object to tastypie, but it passes a kidney stone instead. Here's my code; what am I doing wrong?

If you can't decompose your tasks well enough to do that, then you have a conceptual, design, or spaghetti-code problem that's probably not suitable for Stack Overflow in the first place. Scorched earth and starting over with test-driven development is probably a good idea at that point.

share|improve this answer
    
Thanks. Breaking the problem down into smaller chunks makes sense. Possibly not understanding the question means I don't understand the parts involved. Also that conceptual and design related questions just aren't appropriate at stack overflow. –  Adam Jul 14 '12 at 22:24

A question that details the symptoms, explains the troubleshooting that has occurred in order to narrow down the possible issues and that has the pertinent code, asking for what the issue may be sounds like a very good question to me.

Simply detail the symptoms, what you did and post the code - ask what more you can do to try and solve the symptoms you have observed (that is, what the bad behaviour is and what you want it to be).

share|improve this answer
    
Thanks - and I've seen effective questions where people provide more information as they get feedback, which helps the actual issue get clarified. –  Adam Jul 14 '12 at 22:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .