|By Udayan Banerjee||
|September 29, 2012 09:00 AM EDT||
How do you solve a complex problem?
- Break the complex problem into sub-task till each task is clearly understood and doable.
- Assign responsibility and monitor each task till they are complete.
- Once all tasks are completed the problem is solved!
Well this is standard management practice and work well in many situation.
Problem starts when the inter-dependencies among sub-tasks are too many, when the sub-tasks are not clearly understood and when the uncertainties are high.
Not to worry … management techniques can still be applied to manage the uncertainty and unknown … or … does it?
Operation successful … Patient dead
Haven’t you encountered the situation where everything went according to the initial plan but the project failed?
There are two well understood reason why this happens … and one not so well understood reason.
The well understood reasons are (1) the problem was not properly defined and (2) important parts of the problem was missed out while arriving at the sub-tasks.
The “not so well understood” reason
It is to do with the nature of “complex system” and the phenomenon of “emergence”.
Complex system = System whose behavior is not explicitly described by the behavior of the components of the system, and is therefore unexpected to a designer or observer.
Emergence = The way complex systems and unexpected patterns arise out of a multiplicity of relatively simple interactions.
Traditional management thinking cannot deal with this “unexpected” behavior — “predictability” is demanded.
Agile to the rescue
In agile there is no grand plan. The problem is solved through small increments. When any unexpected behavior happens, adjustments are made.
The requirement emerges…
The design emerges…
The team dynamics emerges… and…
The software emerges.
If emergence = unpredictability then how do you manage … schedule? … cost? … risk?