Everything you need to know about this transformative approach to software development.
Almost 20 years ago, 17 software developers gathered at a Utah ski resort to write down a series of principles and values that would come to be known as the Agile Manifesto. Slowly but surely, these values came to define the preeminent approach to development both inside the tech industry and out — and now most development teams create their products in rapid iterations, delivering working software continuously.
Today, Agile principles and terms remain at the forefront of modern best practices in software development, but there’s a nearly infinite number of ways that companies can approach the methodology. Agile is a series of values, not a mandated set of steps or processes — that’s why there continues to be a lively debate as to how those values are best achieved and implemented. To help you identify your team’s ideal approach and put it into action, I’ve assembled a refresher on the basics of Agile and the latest trends driving its continued adoption.
The Four Core Tenets of Agile
If you’ve done even just preliminary research on Agile Methodology, you’re already aware of its core tenets. But the values can seem abstract and vague if you’ve never seen them in practice. While these ideas are borne out differently in different organizations and by different leaders, they’re generally implemented in the workplace in the following ways:
1) Individuals and interactions over processes and tools
Yes, it’s important to follow certain processes and procedures to ensure consistency, but what’s more important is that you have a talented team on hand that is willing and able to work together to quickly finish important projects. That means prioritizing people with certain problem-solving skills or who make a good “cultural fit” over those who are familiar with particular software.
While advancements like video conferencing and cloud technology have made remote collaboration more practical around the world, many believe that Agile’s emphasis on interactions aligns with the tenant that development teams be co-located in the same office. Taking the idea even further, Agile advocates (Stride included) take the “interactions” part of this value to mean that engineering practices like pair programming are a key ingredient in Agile’s effective implementation.
Today, many teams adopt pair programming in a variety of ways. As the tech scene has grown increasingly competitive, organizations looking to get a competitive edge in terms of both speed and quality are using pairing at least some of the time. It’s a smart decision backed up by plenty of data: one study found that pairs are able to create shorter programs with 15% fewer defects than programmers working alone.
2) Working software over comprehensive documentation
Even the best Powerpoint presentation can only be so compelling. What truly demonstrates value and progress to business stakeholders is a working piece of software. In early iterations where a working prototype is not yet available, teams should be practicing rapid visual prototyping to give stakeholders a strong sense of what the final product will look and feel like.
3) Customer collaboration over contract negotiation
There are three variables to any project: money, time, and scope. For a project to be Agile, the stakeholders must agree to fix one and only one of these variables. They can pick which one, but they can not fix two variables. Beyond that, teams must focus on collaboration, amongst themselves and also with customers.
To do so, developers are encouraged to take a user-centered approach, continually interviewing the customer to refine their understanding of exactly what they want from the product and showing them iterations to ensure their expectations are being met. And to make sure this approach makes proper sense for your business, you’d be wise to focus on aligning your contracts with your Agile methodology.
4) Responding to change over following a set plan
Your methodology can’t be very agile if it doesn’t respond to and embrace change. The purpose of breaking the development process into week-long sprints is to identify unforeseen problems with your initial plan, so it’s key that Agile developers don’t let some idea of how the project was supposed to proceed get in the way of a successful finished product that has evolved to meet end users’ actual needs.
Top Trends in Agile
While these core tenets remain critically important to Agile developers today, they’ve also been around for over 15 years: plenty of innovations and improvements have been made since 2001. Here are a few of the most popular trends in Agile that are affecting how it’s practiced today.
1) The Return of XP
As I mentioned, one of the most important trends in the Agile world today is a resurgence in the practice of XP and pairing. Stride sees the following best pair programming practices in 2017:
- Pairing is leveraged over 70% of the time to train junior developers or ramp up new hires on a code base
- A team solving relatively complex or unknown problems uses pairing 80% of the time
- A team of seasoned developers solving relatively known problems uses pairing about 50% of the time
2) The Rise of the Citizen Developer
As the tools and methods associated with software development become more accessible, employees outside of IT are beginning to use rapid application development to test and develop solutions to business problems on their own. This points towards an almost endless series of possible applications for Agile in the business world.
3) Automated Testing Is Simplifying Development
Some programmers are choosing to test new code through automated platforms like Selenium, a far faster method of testing than the traditional, manual method. While some worry that automation reduces developers’ familiarity with the program and its code, others are drawn by the undeniable speed advantage offered by such platforms.
Why the Basics Still Matter
So many variants and modifications of Agile have been created and popularized today that many in the tech community are debating whether or not we live in a post-Agile world. But the reality is that Agile Methodology has become so deeply ingrained in development operations that it’s impossible to distinguish it from the practice of software development itself. While this broad and flexible approach will continue to be applied in new and innovative ways, we believe that it remains critically important to remember the fundamental values that undergird Agile and make it effective.