I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

January 13, 2005

The Reality of Failure

How can you tell experienced programmers from beginners? New programmers think if they work hard, they might succeed. Experienced programmers know that if they work really hard, they might not fail. Allow me to elaborate with an excerpt from an interview with Steve McConnell:

SM: One of the points I make in Rapid Development is that all kinds of different things that can go wrong. I enumerate three dozen classic mistakes in Rapid Development. There are lots more mistakes than that that can come up on a project. Actually succeeding in a software project depends a whole lot less on not doing a few things wrong but on doing almost everything right.

TNC: Now, I've been developing software for about ten years and I don't think I exaggerate when I say that 90 percent of the projects I've worked on were not successful. And when I say not successful, the problem was not that they didn't complete on time or they didn't include the features that were originally intended. But they didn't complete at all. Is my experience representative?

SM: I think your experience might be worse than average. 90 percent not completed at all is higher than any number I've seen reported for industry data. But a number like 25 percent not completed at all would be much more in line. And that's still pretty awful. If you look at the remaining 75 percent of projects that are completed, you see that a very tiny percentage are completed on time, on budget and with the originally expected feature set. If you look at the various surveys that have been done, and I'm using some very round numbers, a quarter of the projects are canceled before they're completed and another 50 percent are completed over budget or behind schedule. And 25 percent are completed on time and on schedule, but the piece that's always missing from those surveys is how much of the original functionality was delivered in that 25 percent that was on time and on budget.

The depressing reality of software development is that your project has to be almost supernaturally well run to avoid failure, much less succeed. And it still happens all the time; this article is dated last week:

The FBI’s Virtual Case File project—on which the bureau has spent almost $170 million since June 2001—won’t succeed. That’s the conclusion the Justice Department’s inspector general has reached. The auditors’ gloomy forecast, contained in a draft report obtained by GCN, echoes criticism from systems specialists within and outside the bureau who cited the project’s technical and management flaws.

The bureau likely will not be able to recoup the money it has given contractor Science Applications International Corp. of San Diego for VCF work, sources said.

Via today's yahoo news:

A $170 million computer overhaul intended to give FBI agents and analysts an instantaneous and paperless way to manage criminal and terrorism cases is headed back to the drawing board, probably at a much steeper cost to taxpayers.

The FBI is hoping to salvage some parts of the project, known as Virtual Case File. But officials acknowledged Thursday that it is possible the entire system, designed by Science Applications International Corp. of San Diego, is so inadequate and outdated that one will have to be built from scratch.

In my experience, only developers who have been through a number of failure cycles can appreciate the pain they're about to inflict on users. They work much harder to understand the pitfalls and avoid the classic mistakes. I'd seriously question the credentials-- or at least the intellectual honesty-- of any developer who denied being a part of any software disasters.

Posted by Jeff Atwood    View blog reactions

 

« Net.WebClient and Deflate Tog and Google on UI »

 

Comments

I've made a number of small apps and I could probably follow the 90% rule that person defined. I don't consider them failures it's just usually that I find something that does the job I was trying to do, usually in some obscure place. Also I seem to like to spec out designs but follow through with very little. That said I have used some programs well passed their prime and are working to completely revamp their nature. The problem with me is I like version 1 to be THE ULTIMATE when I really should work that into version 2 or 3. I can't possibly think of everything up front but I try to before I even begin coding. Guess it's good I'm don't get paid for this stuff.

When it comes to SalesLogix (VBScript work) it's the only "programming" I do get paid for and everything I touch is completed. If I could count SalesLogix it would skew my 90% to something more like 10% since I've done far more SalesLogix work than all of my projects combined. I usually follow KISS but I like to think of new ways of doing things so I have been caught a number of times doing stuff I shouldn't be. The end users may not touch half of it but I can at least say I know how to do it.

Now as far as a $170 million failure that's just obsurd. You don't just scrap that kind of money. If that is just what it took for research what was the point of the thing to begin with? I would think people could think of things and progress gradually then at some point (well BEFORE $1 million in the whole) a decision is reached to can the project, or keep it moving. $170 million is just insanely stupid and it's not the first time our government has had to throw this kind of money right out the window. I mean yeah it still comes back in that the company that has the money buys goods and stimulates our economy but that's money we'll likely never see again. While I agree that you should be paid well for the work you do, I seriously question the ethics of the people involved when they throw away that much money. At some point well before then a red flag should have been thrown but then again it's not "their" money. Retards. You live in this country don't you? Technically it IS your money and the money of others that you're throwing away. Do what you want with your money, but touching mine is an extreme no-no.

Jeremy on January 14, 2005 02:13 PM

The larger projects get, the more likely they are to follow the percentages Steve outlined. You'd have to work in a larg(ish) company to see the "reality of failure" in action as projects and teams grow. None of us is as dumb as all of us!

I think small projects and small businesses do disproportionately better, probably because they have no other choice but to keep it simple.

Jeff Atwood on January 15, 2005 01:20 AM

The problem with the FBI's sink hole, from what I gather from the book "Dreaming In Code", isn't just that it can't be done but what they needed done in the timeframe they wanted was what was impossible. Changing requirements midstream and new managers on the FBI's end due to their bureaurcratic snafu isn't things that would help.

I think the problem is that people with no knowledge of what a programmer can be expected to do are asking for everything in a month. And then saying they want more two weeks later.

If the FBI did stuff more gradually with their software it'd work out better I think.

Chris Young on May 13, 2008 02:33 AM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.