The Agile Executive

Making Agile Work

Uncertainty, Complexity, Correctness

with 2 comments

The most frequent misconception I encounter in preliminary stages of Agile adoption is about the exact “pain” Agile addresses. Time and again I witness the surprise of executives, who are not deeply versed in software engineering, when I point out to them that poor technology and packaging choices often manifest themselves as process pains.  In many ways it is like the way pain “travels” in the human body. The back muscle I pulled yesterday during a long flight led to contraction of my neck muscles at night, giving me a headache today. A couple of  Tylenol caplets might help some, but a muscle relaxant is likely to be much more effective.

Three Dimensions to Consider

Following Jim Highsmith’s teachings on coping with uncertainty versus coping with complexity, the conceptual framework I use to frame the subject in the context of Agile engagements has three dimensions, as follows:

  • Uncertainty
  • Complexity
  • Correctness

I literally ask the person with whom I am discussing a project to characterize the nature and status of his project for me, and more importantly for himself, in terms of these three dimensions. Once the project has been characterized in such a manner, our discussion progresses to how each of the three project dimensions could be addressed.

Uncertainty versus Complexity versus Correctness

Agile is all about effectively addressing uncertainty, I say. I stress that Agile does not address complexity per se. It might indirectly help with complexity if it leads you towards deeper thinking about Complex Adaptive Systems. For example, you might consider evolving the product architecture in the course of your Agile project instead of pre-defining it. However, Agile is not a “medicine” for complexity pains.

Nor is Agile about correctness. A hyper-productive Agile team could actually go fast nowhere implementing a poorly conceived product. The “real time” feedback  loops of  the project team might help uncover that a product is mis-conceived. However, independent of the team feedback, you still need to determine what correctness means to you and how you would assess it as the product evolves.

Levels of Correctness

An intriguing question for enterprise level Agile deployment is at what level you should “measure” correctness:

  • Product level?
  • Solution level?
  • Service level?
  • Business process level?
  • Strategy level?
  • Policy level?
  • All of the above?

I will address this important question in length and depth in forthcoming posts on Agile Portfolio Management.

Written by israelgat

January 17, 2009 at 9:46 am

2 Responses

Subscribe to comments with RSS.

  1. I like the separation of issues into these three categories. I would perhaps add a dimension which is timeliness (or schedule predictability). From a business perspective, the ability to meet deadlines reliably is of great value.

    On the topic of correctness, I would assert that agile can significantly improve this dimension compared to other processes. When the process is highly participative and includes a product owner, the project can only ever get one iteration into the weeds. It of course depends on the ability of the product owner to proxy for the market or customer, on which all projects depend. With other processes, having an informed product owner does not necessarily mean that the engineering team is developing something aligned with the product owner’s view of the world.

    Paul Brownell

    January 19, 2009 at 9:24 am

  2. […] a comment » Colleague John Heintz brought up a question about the the post Uncertainty, Complexity, Correctness. To quote John: How are “uncertainty” and “correctness” […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: