How the 12 Principles of Agile are really just Common Sense
If the Agile mindset applies to everything and everyone, (and not just for software developers, as we discussed in our previous post), how does that work? Does a kanban board really work for all projects? Are sprints really the best way to each time you use Agile?
The answer is no. Just slapping an Agile tool on a project is not an effective way to do your project or to use Agile. The Agile Principles, however, are flexible and apply to any situation, so they will be very useful for your project.
We are going to walk through the 12 Principles that are behind the Agile Manifesto in a short two-post series and show how these ideas really are common sense.
The 12 Principles Behind the Agile Manifesto
1. Customer Satisfaction: The primary objective of agile practices is to satisfy the customer through early and continuous delivery of valuable products. This ensures that customers are in the loop of what’s going on, on a regular basis, which builds trust and satisfaction.
This is straightforward, right? You want your customers to be happy and ultimately want to hire you and buy your product again.
The way this is lived out through Agile is how we work to satisfy the customers. In Agile, we do through by keeping them informed and asking for their feedback consistently throughout the development cycle.
2. Welcoming Change: Agile methodologies embrace changing requirements, even late in development. Because let’s be real, changes can and do happen all the time, and at any time in the project, which sometimes can lead to frustration for the development team.
Having an attitude that welcomes change allows your team to adapt to changing customer needs and market shifts, turning potential disruptions in your process into a better end product.
It’s a little bit like seeing the glass as half-full. It’s an intentional attitude to what we know will happen and when we see changes coming, we can embrace them instead of being overwhelmed and irritated by them.
3. Frequent Delivery: Agile teams aim to deliver working software frequently, with a preference for shorter timescales, typically ranging from a couple of weeks to a few months. This approach allows for rapid feedback and continuous improvement.
Sometimes, however, this idea sets people on edge. “How can we get our customer a product that fast?! We will barely have time to get our work started by the time you want us to hand something over!”
Think of it this way, when a chef is cooking, they have tasting spoons all over the kitchen to double-check what they are making along the way to ensure each part of the process tastes good and that they are on the right track. Frequent delivery is the same, it’s like handing your customer a tasting spoon regularly through the process.
Let’s say you are making a pizza. You’ve received the order and start by cooking the dough. Then, even though you aren’t ready to serve the pizza yet, you will deliver something to your customers by giving them a taste of the crust once it’s cooked. Following that, when you finish making the sauce you’ll give them a taste, and after you slice the pepperoni, you’ll give them a taste again, and so on.
If it turns out that, after the customer has had a few tastes and wants to adjust the toppings on their pizza, that’s not a problem, there’s time to make the change because you are still mid-process and haven’t completed the final product yet.
4. Collaboration: Effective collaboration between business stakeholders and developers is crucial. Daily interactions ensure that both parties remain aligned, fostering a cohesive and efficient working environment.
Keeping the stakeholders involved in the process may sound like it could get messy. We’ve all been in situations where we are working on something and the stakeholder keeps meddling, messing things up, and making it hard to make any progress.
Yet, we know their feedback is important. In Agile during these daily interactions, it’s up to the meeting facilitator to keep things on track and get information from the stakeholder about priorities, requirements, and feedback to share with the team.
This is useful and does not mean you have someone looking over your shoulder all the time while you work. Instead, it is a quick, planned check-in to help direct the work and keep everything efficiently moving toward the end goal.
5. Motivated Individuals: Building projects around motivated individuals and providing them with the necessary support and trust leads to better outcomes. Empowered teams are more likely to innovate and deliver high-quality work.
We know this is true. When you are motivated toward something, you have energy and ideas to work on it and get it done. Trusting your team without micromanaging them and giving them autonomy to work so that they are all doing the part of the project that they do best are great ways to motivate and support the team. This is what we do in Agile.
6. Face-to-Face Communication: The most efficient way to convey information within a development team is through face-to-face conversation. This direct communication method reduces misunderstandings and accelerates decision-making.
Remote work is now a part of the adult working experience, either because you or another team or company is remote, hybrid, or located outside of your office. Often, a video call is the best way to meet and it’s so easy to keep the camera off, either from company culture or “zoom fatigue.” Trust us, Snowbird is a remote company, so we get it.
We also know that when you can see someone and look into their eyes (even if it’s through a camera), our interactions as people are better and more responsive to one another.
Think about when you play a sport, say basketball. The best teams on earth move the ball quickly between teammates until they have an open shot. The quicker the communication with the least delay, the faster someone can move to be open to get the ball and take the next shot and get around the blocker. When you work face-to-face, your communication can be that much faster and through the rapport and relationships you build with your team, you’ll be able to work around issues that might slow you down and take your work to the next level.
As you can see, these principles are common sense and apply well beyond software development. We’ll go through the rest of the principles in our next post, make sure to check it out!