If you’ve been in the software world for any length of time you’ve heard about companies going agile, adopting agile or getting agile teams. The truth is that if a company is only dipping their toe into agile then they haven’t shifted to an agile mindset and are only using agile practices. What’s the difference? Well let’s dig into what the agile mindset is and compare that to a traditional management style.
What is the Agile Mindset
Even in the agile community there’s disagreement about how to describe the agile mindset, but there are some common threads that bind them all together. First and foremost agile is not something you can buy, it’s not a software package, it’s not a set of tools and it’s not a certification. It’s a paradigm shift in the way a group of people interact with each other and with the outside world.
Here are some characteristics of the agile mindset:
Collaboration over Direction
In a traditional management structure decisions are made from above and direction is given to those below. In agile, decisions are made by consensus among those people who are closest to the issue. If two heads are better than one then multiple heads must be even better. It boils down to the fact that one person won’t understand the entire problem domain, they won’t have all the information relevant to making a decision and they will most certainly introduce their own biases into the equation. By dividing the problem into smaller sub-domains for each person to understand and communicating their viewpoints, the group can create a more informed decision together than a single individual can alone.
Of course this introduces overhead and also some team dynamics concerns. So instead of having a manager than makes decisions, there’s a need for a facilitator who can guide the decision making process, but doesn’t drive the decisions themselves. (Scrum master anyone?)
Constantly Deliver Value
Let’s be honest with ourselves for a moment, the reason every business exists is to make money, and the reason software is written is to sell to a customer. The faster developers are able to produce something they can sell, the faster the business will see a return on it’s investment. The business advantage of continuously delivering value is readily apparent. The shorter the development cycle, the faster you can get to market, which means you can beat your competitors by responding to market demands faster.
That’s the pragmatic view of this characteristic but it underpins a universal truth: people are driven to creation. More to the point, people want to see their creations set free upon the world. Anecdotally, every good or great developer I’ve known has been more concerned with creating something great that just collecting a pay cheque.
So coupling these two drives together provides a very powerful motivation for constantly releasing software, which in turn constantly creates value for the business.
This is the most important aspect of the agile mindset, it involves constantly adapting to a changing environment. At every level feasible, the business must inspect and adapt the way that it works. This concept is so important that it’s baked into every agile framework.
At it’s core agile is about responding to change and this is the mechanism which drives that response. Having an agile mindset means observing processes and patterns and identifying areas for improvement or optimization. It’s also critical that these changes are actually implemented and not filed away never to be seen again. This introspection must be done for both external and internal stimuli, for example responding to changing customer requirements is just as important as improving engineering practices.
Given how important it is to respond quickly, teams must be allowed to experiment with new ideas. These experiments should be as small as possible in order to give results quickly. If they are going to fail then they should fail fast, so the team can move onto the next experiment. Failure should not be seen as a negative consequence, but as a learning experience. In fact the number of failures will certainly be larger than the number of wins, but each win should provide a step change improvement which will easy overshadow the failures.
In Conclusion (TL;DR)
The agile mindset is not something that can be bought, it’s a paradigm shift in business thinking. We’ve identified three characteristics of the agile mindset:
Collaboration over Direction – Groups of people can make better decisions than a single individual.
Constantly Deliver Value – Short development cycles lead to a real business advantage.
Constant Introspection – Keep improving, perfection is a process and not a target.