The benefits of Agile development have long been touted: faster development cycles, increased innovation, and improved productivity. But Agile isn’t just about developing faster. Taking into account customer experience (CX) is a key part of it, too.
As Agile has gained traction across the industry, software has morphed into a living thing that grows and changes, quickly. According to Appian’s director of software development Carlos Aguayo, a rapid release cycle is one in which development teams can “deliver incremental or complete value to your customers in terms of days, week, or a couple of months.” In longer release cycles — which had for so long been the norm — a customer might have to wait a year or more for a new release.
But faster releases are only a piece of the Agile puzzle. It’s not enough to shorten release cycles — you must be utilizing these shorter release cycles to deliver value to your users. Only then can you unlock the full value of Agile.
RELATED CONTENT:
Mapping customer journeys: The path to better UX
Differentiating CX from traditional software user experience
How to successfully apply DevOps in your CX development
“Every professional software developer or engineer understands that software are living, breathing systems that have to continually evolve, grow and adapt to changes in user demands and requirements as well as other external factors that could impact how the software is designed and built,” said Bryan Osima, software engineer and CEO of Uvietech Software Solutions. “The expectation is never — or should never be — that you build it once and then you’re done.”
Software isn’t built for the sake of being built. It’s built to be consumed, Osima explained. “If the vast majority of your users are clamoring for specific functionality and it makes sense to build it, then you should,” he said.
Progress’ principal developer advocate TJ VanToll explained that developers are obsessed with trends. “Our collective obsession is the reason the Gartner Magic Quadrants and Forrester Waves of the world exist—we want to use technologies on the rise, and abandon technologies that have fallen out of favor. And for good reason. Popular technologies have more learning resources, more support options, and look more attractive on a resume.”
But getting too swept up in trends can create a gap between what developers want to build and what users actually want from an application.
In the 2019 CX Industry Report, UserTesting claimed that customers are the most important trend to watch — not VR, AI, IoT, or whatever other technology buzzword that companies cling to. “No matter what some market research may indicate, the only thing that really matters is what matters to your customers. If you already include human insight as part of your product development lifecycle, then you’re in a great position. You can quickly leverage that insight to make informed decisions about what to build and when—and stay on top of trends in consumer behavior,” the CX report states.
According to Aguayo, a benefit of sticking to a rapid release schedule is that developers can get their code into production faster, rather than having to wait months or years to see the impact on the customer. This means that they will be able to see how users respond to an application’s new features and take that into consideration for the next release cycle.
“If you’re spending a lot of time working on something before a customer really gets to look at it and give feedback, it’s easy to get bogged down in details,” said Alex Nied, senior software engineer at SPR. Development teams might spend an excessive amount of time on a new feature that users might not even want.
By implementing a development loop in which user feedback influences development, teams can cut down on unnecessary development time and focus on the features that users actually want.
Osima added that it’s not possible to meet the needs of every single user with a single application. “The reality is not every user will be pleased and satisfied. The goal should be to ensure that the majority of users have a great experience and level of satisfaction with the software,” he said.
He recommends prioritizing what the most important requirements are for the majority of the user base, and then making sure that the update you’re shipping caters to that. On subsequent releases, you can begin introducing other features or changes.
Best practices for rapid release
According to Osima, there are some best practices that teams should follow when building rapid release software. These include planning for extensibility, adopting agile and producing rapid iterations, and embracing modularity with code.
Planning for extensibility involves building software that you can either add things to or remove things from without destroying the entire foundation, said Osima.
Adapting agile and rapid iterations allows developers to get new versions to users as soon as possible, enabling teams to see what features are working and what isn’t, and then refactoring appropriately, he said.
Finally, modularity involves breaking features into units that can exist independently. This allows developers to develop, test, and iterate upon certain features without having to work on the entire system at once, Osima explained.
“Developers working in rapid release cycles need to strike this difficult balance between spending time architecting a system that will adapt to changing requirements (focusing on the software’s benefit) and minimizing the time to deliver valuable features to their customers (focusing on the user benefit),” said Asa Schachar, lead developer advocate at Optimizely.
Microservices have become appealing to those teams working on rapid release schedules, for those reasons. “Seasoned developers realize that the best solution right now may not be the best solution in a year or even months from now. Engineers spend a lot of time thinking about how to design a system that scales with new technology or methodologies,” said Schachar. “There are hundreds of different ways to build something, but which way will allow you to best adapt to changing requirements or new technologies in the near future? This is partly why design patterns like microservices have become so appealing because when it comes time to adapt an aspect of the system, it’s only ‘micro’ in size.”