How to post in the Q&A Forums

  1. General Q&A Posting Format

    Saying "I'm lost" might help release some frustration (and accurately reflect your internal state! :) but it won't get you much help as no one is as familiar with your work as you. So the first step in getting help is explaining your problem precisely. Just imagine all the various things you'd explain to someone in person and how much of an iterative, back-and-forth process explaining the problem is, with the person trying to help asking many clarifying questions to get a handle on what might be wrong. Online, you have to be able to capture that same information in a single post!

    Remember, the people you're asking for help are at least as busy as you. In general, when posting questions online (either in classroom forums or in the wilds of the internet), please do follow the protocols outlined below for eliciting the best help. These protocols build upon the latest research in Cyberlearning/Social Learning from community/knowledge sites which suggests how best to ask questions and learn new material.

    Mandatory Posting Protocol

    The first step is to state your problem precisely; not only will this clearly communicate the issue you're trying to resolve but, as Charles Kettering said, "A problem well stated is a problem half solved."

    As you know, all technical questions should be posted in the Q&A Forum. Like all such communities, before posting, all posts are required to include the following basic information:

    1. List what you tried
    2. List what you expected it to do and what it actually did
      • It's very important to include a description or screenshot of what it actually did
    3. List why you think it failed or should have worked
    4. Summarize how you tried to research your question. Simply saying that you used Google and Wikipedia isn't enough. What are some of the search terms you tried? What articles did you read?
      • This information is essential as most errors can be solved by simply searching for the exact error (in quotes).
    5. If necessary/appropriate, post pseudocode (only!) of your actual program/script with the full text of all errors.
      • Expressing your program in pseudocode (YouTube video of pseudocode) will help you in understanding what you're doing and help others to understand what is going on. Please do not ever post your actual lab code for the lab that's due that week.
      • Besides pseudocode, as also stated in these FAQs, if you're programming in Java, you should post the full stacktrace (which is described here and here).
      • If absolutely necessary, you can include a short excerpt of just the specific block of actual code causing the error. When posting code, it is a requirement to follow the guidelines posted at sscce.org for creating a Short, Self Contained, Correct (Compilable), Example.

    It's necessary to follow the above 5 steps as not only does that communicate the issue plainly for potential helpers but clearly defining the problem will VERY much help you get a handle on it, too.

    For more generic issues, the follow-up will likely involve posting:

    1. Pseudocode of the relevant portion
    2. Specific code for just the block that's giving trouble + what you expect that block to do
    3. A screenshot of what happens when you try to compile/run that code

    Beyond this course: If you intend to do any programming after you're done with this course, you'll likely need some help down the line. Although our course Q&A Forums won't be available then, the same skills you acquired in asking questions here will aid you in getting answers from the programming community on the Web! Here is a little guide on how to ask questions on the Web Forums: http://www.catb.org/~esr/faqs/smart-questions.html

    Please remember, if you're in an academic situation, your professor likely has about 60 - 100 other students that are vying for his/her time; if you're in an industry-setting or seeking help online, the people you're approaching for help have other full-time jobs or tasks. Unless you've hired a personal tutor, the people helping you are likely giving of their own valuable time so it's incumbent upon you to make good use of it otherwise you'll get little to no help (and, on the internet, quite a few snarky responses, as explained here and here :).




  2. Posting C++ or Java questions in the Q&A Discussion Threads: When posting a request for help in the Q&A discussion threads, please do not include a full posting of the code. Instead:
    1. Post an anonymized version with the specific code snippet causing errors only. E.g., if I were having issues with creating a frame class, I'd post something analogous to:
      • Declare class
      • Create main
      • Add button listener: ButtonListener Listener = new ButtonListener(); // Error on this line FtoC.addActionListener(Listener);
    2. After posting the pseudocode/actual code, please give a hypothesis of why you think the error occurs (e.g., "I don't think I'm declaring the button listener in the correct location").
    3. This kind of posting not only shows us your understanding but also will help you understand the structure and potential source of error.
    4. And then include the error, itself, including the full stacktrace. If we still can't figure it out, then we'll request more elaboration or posting of code but please do not post your code in full as the first step.
    5. Java-specific: In order to post the error, please be sure to include the stack trace (which is described here).



  3. Why do we do it like this?
    The reason is that we are really interested in using the problems to learn the process of solving them rather than just in finding their solution.

    When posting for help in the Q&A forums, please ensure you do the following for full learning: rather than just giving a screenshot or printing an excerpt, you should ensure you:

    1. List what you tried
    2. List what you expected it to do and what it actually did (this is the most important part)
    3. List why you think it failed or should have worked


    Why is this? The reason is that as you clarify the problem, not only will it help the person helping you understand the problem but the solution will usually crystallize itself. That crystallization occurs as part of the software design process and troubleshooting a program is usually an indication of a software design flaw.

    Unless, of course, it's a compilation issue, in which case you should search google before posting in the Q&A forums as almost all questions you might have at this level have likely been answered there already.

    In fact, one of the goals of the course is to prepare you for independent work in this field (specifically, in our case, Java programming). And one of the most important skills to learn is how to solve this problems yourself as a professional software developer. Most professional software engineers do exactly this when stuck: search google and go to expert, community sites for help. When you solicit help from these newsgroups or community sites, you will be expected to make posts in roughly this format; if you just post your full code with pleas for help, you're likely to get flamed off the boards immediately. In fact, within organizations, that approach would be considered highly unprofessional (certainly in the various companies for which I've worked/consulted).

    And when you respond to someone, it's very important to not simply give them the answer, if it's not an administrative issue and is an issue of understanding. We should endeavour to:

    1. Give them a reference, if possible
    2. Hint at the next step
    3. Ask a question that might lead them to solution, if possible


    Why is this? The course is designed very much for learning, as opposed to tutorial teaching. Our task is not to give answers but to lead to insight/learning and then evaluate the answers. It's the transition from the approach taught in secondary schools to independent learning at the academic level and just giving direct answers would severely undermine that.

    This approach does not work for everyone, of course, as people fall on a spectrum of learning types. But, by and far, this is the most effective approach to *actual* learning for the vast majority of students.