Ryan O'Neill wrote up "Your Architecture Sucks and I Don't Care," basically pointing out that the best is the enemy of the good. His commenters have absolute opinions: they take his statement as meaning that if the architecture isn't perfect, it's horrible. He's right, they're not.
...In my startup before I began Friendly Dingo, I was obsessed with architecture. I wanted my code to be the cleanest code anyone had ever seen, and I wanted every file, dll, and class to be follow every coding standard you’ve ever heard of. And it was, it was great. But my products came out slow, and I spent more time tweaking my code structure(that nobody else ever saw, btw) then I did responding to customer requests for features. The end result was mediocre product reviews and slow sales. But man, was my code beautiful.
(FriendlyDingo is a product that says it's going to speed up .Net page deliveries, incidentally - it says via a few config entries, but that doesn't sound like something that needs an architecture to me.)
The point is valid though. focusing on architecture instead of deliverying code isn't a good idea; if the app works, nobody cares (much) how well it's written. Sort of.
One commenter had this to say:
What about when you need to enhance, maintain, scale add features, hire other developers to work on said code, etc. Aren’t those decent enough reasons to care about what the codebase looks like? I’m not totally convinced that you’ll be able to add new features that YOUR customers may want or need in a messy codebase. In my experience if the code is crap the product usually is too. Making changes and adding features, maintenance and training new devs all become a horrid nightmare that have robbed YEARS of my life (that I ain’t gettin back). I’d have to say that there is a line between total chaos and over-engineering. Can’t we all just code along?
Emphasis mine - but this comment is an all or nothing thought. If the architecture isn't perfect, or its goal isn't to be perfect, it's clearly bad architecture and will be impossible to maintain. The blog author disagrees, and points out that he was talking about the perfect architecture, not decent architecture.
How would you measure whether an architecture was good or not? How would you measure whether it was "perfect" or "good enough?"