>>Sometimes the best choice is to throw everything away and start over.
>
>It's often my preferred method once I lock onto the idea the original guy didn't have a good design. It's just faster. Writing code doesn't really take very long once you know what it is you need to accomplish.
That is 100% right. Provided that you are after real solution.
Problem is that some times temporary consultants (or even entire inhouse dev teams) are more interested in max# number of (vaguely justifiable) billing hours (or prolonging their project/contracts) then solving problem that they are brought/paid to resolve at first place. If you have company unfortunate enough to depend on these kind of ______, then bad code is keep on piling up on top of each other into massive piles of garbage, until it all become complete madness.
After it all fall apart, there comes someone with your approach who finally decide to
cut the cr*pp and do full rewrite.
However not long after you are gone, there comes someone fresh off the latest tech convention, who find that your system/code is good, but not done according to the best coding practices (or latest technology) and thus
in need of some major refactoring... And there we go again. Never ending cycle of exciting technology innovation... :))