14 June 2011

Self-Inflicted Complexity

One of the major themes of my work is that military technology projects (and tech projects in general) don't have to take so long, cost so much or be so complicated. That is, the cost, delay and complexity we typically encounter on these projects is not inevitable.
Cal 99 Dilbert: Must ..Control ..Fist ..of ..Deathcalendar

So when someone tells me the FIST approach is fine if we want to build a simple system but that it doesn't work if we want to build a complex system, I go into Alice mode from Dilbert (Must... control... FIST... of... Death!).

The word choice is particularly revealing: "when we want to build..." All too often, people view high levels of complexity as not only inevitable but also desirable. The truth is, it's neither.

Yes, there's a certain amount of inevitable complexity for any given system, particularly now that all our systems are supposed to integrate with all other systems. Any system that doesn't play well with others (I'm looking at you, F-22 Raptor) is going to lose points. The trick is to avoid excessive, unnecessary complexity... and that starts by understanding that complexity and goodness are not always directly proportional.

So, when I talk about being rapid, thrifty and simple, it's important to keep context in mind. A 5-year timeline may be blindingly fast, for certain types of technology. A simple nuclear submarine may still be hugely complex, in absolute terms... while also being simple compared to the alternatives.

We just need to understand that extreme complexity is not intrinsically desirable, nor is it inevitable. We always have opportunities to simplify in ways that improve performance, reduce cost, increase reliability, etc. But we'll never find them if we don't look for them in the first place.

1 comment:

JG Hansen said...

When you break a complex system down into its components, and those components down into their sub-components, you eventually find yourself looking at something fairly simple. Applying FIST at that level, then integrating FIST into each higher level, eventually gets us to a large complex system that has been built "FISTily".

Trying to apply FIST to a worldwide satellite navigation and communications system might be daunting. But appying FIST to the camera on each satellite, and the receiver on each vehicle, etc is not. Then applying FIST to the integration of those components into the total system ensures that the entire program was delivered with the FIST philosophy.

People who make the comment that it won't work with large complex systems simply don't understand that all systems are made up of less complex components.