We recently had a customer decide, while we were on site for an installation, to change the names of all the fields in our database. Unfortunately we were using, at best, a two-tiered approach, which meant going through all our jsp pages and changing every place we referred to a field name. Okay, okay, admittedly much of the issue was in the coding practice, but we'd been contracted for a bare-bones site with a minimum of development time. 1-2 tiers are all you get.

The issue here is that a small change like that can mean hours and hours more development time. And the lesson doesn't stop there -- poorly crafted objects from 3rd party developers mean the same sort of thing. I'm using ESRI's ArcObjects on a current project, and the things are horribly convoluted and often buggy. Things aren't straightforward, and though there often seem like there are many potential solutions to an issue, often only one route actually works properly (if any at all). It's all about finding workarounds.

What does this tell me? Easy -- that ESRI released their objects before they were ready to be used for enterprise level applications. And not taking the extra month or year on their end to clean up is collectively costing the companies that try to take the objects and make customizations years and years, if not decades, of extra wo/manpower similar to what the on-site dba did for our jsp pages.