If I offered you a thousand dollars a day for thirty days, or a penny for the first day but I’ll double it every day for thirty days, which would you take? The former is a linear progression: 1000+1000+1000+1000… and the latter is an exponential progression: .01x2x2x2 . . . At the end of the thirty days with the thousand dollars a day you end up with $30,000. Starting with a penny, after thirty days of exponential growth, I’d have to pay you $10,737,418.20.
That’s the power of exponential growth.
This is very different from the way we normally think, and there’s always a learning curve. This is true of learning anything new, and what I’m proposing for building software is something radically new to most developers and business people. So if you only look at the first time increment in an exponential progression, it’ll appear that the linear path is winning, so we just see that linear is winning and go with that. But what we miss is the enormous growth that happens later in the exponential model. And this is the path of the software industry.
If you were playing the short-game and only looked at your rate of return for the first week you’d find that linear growth would have given you almost a thousand times more than exponential growth ($5000 verses $5.12). But as the power of compounding starts to take effect, the exponential growth quickly catches up to and surpasses linear growth so that by the end of the 30 days, exponential growth is over 350 times greater than linear growth ($10,737,418 versus $30,000).
Actually, we should be wired for exponential scales. For example, light, sound, gravity, and other natural forces fall off as a square of distance. In terms of sensory input, we tend to normalize exponential change into what appears to be linear. But somehow we seem to be wired to understand linear scales more clearly than exponential ones.
Linear growth is more in keeping with human experience. I get one year older every year, I don’t get twice as old every year. As creatures we tend to think in that way. If our brain is hardwired in any way it’s in a linear progression. When Ray Kurzweil, in his book The Singularity is Near, put forward that technological growth has followed an exponential progression, some people made fun of him for thinking that way, saying that that means in five years we’ll be living in some kind of science fiction universe…
But we are.
So how do you break through that thinking?
It’s easier to plan for linear growth. Exponential growth is frightening. But true innovation, true progress happens in exponential growth, not in linear growth. Innovation is by its very definition a discontinuous event. It is often not so much steady exponential growth as a sporadic series of quantum leaps.
Good practices can result in exponential improvements in software development. Bad practices can do the opposite. And I would say that we can’t have a software industry if we’re just linear in our thinking. We need an equivalent of Moore’s Law to provide pressure to innovate in software development the way the limits to transistor size provided—and continues to provide—pressure to innovate in hardware. I’ve come to see Moore’s Law as Intel marketing hype. It never really existed but the idea of scalability is important and something we are hoping for in software. But we’ll find it in different places than we found hardware scalability.
True innovation is exponential, but the reason we see linear growth in the software industry is that something’s pulling us back. And that something is the weight of our decisions—of our bad choices.
Those bad choices are being made by software developers.
It’s us.
I would love to lay the blame on someone else, but it’s our fault. That’s the bottom line. We’re writing the code. We wrote the bugs. We made the code unchangeable. It is our fault and we have to both take responsibility for it then recognize that there is a better way.
Previous Post: « Telling Smaller Lies
Next Post: Agile Amped Podcast »