There are more than six things that make agile work but in my experience, these six are often overlooked or forgotten. Focusing on these them will improve product quality, reduce errors, and improve value to the customer. When your product makes your customer successful, you will be successful.
#1 Overcoming the Methodology Misconception
The first step toward making agile work is dropping the misconception that it’s the methodology that makes you agile. The methodology just gives teams a framework to follow. Frameworks probably feel familiar to those who are comfortable working in autocracies, so they are the first thing management latches onto when looking for solutions. Being agile is more of a state of mind where a team commits to work together and solve problems more efficiently and deliver quality work faster. You only see results when you have both working together.
Your team needs to be free to work collaboratively without the baggage of company politics. When leadership insulates a team from corporate politics it frees them to do their best work. If you can grow this culture beyond individual teams you’ve made the agile transformation. Agile is collaboration codified.
#3 Shared Responsibility
Every team member should equally share responsibility for the quality of the product. They should become intimately familiar with the customer and understand exactly who they are and why they need your product. When the team shares responsibility they feel ownership and truly care about their work and its quality.
Building a cohesive team where loyalty and trust reign generates a positive force that produces incredible results. While that might sound hippy-dippy, consider that it is exactly what military special forces teams do to amplify the fighting force of a small tactical squad. It’s not so hippy-dippy – it’s simply effective team building.
#4 Small Frequent Releases
Break the work into small deliverable elements that provide value to the customer. The smaller the batch the easier it is to test and insure quality. The smaller the batch the faster you can deliver and the less you have to worry about change management because the changes are small and incremental. Imagine delivering new code every two weeks.
Parts of larger features can be deployed in these small batches too, but you may want to build a way to show and hide features to users allowing you to better control the rollout of complex improvements to customers.
If you find yourself needing to manage change often consider standing up a Beta production environment to facilitate controlled rollouts to small groups of key users. Learn from your beta users, iterate, improve and then once convinced that you’ve gotten it right, release it to all customers.
#5 Eliminate Estimates & Committments
Estimates are usually inaccurate guesses. They set the wrong expectations for the team and stakeholders. Instead, focus on your customers’ priorities and make sure the team understands why we need to build the next thing. This will keep the team focused on the most important work and build a continual stream of improvements.
Commitments will be broken because estimates are usually inaccurate guesses. The only thing they facilitate is finger pointing and that undermines collaboration. When you eliminate the need to provide estimates and commitments you free the team to do their best work and speed delivery. The only commitment that is needed is that the team stays laser-focused on the customer’s needs and goals.
#6 Integrate Quality Assurance
Everybody on the team tests everything. When the team has a holistic vision of the customer and product you have more eyes on the work and the quality of the team’s work increases. When the team feels an attachment to their combined work they catch defects before they are deployed. If you’re also releasing more often, when a defect slips though, you can fix it almost immediately.
If you move testing away from the people that write the code you’re simply creating a loop for the blame game to emerge in your organization. You’re also testing too late if you’re testing after development. Listening to end users is essential, but they are not professional testers. Shift left, not right.
We Make Agile Work
As you’ve probably noticed I think agile is an attitude more than anything else. It’s choosing to work collaboratively towards a shared goal that makes us successful – it’s not some new trendy methodology. Methodologies are just tools that can give us a map but they don’t help us work better by themselves. It’s how we choose to work together that produces results and makes everyone successful.