J2EE Customs Software Failure - I won't be gloating

As a .NET developer my initial reaction when hearing about the failure of the recently-introduced Customs software system ICS might well have been something like w00t! The system, built on J2EE, WebSphere, DB2, backing on to an IBM mainframe database via MQ Series (or Websphere MQ as I believe it is now called) has had some performance problems since its introduction earlier this month, resulting in the existing barely-hanging-together legacy systems it was supposed to replace being extended indefinitely, even after $250M was spent on the new system. In spite of this I won’t be crowing about this very public Java failure. My feeling is that projects of this size don’t fail because of poor technology choices, they fail because of poor project management [1], and considering the number of stakeholders involved, the number of moving parts to integrate, requirements to document and triage, test cases to write, test environments to manage, builds and deployments to automate etc. I can at the very least sympathize.

I’ve been on large projects (OK, none quite this big, but a few multi-million dollar ones). I’ve also been on some nasty legacy system replacement projects - “make it like the existing character-based terminal application, only for the web, and make it better”. Web enablement of legacy character-based apps is my “worst case” application development scenario. The legacy app. is often great from the end user’s perspective. They don’t see the horrible procedural hack-upon-maintenance-hack legacy code. They see simple screens that they probably know how to use really well, and which they understand (or maybe nolonger even notice) the quirks of well too. In addition to this the domain knowledge that is codified in to legacy apps is often hard to reverse-engineer into a set of requirements for the nice shiny new system. Adding to the problem is often the buisiness case for replacement of legacy systems is more to do with supportability than functionality - the hardware or software platform the original system was written on may have reached its “end of life”, and as a result the business thinks they’ll kill two birds with one stone by “porting it to the web”. Web-based apps are great for many things, but for fast, high-volume data entry applications a boring old character-based terminal application running on older hardware will often beat the pants off all but the most highly optimized AJAX web apps.

I hope the ICS project can be rescued (some of my tax dollars are presumably amongst the $250M) and hopefully some lessons learned too.

[1] for a fun read on how projects go bad that is not afraid to name names (some of the names are strangely similar to the ones in the ICS/Customs story) read this: http://nobodygotfired.blogspot.com/2005/09/how-ibm-conned-our-it-execs-out-of.html