Does anyone here use a method learned (out of a book or from a class) when designing software? Or do you write like I do; give a little bit of thought to the desired output and then start typing and testing and tweaking until the desired outcome is reached?

Most times when I start a project, I need to write a few little test programs to understand how things might be made to work. Often times, the last test program winds up getting expanded and re-written to produce the final deliverable. All of the time, my programs interface with one-of-a-kind hardware that others here in the office design and build (interface using RS-232). I (and others here) are wondering if there is a more sensible/efficient way to design and complete projects.

Any comments?