« Interview | Main | Notes on Slay »

April 25, 2008

Comments

That really reminds me of the graphs from Benoit Mandlebrot's The (Mis)Behavior of Markets.

If you flip the curve vertically, it would become a curve of "work done" rather than "work left" and it would kinda look like a square root curve (here's an example).

This means that if you did X amount of work in Y time, doing 2X work would take 4Y time. In other words, development time rises to the square of the complexity of work to do. This intuitively makes sense, because when you're just starting you have few systems interacting with each other. Every time you add something new, you have to consider how it interacts with every other system, raising the complexity geometrically.

If this is true -- and I'm no mathematician so I could be entirely wrong -- then this has a good and a bad side. The good side is that it's not an asymptotic equation, so you'll eventually reach whatever quality level you're aiming for. The bad side -- beside development time climbing much faster than complexity -- is that even if you start ahead of the curve with an established engine, it doesn't change the shape of the curve and it's still not going to be a straight line that's easy to plan for.

Frankly, it looks to me like an "exponential decay" curve, and the operative element is not bugs fixed, but bugs found. It becomes steadily more difficult to detect bugs, as the more obvious ones are discovered, you have to look deeper, test longer, to find more. You never reach zero bugs, it just eventually becomes more work to find them (not fix them, *find* them) than it's worth.

Of course, when the million monkeys are turned loose, they expose a lot of bugs that your testers could not have in any reasonable period.

More complex systems not only contain more opportunities for bugs, but increasingly obscure and subtle bugs that will be difficult to identify and repeat. Given the nature of emergent complexity, both number and obscurity are not going to rise in a linear fashion, but an exponential one.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been saved. Comments are moderated and will not appear until approved by the author. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Comments are moderated, and will not appear until the author has approved them.