Personally, I'm very very paranoid. I'll lock down my functions exceedingly well, forcing it to crash if anything I'm not expecting shows up. I always go for the simplest solution first, and try to keep all my code as close to where it's used as possible. I don't do any design beforehand, but I do look for sane "interface barriers" that I can split the program up among. (For example, in my game, I have the "collision detection and calculation" module which is split apart from the rest of the game - but actually deciding what happens when things collide, that's right in the middle of the game logic.)
Keep it simple and reliable, don't write more than you need, make it work and worry about making it solve world hunger later.
What style do you have?
(If you do any problem-solving other than coding in your job, feel free to answer. You just don't get a convenient example to base your answer off.)