Factoring complexity

10.04.2006
Good morning, my stalwart friends and Agility Corps recruits. As I promised last month when I inaugurated this virtual group of IT practitioners, today I'm going to talk about encounters with complexity.

Complexity is that place where huge systems-development budgets disappear, leaving nothing behind but empty checkbooks, loose-leaf binders full of incoherent specifications, and half-baked program code that crashes unexpectedly. It's the places on the map of a development project where orderly logic gives way to great foggy spaces. All that is known about these spaces is, "There be dragons here." Many brave system developers have marched into them and gotten lost.

Developers' senses are overwhelmed by detail. They are assailed by hard-to-understand patterns. There is much hollering and hand-waving as the business folks describe all the things that could happen and all the things that must be guarded against. Many fine developers emerge from these places with slack jaws and glassy eyes. They babble about disjointed facts and are often on the verge of tears. They have been devastated.

Courage alone is not enough to survive an encounter with complexity. You need good technique, too. In the heat of the moment, smart use of the six core techniques I have written about this past year is what separates brave winners from valiant losers. Your company turns to you, as a member of the Agility Corps, when the going gets complex. It needs you to find a way through those foggy spaces to build the agile systems it needs in order to reach its destination. Are you ready?

Now tell me, how do we apply simple techniques to cut through the noise and find the simple patterns and components that make up complex situations?

Before you answer that question, consider how mathematics deals with complexity. Do you remember trigonometry and those tests where you had to graph solution sets for big, hairy quadratic equations? Remember how those equations made your heart race and your blood pressure rise? And do you remember that ray of hope when you realized that you had been taught a technique called factoring that lets you simplify these equations? For example, what if you are asked to calculate x and y values and plot the graph of this equation?