Someone Needs an Antacid
Thursday, June 19th, 2008Bruce Webster has an interesting blog post about “Project FUBAR,” an IT project gone bad, really bad. Although Bruce describes what appears to be the IT software project from hell, it is a real world example of some of the things that I described in my last blog post.
I recommend that you read Bruce’s entire post, but I wanted to highlight a couple of thing that stood out. Take this part of his memo, for instance:
The code base is very fragile. A lot of it is bad old code that BigFirm didn’t have time to rewrite two years ago, but now is five times its original size and even worse. One consultant said he took a code listing, picked pages at random, and found problems on every page he selected. There is pervasive hard coding of what should be adjustable parameters or at least meaningfully named constants (e.g., # of [key items] hard-coded throughout with the literal value ‘3′, a constant named ‘ninety_eight’). Builds take all night. App releases don’t run acceptably, if at all, in a production environment. Developers check in files that won’t even compile.
Granted, this is an IT project and not an embedded project, but the principles remain the same. This is a perfect example of how project development costs can sneak up on you if you’re not careful. (Remember what I said about micro-leakage?) Sure your programmers are busy at their terminals, but what exactly are they working on? If you don’t know, you might have a problem.
Here’s another gem:
FUBAR was never properly architected and designed for the performance required. There is a current effort to increase performance after the fact, but the implementation makes that impossible. To make things worse, developers are having to scale the performance of and debug a seriously flawed application at the same time, making it very hard to stabilize the application.
Have you run into this before? Talk about trying to hit a moving target.
This paragraph, I think, arrives at the heart of the problem:
There isn’t enough intellectual honesty within the FUBAR project. Managers reject or explain away bad news and real problems, looking instead for people who will tell them what they want to hear.
A lot of design headaches can be avoided if the project leadership remain honest with themselves during the project. Ask yourself questions before the design process:
- Are my goals clear?
- Have I selected the right tools for the job?
- Is my development team up to the task?
- Are my deadlines feasible?
You need to be able to honestly answer those questions in every stage of the design process. If your project managers are more concerned with CYA politics than being honest with themselves and working to solve the problem, then the project is doomed to failure.
Oh, and if your current Linux project looks like the one that Bruce described, you might want to give me a call.



