If you’re in the software development game, there’s no way you haven’t heard of agile. It’s all about being flexible, responsive, and focused on delivering value to the customer.
And the 12 principles are the rules of the game that the fathers of the agile movement laid out way back when they started it all. Now, I’m not one of them, but I’ve been doing this for a while, and I’ve picked up a thing or two about agile development. So I thought I’d share my take on these principles with you.
In this article, we’re going to go over each of the 12 agile principles and explain them in plain English. By the time you’re done reading, my aim is for you to have a better understanding of how they all work together to make agile the power tool that it truly is.
The 12 Agile Principles, in Plain English
- “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” It’s simple, you’ve got to keep the customer in mind and make sure you’re giving them what they need, when they need it — not what you think they need, whenever you think they need it.
- “Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.” Don’t be set in your ways. Be open to new ideas and be able to pivot quickly, that’s the name of the agile game.
- “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.” Don’t wait until the end to show what you’ve got. Keep it coming and keep it consistent so you can get feedback early and course correct along the way.
- “Business people and developers must work together daily throughout the project.” It’s all about teamwork, everyone’s got to be on the same page and know what’s going on so they can identify the best way to contribute to the goal, collaborate with others towards it, and make trade-offs as needed.
- “Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.” Find the right people, give them the tools, support, and empowerment they need, then let them do their thing.
- “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.” Talk it out — you’ll get more done than exchanging long emails sending hectic chat messages back and forth. Just don’t let syncing up get in the way of your flow of work.
- “Working software is the primary measure of progress.” You know what they say, “Half finished is not finished at all.” So if it doesn’t work from the point of view of your customer, it’s not done. You can have all the ideas in the world and all the plans, but if you don’t see something concrete, something that actually works, that’s progression — but not progress.
- “Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.” Think and act for the long haul, not the short run. Keep it steady; steady is what wins the race.
- “Continuous attention to technical excellence and good design enhances agility.” Stay on top of the latest and greatest. Keep learning and find new ways to keep the machine polished and running smoothly.
- “Simplicity — the art of maximizing the amount of work not done — is essential.” Less is more. The less you’ve got going on, the less can go wrong. Besides, if it’s simple, it’s easy for everyone to understand, so you’re all on the same page. And when you’re all on the same page, things tend to go a lot smoother.
- “The best architectures, requirements, and designs emerge from self-organizing teams.” Let the team organize themselves, they know what they’re doing. Ensure they’re aware of all principles, guidelines, and requirements they need to follow from day one.
- “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.” Take a step back, look at what’s working and what’s not, then make the necessary adjustments. It’s how you get better day by day.
That’s the deal with Agile development, it’s all about being flexible, responsive, and focused on delivering value to the customer. And these principles are the foundation for that approach.
Questions & Answers
Continuous delivery of software means that you’re always pushing out new versions of your software. You’re not waiting until everything’s perfect, nor are you waiting until the project ends. You keep shipping out new and improved versions of your software to the customer. Think of a factory that’s always producing and new and better products; you’re always pushing out new versions of your software, as soon as they’re ready to push out.
When business people and software developers work together, they’re in it together. They’re not working on opposite sides of the coin; they’re on the same team, working towards the same goal. It’s the business people who know what the end users want — and the developers who know how to build it. Together, they figure out the best way to make it happen.
Because it’s real. It’s not through a screen or on a piece of paper, it’s in person, real-time communication. You can read the room, you can read the person, you can pick up on non-verbal cues, and you can adjust accordingly. It’s all about understanding and being understood. Besides, when you’re talking in person, there’s a sense of accountability. It’s harder to misunderstand or misinterpret what’s said.
To implement technical excellence and good design, a team and its members needs to keep learning, keep experimenting and keep improving. It’s not something that you can just tick off the list and move on from, it’s an ongoing process. It’s like a never-ending story — you’re always looking for ways to improve, to make things better, to find new solutions. The team should strive to understand the latest technologies, design patterns, methodologies, and best practices in their field. And it’s not just about what’s new and trendy, but also about understanding the fundamentals, the basics and the reason behind them.
A self-organizing team means that the team members are empowered to make decisions, they are not being told what to do, but rather they have the ability to shape their own roles, schedule and tasks. They are given the ownership of their own work and they know how to get things done.