 How do you sketch out the design of your code before you start coding?
asimjalis: I use a combination of TDD and long conversations with myself. Here is my algorithm in the form of a checklist:    CHECKLIST FOR CODING

    [ ] Is there a conversation with self about this program?
    [ ] Is there a user scenario that has been customer validated?
    [ ] Does the conversation describe the user scenario that does not work?
    [ ] Does the conversation describe the user interface that the scenario needs?
    [ ] Does the conversation describe the API that the user interface needs?
    [ ] Does the program contain tests for this new API?