I do a couple of things.

If its possible I build a shell of a program, and then slowly upgrade it until it does everything I want it to. (for example....take in one input at the first stage and...