Writing software for businesses usually has some balance of perfectionism versus writing enough to get the job done. Other people refer to the latter as pragmatism. I think most good developers tend to sway from one extreme to another, as being extreme on either end is likely to either not deliver a system, or leave a very unmaintainable one.
I tend to come more from the pragmatist camp, but would love to be an idealist in the real world (but then economic constraints of time and money come into play). Leaving footprints is something that I have been thinking of lately. It’s a term I think of when we make choices that are less than ideal, by leaving behind something (an impression in the sand) of what made me make that choice I did at the time. If I remove that condition (or series of them), then perhaps someone can make a better choice.
I currently tend to use two different techniques for “leaving footprints”, the first with being comments, and the second being automated tests. Focusing on the fact that I am leaving behind an impression of some sort has helped me in the past to really distinguish between the choices that I have to make and to really explain the forces behind them all.