OK, I just could not hold this in any longer. Most of the time, when I create a piece of software, I work on the design first, architecture second, code third. However, occasionally, I sucumb to the pressures of deadlines and “code from the hip”. You know the style, opening and connection and building dynamic SQL anywhere it’s needed, blending functionality (to speed development); just simply not architecting, but coding. The apps work and perform well, but it always comes back to bite me.
Take a recent app: It was critical that this app perform well and get out the door quickly. Rather than stand my ground and insist on an OF (Object Framework), OOA (Object Oriented Architecture) and OOD (Object Oriented Design), I threw the app together and got it out the door. Now, for the fifth time in a short period (since delivery), we’ve needed changes and each one has been a royal pain. I have another similar app that has a great OOA and OOD. The code base for the second app is larger by a factor of 10 and the performance is lower by about 30%. But, I can apply fairly significant overall code changes to the second app relatively easily. The first app met the customer’s immediate requirements but is now giving long term heartburn because of the time to make mods. The second app is causing a tolerable bit of heartburn with performance but they can get their business critical updates more quickly.
I think that OOA/OOD do cause significant performance hits, but with some focused code tuning, I think that you can at least make it tolerable. And by code tuning, I’m not talking about using StringBuilder rather than String, I’m talking about instead of doing 100 querys, maybe find a way to do one query and build everything from one dataset.
Anyway, the bottom line is that I think that every app needs to be well architected because you will ALWAYS have to return to it to make changes. So, make your live easier now and do it right.