For the last few months I have been working on a project for a Very Large Corporation. If you haven’t worked in a VLC then you won’t be aware that they are pretty much that development practices there are pretty much the antithesis of Agile practices. We use the Waterfall method for our development, and we tend to do the most complicated thing that may just about work. The particular example I have in mind is one that is plaguing me now.
About 2 years ago, when our web-site project started, a decision was made by some Enterprise Architects, sitting in their ivory towers, stroking their beards. They decided that every thing our web-site does, every process, will be….a separate web-site. All 200 processes. Every single one of them. All to placate the invisible god of Reusability. “Ok, so you have a couple more web-sites? That doesn’t sound so bad.”, I hear you suggest. “Oh my child,” I reply kindly, slowly shaking my head, “if only you knew…”.
So lets examine some of the implications. Currently we’ve got 50 of the 200 web-sites deployed, so I’ll be using that figure.
One of the first things you notice when launching our site is that it takes 10 seconds to render the page. Half of this is due to IE6’s appalling rendering engine, but a good 5 seconds is because the site is handling logging, and authentication, and caching, and various other initialisations for that session. So what happens as soon as they click a link? A new web-site is launched, and this process is repeated. The net effect is that the whole system is hair-tearingly slow.
It took over a month just to get the code into smoke-testing. Every tiny problem was exacerbated by the need to roll out a fix to 50 web-sites. If it takes 10 minutes to make a change and tests the web-site, then you will literally be spending your entire fucking day making that one change. Also, we had a huge number of “fit-n-finish” issues (broken web.configs, missing files from solutions, etc.) which can be partly attributed to the difficulty of keeping 50 related projects correct and in sync.
We’re using ASP.NET MVC on this project, which should be great, because MVC is super-awesome-good. However, since each process is a new site, and since a process typically consists of 1 or 2 web-pages, the MVC framework becomes rather redundant. We could have used classic ASP for all the practical difference it would have made.
I hate architects 😦