Thursday, October 27, 2005

T minus 5 days and 2 hours

Well I've got just over five days until I'm no longer working full time (I've got a half day next Friday) and I can safely say that it's quite a relief. You get to a point where you can't take beating your head against a brick wall over the same topic over and over again any more - "Don't ask me my opinion on something you didn't like a month ago because my opinion won't have changed. You didn't like my opinion then so you're not going to like it now".

I'm working on what is, essentially, a simple application that has been made overly complex. It feels as though the team leaders have read several OOP books and decided that OOP was the way to go. The Business Objects team are using CSLA which provides a sound base for the application but the User Interface team has been designed by committee (with any decisions 90% of the time only going one way) and is so complex that its taking four weeks to do something that should really be taking a week.

I've been doing this programming game for the last 10 years and I don't think I've ever seen a project that is as complex as this.

For instance to create an object in the database I need to make use of five different controls:
  • A Field UserControl that contains the textbox (or whatever control that I need).
  • A set of Property UserControls, each containing a Field.
  • A series of WizardStep UserControls, with each WizardStep containing related Property controls.
  • A Wizard UserControl that contains the WizardStep controls.
  • A WizardPage WebForm that contains the Wizard.
Each of these UserControl/WebForm controls either contains a base control (e.g. the DocumentWizard UserControl that I build needs to contain a Wizard UserControl) or is derived from a base class that forces you to implement things that you don't need. I'm not even going to get into a "use of UserControl argument" but each thing I need to save requires a new Property. You want the Name - you need a NameProperty UserControl; Description - you need a DescriptionProperty UserControl; and so on. It soon gets out of hand with the building of what should be a simple wizard taking what seems like an eternity.

Now I struggle to work out what is going on in places and I've been working on this for the last seven months. I pity the new person who comes on board to replace me, or indeed any of the team who leave.

Perhaps the entire team should have read this before any design decisions were taken. At least then we might have gotten away from the "OOP is the way to go and nothing else will work" mantra.

No comments: