6 Characteristics of a useful Agile Models.
To understand an agile model, we need to understand or define agile. Agile is adapting, adjusting, reacting, responding to change. In scrum it would be a team pattern. The notion of agility only shows up through time. When I talk about agile it is about balancing.
1. An agile model’s pupose is to enable balance.
An agile model be sufficient when it enables us to adapt / adjust. The Scrum Framework is an example of one such model. However,there are many agile models that are so abstract that they are essentially useless because they account for everything which means they handle nothing. So a good agile model will be barely sufficient or just enough of an abstraction that it helps guide my actions without consumming my mind with it’s complexity.
2. Agile models must be understanable to be useful.
When we abstract concepts we risk making abstractions that can cover anything. This is sorta like sand as a building material. I can make bricks with it, windowns, Honeycomb light weidght nano structures and tubes. Etc. While sand is a ubiqutious easily available building material the amount of time I spend getting into shape can be exhaustive and easily exceed the practical time available to do a job. Likewise and agile model must allow for an easy application to a job or it risks requiring to much work to be useful. In software development we have a history of creating one over the world frameworks that require enourmous effort to understand and use.
3. An agile model must be within the realm of expected purpose.
No model is ever 100% accurate. We use models to drive certain ideas into a software architecture but, the model itself is not the same thing as what we deploy or drive in. The model can be used to understand a system’s design and consider new ways to alter that design. But a model is exactly that a model. The thing is the only true representation of the thing. When we work with computers, I sometime call them boolean approximation devices. The software on my machine will always behave slightly diffently than the software that you install. We just might not be observiing those differences and not care because the behavior is within the realm of expectation for that purpose.
4. Agile models help us manage shifting levels of precision.
When is enough detail enough? Too much detail in anything can overwhelm our capactiy to understand. Sometimes we fall prey to the belief that if we have more information about x we must know more and therefore make better decisions. An agile model is a tool and a way to help us screen out noise and not pollute us with too much information. The goal of an agile model is to help us figure out how to effectively focus our intellect on our very real and challenging problems.
5. Agile models must somehow help us.
If the model is not helpful then through it away and get another one or extend the one you have to be useful. In either case we need to adapt our work to the reality of the problem space we are tyring to understand. An agile model should enable that adaptaion and not causes us to fight it.
6. Agile models are barely sufficient.
The provide focus on the right questions and help us have the right dialog to build understanding. Agile models by themselves are not the answer but, simply a tool to help us explore what an answer might be. Agile models enable us to work quickly through conversations by providing just enough.
So, an agile model helps detect the right conversations to have so that we can balance as we explore a problem space. An agile model is useful when it helps us detect solutions to a problem in a timely manner. We still need to build the solution.
Good agile models help guide the right actions.