In the earliest days of app development, most teams used what is called the “waterfall” method – a rigid sequencing of activities from requirements gathering to development, testing and production. The problem with waterfall is that it took too long to get a new product or feature in the hands of users. As someone once said, “waterfall is great for delivering the product you needed a year ago.”
Agile development emerged as a welcome alternative to waterfall. The agile method focused on breaking down requirements into much smaller chunks of work (perhaps a single feature) that could be developed iteratively over time, based on user input and changing market dynamics. It also got teams to work in very short intervals, or “sprints,” of typically one to two weeks. The agile approach is a better fit for the software-as-a-service (SaaS) era and has been widely adopted by app dev teams.
But, there’s a catch. While agile has become widespread, the frequency of production releases hasn’t changed much since the waterfall days. Many teams are still bundling features and shipping major releases just a few times a year. A recent survey found that half of app dev teams released applications four times a year or less.
As one Forrester research article puts it: “Agile product management tools improve reporting and visibility, but they don’t improve other essential activities in the delivery pipeline, like building, testing and deploying software.” Effectively, the bottleneck has shifted further down the delivery chain – from planning and development to building, testing and deployment.
Why speed is important to mobile
Thanks to the high standards set by popular consumer apps like Twitter, Pinterest and Sworkit, mobile users have become conditioned to expect regular app updates, new features and rapid fixes. While infrequent updates might be okay for some enterprise use cases, it doesn’t work well in mobile. Instead, user expectations put pressure on enterprise teams building mobile apps – whether the app is for employees, partners or customers – to deliver new releases on a nearly continuous basis.
In a few cases, the business model requires teams to ship production releases in days or weeks. Acker Wines is a highly successful wine merchant that auctions off premium wines to discerning buyers, and their auction cycle runs every two weeks. Napa Group, a digital consultancy responsible for building the Acker Wines mobile app, has just two weeks to build, test and release new features before the next auction. Bundling features and shipping semi-annually, or even monthly is not an option.
Shipping code faster
To fulfil the vision of agile development, we need to look beyond agile.
One avenue is DevOps. DevOps is a squishy and often overused term, but it’s an important concept for app dev leaders. Essentially, DevOps extends the different agile tools and methodologies beyond the development team to include the operations and QA teams that are responsible for putting production code in the hands of users. In the simplest terms, DevOps “ensures that the working software sitting in a developer’s laptop reaches the production phase easily and quickly.”
The dream of DevOps is to move at the speed of development. That means being able to build, test and release working code as soon as it’s ready.
Three ways DevOps accelerates app delivery
With that in mind, here are three concrete ways that DevOps tools and practices help development teams be more successful.
- Continuous integration: When a developer commits a code change to a source code repository, CI automatically builds and integrates the changed code and prepares a new version of the app for testing or release. CI accelerates the pace of delivery by streamlining the build process and by providing a shared environment where multiple developers can contribute code changes at the same time.
- Continuous feedback: Automated testing, real-time error monitoring and user testing tools provide continuous feedback for product teams to improve app quality and fix problems at their source. Continuous feedback helps to make sure teams are building the right product and increases the pace of updates and fixes to address UX issues.
- Real-time app updates: In the mobile space, app developers are often at the mercy of the app stores to review, approve and publish production releases. Even when teams are moving fast to fix a bug or push a key feature, they often have little control over when a user gets the update. How can you get around this? Some mobile DevOps tools let app publishers send changes directly to users in real-time, without going through the app stores. This puts control back in the hands of the publishers and can drastically reduce the time it takes to get a production release in the hands of users.
Agile and DevOps = harmony
App dev leaders need to look critically at their culture, tools and processes to see if they’re really fulfilling the vision of agile, or if they’ve just found a more efficient way to deliver the same user experience as waterfall. To keep pace with user expectations, IT leaders should look beyond agile and embrace DevOps practices to accelerate app delivery.
Of course, the best approach is to combine agile with DevOps. Putting them together creates a powerful combination that should set the standard for how mobile apps – and software in general – should be delivered in 2018 and beyond.
Written by Creator Project Lead at Ionic, Matt Kremer