Yeah, just this process has happened to me a few times recently - not that I code that much.
Part of my problem has been jumping in with a mish-mash of ideas
and trying to stich them up while coding.
One would hope that the top-down programming discipline would short-cut this, at least a little.
By this I mean working out higher-level logic after considering as many of the aspects of the problem as is feasible.
Then actually testing this logic as if it were a program with realistic data.
But I have to agree, that breath of simplicity does seem to be a result of after-the-fact fiddling.