Reading Time: 4 minutes
The stacey complexity model categorizes tasks in four different categories: simple, complicated, complex and anarachy. Then the model explains for each category what is the best approach to solve those tasks.
Did you ever hear the question “What is agile?” and you didn´t have a proper answer right from the top of your head. Or did somebody tell you, that agile is something from the software development world. Then I guess it is not so easy to explain to those people, that agile is a working methodology, which does apply to more than only software development departments. I think I have quite a good diagram to explain, for which type of tasks the agile way of working is the best.
A few weeks ago I attended a great scrum master training in my company at LeaseWeb. One of the first items on the agenda was the Stacey complexity model, which helps you to understand uncertainty in a project.
OK, here it is – the Stacey complexity model
In this model you have two dimensions:
- Uncertainty of requirements: this indicates how certain (or uncertain) your requirements are and how likely it is that the requirements will change in the future. Basically this dimension says something about the level of uncertainty of WHAT you have to do or build.
- Uncertainty of technology: the second dimension shows how uncertain your approach or technology is to finish a task (or build an application). Therefore it indicates the level of uncertainty of HOW you build a project.
I did not make following diagram by myself, the credits go to a Dutch guy named Jurgen Appelo and his blog. He is the author of a great book I am reading these days – Management 3.0.
The four categories
In the Stacey complexity model there are four categories: simple, complicated, complex and anarchy. Let´s discuss each of the categories in detail:
Simple tasks are well defined and easy to solve – you know exactly what you have to do and how you can do it.
Examples for tasks in this category are “Brushing your teeth” or “Riding a bike”. You do it every day (at least in the Netherlands) and you don´t have to think about it. The approach you choose for such tasks is “Just do it!“.
Complicated tasks are not simple anymore (huhu – yes, really!) – they are not completely clear in terms of what you have to do and how to do it.
An example for a task in that category is “Planning your holidays to Latin America”. This is not straight forward anymore. The approach to solve such a task is to sit down, think about it what you want to do and how you do it – so you make a plan and when your plan is finished you are going to execute it.
Let´s skip one category for a moment and let´s look at the other end of the scale – anarchy. Here we cannot predict anything at all and we also have no clue how we can tackle things.
Best examples here are natural disasters, like a tsunami or the eruption of a volcano – we don´t know, what will happen nor when it will happen and what impact it will have, and we also don´t have any clue of how to prevent it.
There is not really a good approach to deal with tasks falling in the anarchy category. If you encounter tasks like this in your daily job, then I feel really sorry for you, because either you have such a difficult job or you are a pessimist.
Now let´s look at the big category in the middle of the Stacey complexity model: complex tasks. They have quite a high level of uncertainty in terms of what you have to do and how you want to do it.
There are lots of examples, for instance software projects usually fall under this category. The requirements are not clear from the start and they also change a lot during the software is built. And also the technology is not completely clear upfront – you don´t know from the beginning how you are going to tackle certain problems, in fact, you don´t even know what problems you are going to have. So how do deal with such kind of problems? What approach do you choose?
The simplicity of the model
I think, if you would explain these four categories to somebody, who has nothing to do with software development or agile, and then ask “How would you solve tasks from the complex category?” then he or she will be able to come up with the answer by himself/herself. And that´s the reason why I really loved the Stacey complexity model from the first moment I heard about it.
The answer is agile
Obviously the answer is as following: You sit down and create a plan of what you want to achieve and how you are going to do it. Then you execute the plan. After some time you sit down again, recheck if your plan is still valid and modify it accordingly. You take all the new input factors into account when you adapt your plan, new or changed requirements, better understanding of the possible solution, gained knowledge of used technology etc. Then you execute the adapted plan. After that you repeat the cycle of planning and execution phase until your project is finished (or until the result of the project is good enough to stop working on it and continue with another, more important project). So, basically you work in iterations – create a new plan for each iteration, while considering new and changed input factors, and then execute it.
A great way to explain what agile is all about
Don´t you agree, that this is a brilliant way to explain to a stakeholder from another department, who has no knowledge of agile, what the agile methodology is all about?- responding to change! I explained it to one of my two non-technical sisters using this model and I think it worked out very well. At least she told me, that she understands, but it might also be the case, that she just wanted me to shut up.
Let me know, if the Stacey complexity model helped you as well to explain agile to another person. Or leave me a comment, if you think this model does not help at all to explain agile to your grandma.
Either way, stay tuned and HabbediEhre!
Hi and thank you for sharing that picture. I noted that you credited Jurgen Appelo with this picture. However I noted from his blog, book and talks (e.g. here http://noop.nl/2008/08/simple-vs-complicated-vs-complex-vs-chaotic.html) that he thinks the Stacey Graph is a wrong representation since it doesn’t correctly distinguish between understandability and predictability.
Since you read his work but chose to reproduce the model he considers faulty, I wondered what your thoughts were on his criticism?
well written! I think I never heard of this model before. It sounds logical and seems to visualize the different kinds of problems quite well.
Thanks for introducing me to it.
yes, the model really makes the iterative process a logical implication for complex tasks.
I´m glad you like it.