The miracle of software
November 13, 2009
So how is it that we can have statistics like: 75% percent of software ends in failure: over budget, late, or just abandoned? I haven’t dissected these statistics recently, but I think there is something wrong if we look at a phenomenon that has a 75% failure rate. If only 25% of efforts succeed, I’m inclined to think software is just inherently hard. The ones that succeed are the exceptions: the miracles.
As many of you know who follow my thinking, they key to successful projects is resilience: how well a project adapts to change. The implication of this line of reasoning is that success or failure has nothing to do with the software and everything to do with how the software is built. In short, not the end, but the means to the end.
The reason successful software projects are miraculous is that they require such an incredible combination of factors to succeed:
- The idea for the software has to be good in the first place
- The expression of the idea for the software has to be well articulated
- The understanding of the idea from those listening has to be accurate
- The translation of the idea into an action plan has to be successful
- The execution of the action plan has to be successful
- The darn code in the software has to be accurate
- The testers figuring out whether the software is accurate need to do their job well
- The people using the software need to know what the software is supposed to do
- The people using the software need to use it properly
- The problem you built software for still have the same problem when it’s done
And all of this in an environment in which every day things will change: the workplace, the technology, the people building the thing, the people using it and the reality of having even more good ideas as we go (plus a lot of bad ones).
How hard is that?
Well, 25% hard.
Under those circumstances, I would offer that the 25% success rate is nothing short of miraculous.
Now don’t get me wrong. Those of us in the business are not stepping back attributing success to a higher power (although that might have a role here, as well). Instead, we are constantly working on the factors that lead to success.
Microsoft has an article out that has some very good insight into the characteristics of successful software teams: http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx. This article is particularly useful if you are in a position of either managing a development effort or managing a vendor relationship. There are a variety of sources that can help you determine whether you are going to achieve a level of productivity and quality in the process.
In addition to all the factors they cite, I’m going to offer this as part of the miracle of success: successful, resilient projects need all of that and resilient people. People who themselves are willing to look at the situation half full and with a prospect of success (thanks to Seth on the Heuristics team for pointing that out).
So I wonder: if we think of successful projects as miraculous, will we have more of them? I’d say anecdotally, yes!
What do you think?

November 16, 2009 at 10:23 am
I think first we need to define miraculous. For example, whether one is religious or not, life is miraculous, all of nature is miraculous. Whether one believes God in all his glory created life in seven days, or that it simply is a miracle that over millions, really billions of years, we are what we are today, with perfectly beating hearts and huge trees that climb skyward, life is a miracle.
So in one sense, miracles are everywhere, we just have to see software and the projects that drive them as such. Is successful synonymous with miraculous? If so, is there a difference in thinking of successful projects as miraculous?
November 16, 2009 at 10:50 am
Hi, Joshua,
It’s great to see comments from people who actually care about language. I’m a little daunted by the idea of defining a miracle, but I like the direction you are agoing regarding miracles in daily life.
My thought–and my question– is about whether we will be more successful with software if we recognize just how difficult it is and how many factors need to come together to make it work. The sense of miracle to me suggests that there are factors outside of our control that determine success or failure. Will it make us more successful if we appreciate the difficulty? Or will it just leave us compacent?
My instinct tells me that if “resilience” is a factor of success, appreciating the positives is a posture that will help us succeed.
November 16, 2009 at 3:53 pm
Hi Christopher,
I agree! Having the positive attitude I believe is required for success. How can one succeed in a project if they don’t think it will work? I say to my sons almost daily, “if you think you won’t like that vegetable, you won’t!”
When managing projects where I don’t have a lot of say in the product (just the process), I use the term “cautiously optimistic” when the outcome truly is unknowable. I am an optimistic person by nature, but I have also been “taken for a ride”. This doesn’t make me cynical, only cautious.
When it comes to miracles, I believe in them 100%. But I do not refer to the miracles of the new testament, I refer to the everyday miracles; and yes, I believe humankind is powerful enough to steer a project to the miraculous. It is when we take things for granted that miracles do not occur. When we become complacent, as you say, miracles won’t happen. I do think they are in our control.
You provided a bullet-point of so many requirements for making a software project successful; one could look at that and say, “It’s gonna take a miracle!” And they would be right. But the miracle comes from the one who says it.
Word creates world.
November 27, 2009 at 8:15 am
Great post! It is sort of mind boggling to think about 75%/25% statistics like the ones you share. Then I think about the Apollo 11 moon landings and the fact that they pulled it off using slide rules and processors and programming languages that are many times less powerful than what we have now, and I’m inspired. Check this out http://tinyurl.com/m5cjs3.