I have been doing Agile for over a decade. During this time, I have seen many different ways of thinking about what Agile is. One way is to think that there is only one kind of Agile and that there is a large collection of methods to choose from as you feel appropriate. Another way is to realize that there are many different mindsets in the Agile community and that these mindsets are what give rise to the different methods.
What is a mindset? Wikipedia says a mindset is "a set of assumptions, methods or notations held by one or more people or groups of people which is so established that it creates a powerful incentive within these people or groups to continue to adopt or accept prior behaviors, choices, or tools. This phenomenon of cognitive bias is also sometimes described as mental inertia, 'groupthink', or a 'paradigm', and it is often difficult to counteract its effects upon analysis and decision making processes."
Speaking of paradigms, Wikipedia notes, "the historian of science Thomas Kuhn gave paradigm its contemporary meaning when he adopted the word to refer to the set of practices that define a scientific discipline at any particular period of time. Kuhn himself came to prefer the terms exemplar and normal science, which have more precise philosophical meanings. However in his book The Structure of Scientific Revolutions Kuhn defines a scientific paradigm as:
Think about these definitions for a moment. These are what focus our perceptions and our thoughts, what filter what we see and think. And, unfortunately, we rarely question them. We assume what we see and think is just the way things are. And that is limiting. Not bad, necessarily: we have to use them or we would be overwhelmed with information. But certainly limiting.
But the scientific tradition requires us to question our mindsets and paradigms. We must reflect on them from time to time to ensure that the one we work out of is helping us, not hindering us. Mindsets must be used and continuously challenged.
That is how new and useful paradigms come to be.
Agile is a new paradigm. Before the Agile movement, the prevailing belief was that you needed to do a complete analysis of what you wanted to build and that developing a full, detailed plan before staring to design, code and test was the best way to ensure achieving your goal.
The Agile movement made different assumptions and took a different approach. You might say it started from a different system of beliefs. The Agile Manifesto was a declaration of a new belief system. It basically stated that people, software, collaboration and responsiveness are more important than process, documentation, contracts and following plans.
This manifesto is one set of beliefs and has led to one popular flavor of Agile. There are others that lead to other flavors of Agile. In May, I wrote a tongue-in-cheek blog post called The Lean-Kanban Manifesto where I pointed out some of these differences in belief systems. Here are some of the differences in belief that lead to different approaches:
The biggest divide is over the notion of defining process. I have run across many consultants that believe that attempting to define any process is folly. They reason that defined processes are intended to be followed and that in a non-deterministic system this leads to ineffectiveness. They view software development process as a complex-adaptive-system and therefore little cause and affect can be found.
I believe there are two failures of logic taking place here. The first is a fundamental misinterpretation of the relationship between determinism, predictability and degree of definition of a process. For example, lack of determinism does not mean lack of predictability. There is a distinction between micro and macro-predictability. For example, a roulette table is not predictable at a micro level (you don’t know if the next spin will be black, red or green), but at a macro level it is clear that more money will be staying at the casino than leaves! For more on this, read the interchange I had with Don Reinertsen in the blog post, Types of Processes – by Don Reinertsen.
The other misunderstanding is the belief that a defined process is something to be followed. Actually, having explicit conversations about one’s process is not to make it something to follow but to make it so people understand what each other is doing. This is a mindset shift in and of itself – process is not to be followed but to facilitate understanding.
There are other divides based on belief systems. For example,
It is more than just picking a set of tools. Beliefs lead to very different alternate behaviors. One must be aware of one's paradigms so they can both question them, learn better ones, and see when they apply.
I wrote this blog post because I felt it was an essential component to understand a blog I about to write: "The Three Types of Scrum: Classic Scrum, Scrum with Lean practices, 2nd Generation Scrum."
I thought it would be helpful if I listed some of the paradigm shifts I've had over the last 30 years or so. Not saying these are the right ones, just giving them as examples to assist people in looking at their own paradigms. Most of these paradigm shifts are related to business but I have thrown in a few personal ones as well. (Times are approximate.) While at first glance, all of these may not seem fundamental, if you reflect on how believing the statements below affect my thinking, you can see they are all significant.
|
1983 |
The voice in my head is not me (and if you said – I don't have such a voice, I mean that voice) |
|
1983 |
Most people are responding to past events that have been imprinted on them – so although they will give you current reasons, they are really being driven by their past |
|
1984 |
Errors are mostly due to the way one is working than due to one-off mistakes. Therefore, it is important to look at the way one approaches problems to see how to improve one's results |
|
1984 |
Most people (90%+) will do good work if you put them in good environments – conversely, most people will work considerably poorer when put in poor environments. Therefore, it is critical to work on the environments people are in rather than the people themselves. |
|
1984 |
Our thoughts and body are very connected to each other. Our minds and bodies are not separate. |
|
1984 |
People have different ways of absorbing information. How the mind works is reflected in the body (a la NLP). |
|
1985 |
People have different approaches to work and communication. Being quiet in some situations will mean 'yes' to some and 'no' to others. |
|
1985-89 |
People have comfort zones. They will become very uncomfortable if things change too quickly in either a bad or good direction. |
|
1996 |
Design problems should be solved from a top down point of view using patterns as operators that define the problem space (essentially Chris Alexander's approach to design). |
|
1997 |
People have different learning styles. |
|
1999 |
Incremental building of your software is useful. |
|
2001 |
Building things with time boxes is better than building things by scope. |
|
2001 |
Not all software problems are caused by the development people – very often the problems that show up in the development teams are caused elsewhere. |
|
2004 |
Customers know enough for developers to start writing – by asking customers to tell us all they know prompts them to reveal things that they don't know for sure. |
|
2005 |
Deming and Lean can be applied to software by looking at the principles underneath them both |
|
2005 |
While scrum is great at a team level, it does not give us enough guidance to significantly help solve organizational wide issues. |
|
2007 |
Lean in software is more about managing flow than it is about eliminating waste. |
| 2009 | Certain types of delays (mostly between getting and using info, making an error and detecting it) actually induces waste. It is more important to avoid the creation of waste in software development than it is to eliminate it. |
|
2009 |
Explicit policies will greatly accelerate learning |
|
2010 |
The Cynefin framework helps one figure out how to work with people. It should not be construed as meaning one cannot take a systems thinking approach to people |
Alan Shalloway
CEO, Net Objectives