Having worked on two projects recently, both of which had become distressed and each embracing very different design methodologies, I thought it'd be interesting to look at what went wrong in each case. The first project started with a "top-down", architectural design exercise which was later implemented by another dev team. The other was a "bottom-up" proof of concept exercise intended to deliver demonstrable functionality in a short space of time with virtually non-existent design effort. The top-down project produced a set of grand sounding documents specifying, in some detail, the desired (SOA) architectural framework and an outline of how the first pilot application should be implemented. The bottom-up project resulted in code.
On implementing the top-down project's pilot application, the visionary plans got lost in the process of making sure the required functionality was delivered on time and on budget. Unfortunately, when it came time to add another application to the framework, the owners found that their cost-cutting meant that all the services created to support the pilot app couldn't be re-used for anything else. The bottom-up project, on the other hand, hit the keyboards from the start and produced a tangled code base that didn't come close to delivering anything, on time or otherwise.
The top-down project lost its way as the lauded design principle - to separate services from the presentation tier - wasn't properly considered in the frenzy to get code out the door. The bottom-up project similarly went wrong as there were no design principles at all, leading to confused and broken code. In both cases, common functionality for use across many use cases simply didn't exist. Although each project had started from a different position, both ended up with the same problem. It seems to me that the missing ingredient in both cases was a lack of direction during the development phase. I was left wondering why such a crucial resource - architectural guidance - had been left out. Although it seems to me that the upfront cost of some form of architectural oversight will pay for itself in a very short space of time, it'd be interesting to know how to convince paying clients!