Interesting. Here my 2 cents.
Most software that i've worked on is terrible. It's terrible because software engineers by nature are 'technology muddlers'. They know how to program but have little insight into the world around them. By this I mean that there is very little in the way of 'deep understanding' by the guy fixing the problem.
Image I gave you a hammer and a box of nails and I told you to build a house. "Sure thing", you say. What sort of house am I going to get? A shack? Sticks nailed together? Cardboard box? It totally depends on the guy with the hammer. What happens if I gave 6 people hammers and boxes of nails and asked for the same task? Would the product be any better?
Most software developers get away with crap as a delivery because the cost of failure is low. So there's no real incentive to 'do it right' or 'make it perfect'. In fact the opposite is true. There is a real cost of failure attached to understanding a problem and taking time to solve it correctly.
If I was given an hammer and nails and asked to build a house, I could put down the hammer and go away and become an architect. However, I'd never get the house built, or I'd realize that a hammer wasn't an appropriate tool for this task. Now that you have a deep understanding of the problem now you realize that the problem is not solvable without a large time and expense.
"But I've promised that delivery in 90 days", says your boss. You then explain how that, given a toolbox full of hammers and 200K nails, this project is going to end up as a large ball of mud.
In the end the 'business of software' is pragmatic. Do you as Cassandra, having knowledge of the future but no power to change it, fight the inevitable ball of mud? Or do you accept that yes, you will not be proud of this body of work, and dutifully search Stackoverflow.com for another mud layer to pat onto it?
Personally I'm also a perfectionist and like to understand the problem deeply. I've found that this is a hindrance as well as an asset. I think that if you find yourself in this situation, find someone that is the opposite to pair program with. That way you can balance out your own strengths and weaknesses.