Why does Agile focus on values and principles rather than a prescribed set of steps?
Agile exists to address the idea that no predetermined set of steps will lead to a predefined outcome. The problem has never been solved, nor has the solution ever been created, so you don’t know what you don’t know. No formula is going to guarantee a desired outcome.
Complicated versus Complex work.
In complicated work, such as civil engineering, we can apply a set of best practices and be relatively certain that a desired outcome will be achieved. We need a bridge, know the best way to build that bridge, and we bring experienced bridge builders in to build a new one.
Problem solved. There may be slight differences in variables, such as cost, time, and materials, but they will most likely be within a tolerance we can accept and plan for.
Even though the work is hard and complicated, a team of people has performed the work many times before. It can solve every problem and develop every solution with almost 100% certainty before you even start the project.
So, in complicated work, it is hard if you don’t have the knowledge but it becomes very simple and straightforward when you do possess that knowledge and skill.
Complex work lives in the domain of problems that have never been solved before, products and services and solutions that have never existed before, and deep uncertainty about how to do the work even when you have a team of deeply experienced, skilled, and knowledgeable people.
A team of subject matter experts, in possession of all the knowledge and skills available, are still not guaranteed to solve the problem or create the solution you want. They won’t know the answer, the process, or have a predefined set of steps until they have created the solution or built the product.
Only then will they know, with certainty, how to do the work.
That is complex work.
As we make advances in the work we do and understand more about some of the work, we can shift work that was in a complex environment into a complicated environment. We had to apply significant effort (energy) in order to achieve this.
We can take what we have done and create automation using everything we learned in the complex work to replicate success for the work that is no longer complex. This automation, or production line, allows you to create a repeatable and consistent outcome. In software that the production line may take the form of an automated build and deployment.
We never solve the exact same problem again in software engineering and other creative work.
The code that solved the previous problem won’t work on the next one; we design a new solution and must write code or develop a creative solution that has never been tried or written before.
It is continuous complex work.
In this scenario, we can use the framework and empirical process control as a guide to creating the solution or solving the complex problem, but we can’t create a production line for the complete work.
There are no best practices; there are only emergent practices.
We start with the best thing we can do right now, using what we have learned up until that point, but in a few hours, we may make a discovery or breakthrough that means we need to explore a whole new line of discovery or invent a whole new set of practices.
It’s a world of surprises.
Some of these are pleasant surprises that help us evolve, and others are nasty surprises where we discover that what we are doing isn’t working, nor will it work in the future. We must return to the drawing board and pursue a new line of reasoning, experimentation, and discovery.
Values and Principles
In this world, values guide how we do the work. A great example of that are scrum values.
These are our guardrails, and these are the behaviours, practices, and mindset that governs how we navigate volatility, uncertainty, complexity, and ambiguity.
We can’t use a prescribed set of steps because they don’t exist.
Agile and Scrum provide the tools and help develop the culture that allows a team or organization to adapt to any set of circumstances, both positive and negative.
A framework that allows an organization to frequently inspect what they are doing, adapt based on what they have learned, and use the process of discovery and experimentation to help them continuously improve.