Agile: What is it really?
Updated: May 22, 2019
POSTED ON MAY 17, 2019 BY VALERIE GROCE
Agile…it is quite the buzzword in software development, is it not? You may hear “We use Agile practices” or “Agile methodologies” – but what exactly does that mean? While many businesses enjoy some common practices used with agile teams as they continue to evolve, they are not “Agile practices.” Are you confused yet? Many people that are not in the middle of Agile are, and that is okay. Many don’t need to operate in an Agile way, either. That being said, there are many practices that contribute to an Agile team’s success. A few have already benefitted many different organizations that have nothing to do with software development. Let’s unveil this mystery.
In a nutshell, Agile is a time-boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end. The benefit for software development teams is that it helps them analyze and improve their product throughout its development. The ability to be “agile” makes great strides to increasing the efficiency of a development team, identifying and addressing defects nearly as soon as they are developed before they proceed to affect other code down the line.
An Agile team is first focused on a certain set of priority values, which is what makes Agile unique to other project management practices. In the table below, the values on the right are always secondary to the priority values on the left. Teams familiar to traditional (Waterfall) project management may find these values to be awkward at first, such as negating a well-defined plan or a static contract.
One thing to stress with this chart is that Agile is not “anti” any of the items on the right. Those who adopt Agile values do not dismiss these things, which is why they are listed as “secondary” and not “instead of.” These items exist with an Agile team, but may be addressed differently as they would with a traditional project management team.
Now that the values are understood, we can focus next on the principles surrounding Agile. Notice that these principles support the values. A team may hold certain principles above others, and these principles may vary by project, team or even iteration of the same project since these teams can change as the need requires.
The Twelve Principles are the guiding principles for an assortment of methodologies that may be adopted. The important key idea to take to heart is that the methodologies are subject to change according to the specific principles that the team agrees are of the highest priority. They describe a culture in which change is welcome, and the customer is highly engaged in the work. They also demonstrate the movement’s intent to bring software development into alignment with business needs.
The twelve principles of agile development include:
Customer satisfaction through early and continuous software delivery – Customers are most satisfied receiving working software at regular intervals, rather than waiting extended periods of time between releases. This leaves more opportunity for defects, as well.
Accommodate changing requirements throughout the development process – The ability to avoid delays when a requirement or feature request changes. A team that can change focus quickly is more efficient.
Frequent delivery of working software – This leads us back to number one, and also raises team morale as it experiences frequent wins.
Collaboration between the business stakeholders and developers throughout the project – Better decisions are made when the business (customer) and technical team are aligned in real time.
Support, trust, and motivate the people involved – Motivated teams are most likely to deliver their best work and the customer sees real progress happening frequently.
Enable face-to-face interactions – Communication is more successful when development teams are co-located. These team members have a constant open dialogue.
Working software is the primary measure of progress – Delivering functional software to the customer is the primary factor that measures successful progress.
Agile processes to support a consistent development pace – Teams establish a repeatable and maintainable speed at which they can deliver working software, and they are able to repeat that pace with each release.
Attention to technical detail and design enhances agility – The right skills and good design ensures the team is able to maintain the pace, constantly improve the product, and sustain change.
Simplicity – Develop just enough to get the job done for right now. Because of the likelihood of change, it is best to concentrate on the present goal instead of working ahead.
Self-organizing teams encourage great architectures, requirements, and designs – Skilled and motivated team members deliver the best quality products when they have decision-making power, take ownership, communicate regularly with other team members, and share ideas.
Regular reflections on how to become more effective – Constant goals of self-improvement, process improvement, advancing skills, and techniques help team members work more efficiently. A team may change processes as soon as a better way is identified.
The intention of Agile is to align development with business needs, and the success of Agile is apparent. Agile projects are customer focused and encourage guidance and active engagement by the customer. As a result, Agile has grown to be an overarching view of software development throughout the software industry and an industry all by itself.
This term is not exactly correct, because no actual practices were defined in the values and principles, were they? Agile is not a practice at all, but instead a collection of values and principles, and any practice may be introduced in order to support those values and principles.
Some practice examples you may have heard of to support these values and principles are:
Master story list
Since Agile is not a practice, these practices are not at all exclusive to Agile. Many organizations engage in these practices independently with great success.
The takeaway about Agile is:
Instead of a practice or methodology, Agile is a mindset that is described by 4 values, defined by 12 principles, and manifested by an unlimited number of practices!
Never expect an Agile team to work the same way every time but DO expect them to hold the same values and to be very adaptable. That is the true benefit of an Agile team.