Agile Software Development has gained traction in recent years, expanding its foundational values to many sectors outside of tech. For the uninitiated, the plethora of technical jargon can be very intimidating, and those seeking to enter a technical role need to at least have an understanding of an Agile environment.
What is Agile?
Purists will tell you that Agile is simply a set of values to operate by, and they are not wrong. The Agile Manifesto states:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Taken at face value, this just means that any team working in an Agile environment prioritizes the elements on the left (in bold) rather than the elements on the right. To be more specific, Agile advocates 12 principles that define such an environment:
All of these principles may seem rather obvious as it would make sense for any organization to incorporate them. After all, what company doesn’t want good design, customer satisfaction, and self organization among other things? In fact, these attributes seem so vague that it is difficult to comprehend how they apply to a day-to-day implementation, as there are no concrete guidelines as what should be done.
However, this is intentional within the Agile framework. These principles are meant to provide guidance to different groups rather than an explicit methodology because people can vary in their work preference. Enforcing strict policy is pretty much antithesis to one of the core principles of Agile–welcoming and adapting to change.
The Agile Difference
To understand what makes Agile unique, consider this hypothetical scenario: a small e-commerce clothing business wants to set up a website where customers can order their products online and have it shipped to them, so they contract your company to help them build their website. As a CEO, you may take this traditional approach:
Though these steps may seem logical at first, they suffer from the following downfalls:
- Lack of Feedback: Clients may not know exactly what type of features they want the most or will lead to the most value. In addition, developers have no feedback on how well their features create values for the client and how it can be adjusted.
- Bureaucratic Bottleneck: Contract negotiation is necessary, but it should not come as a cost to communication. If a new or altered contract is required for every intended feature, this slows down the progress of the entire project and will lead to subpar results.
- Inflexible: Obstacles may occur on both the side of the client and the development team. Maybe the client can no longer afford as many features or needs something more urgently; maybe the development team incorrectly approximated the amount of time needed to do something. Without leeway for consistent negotiation and communication, both parties will end up being dissatisifed.
On the other hand, an Agile environment is built on a foundation of communication between all parties (Ie. the first value). As a CEO using Agile principles, you may instead take this approach:
Though it is a bit of an oversimplification, the diagram shows that all parties of interest are in constant communication with each other rather than relying on a one-and-done contract. This allows greater versatility in adapting to new challenges and demands from all parties because an Agile environment is based on an iterative approach for every request by the client.
A Case Example of Agile
Again, the bottom line is that all interested parties are in constant collaboration about the end product. This helps clients feel more invested in the process and provide a quicker return on investment, since they have immediate access to features immediately as they are developed. On the other hand, the development team has chances to test and refine features even after implementation. This increases trust and reliability for all parties.
This is by no means a comprehensive view into the Agile process, as there is an abundance of methodologies, like scrum and kanban, that can be adopted to maximize efficiency and feedback, especially on the development side. In future articles, some of these strategies and techniques will be discussed, as they are often used as the basis for an Agile environment. To reiterate, however, Agile is simply an amalgamation of four values and 12 principles that, when applied correctly, lead to greater efficiency and maximum value for all parties.