This is one of the grand failures I’ve had that I would like to save others from repeating.

The team was working on a big project that was going to add a significant amount of new automation to an existing business process. Had all the business data been in a relational database, it would have been easy. But the data was spread across all kinds of storage, including flat files and mainframes. So we spent a lot of time on a data store abstraction mechanism. And we wanted a rich client but had to support multiple UI types, so we wrote multiple clients using multiple UI toolkits. So did we have time left over to actually automate the target business process? Not really.

I can image someone saying this to me: Ha ha! You fool! You fell victim to one of the classic blunders! The most famous is never get involved in a land war in Asia, but only slightly less well-known is this: never write your own infrastructure when your project has a deadline! Ha ha ha ha ha ha ha! Ha ha ha ha ha ha ha! Ha ha ha…

That was back in 1994, so I could claim a small excuse in that there wasn’t a lot of off-the-shelf infrastructure available then as compared to now. But even then we were reinventing wheels that already existed elsewhere. So the moral of the story is to spend the vast majority (if not all) of your effort on the application instead of the pre-requisites for the application. You’re not paid to build pre-requisites, you are paid to build applications. Users of the application don’t care about the infrastructure, as long as it doesn’t adversely affect the application.