It depends on the program that I need to write:
in reply to Coming up with code design
With small programs, or things that are quite obvious, I just start coding bit-by-bit. Testing each step, modifying, and letting the program grow...
However, when I work on large projects I want a decent design. Either made by me, or by some software architect. I don't just start programming. I've seen it too much before: start working and half way you come to the conclusion that the design was bad and that important and you can start al over again. No thanks.
Even that piece of paper and pen of you won't be enough for large projects. Every part of the project has to be thought about before you start coding.