How to Build an App Using Agile Development
You finally have it. After months, maybe even years, of failing to envision an app that will resonate with users, you’ve come up with The Really Good Idea: An app that fills a niche no one else has thought of, an app that fills a need users didn’t even know they had.
So, you plan. You decide exactly what you’re going to build, you get funding, you set goals, you track every step, you work an utterly absurd amount of hours, you arrive at your finished product, you release it to the world, and… no one is impressed. Your idea was not the hit you expected; users barely notice it.
Predicting what customers will want is not easy. No matter how skilled your team is, if your Really Good Idea isn’t actually as useful or appealing as you imagined, at the end of it all you’ll have merely wasted time, money, and energy.
Agile development is essentially an umbrella term for various methodologies such as Scrum and extreme programming (XP), and represents a way of avoiding this fate. The idea came about in 2001 when 17 software developers met up at Utah’s Snowbird resort and shared their ideas with one another about making the software development process more efficient and simple. The result was the Manifesto for Agile Software Development, which outlined a set of principles used to build an app that actually gives users what they want.
What Agile Development Is
The emergence of agile development followed a period in the 1990s when teams were striving to create lightweight software development methods. Prior to this, many software development teams followed the “waterfall” model. This process involved following a strict set of steps to arrive at a finished product: Once the product idea was in place, teams would first analyze the software and system requirements necessary to realize the concept. Following that, they would design the software architecture, code, test for bugs and defects, and eventually introduce the finished product.
It’s a process that requires a fair amount of planning and provides little room for flexibility. The problem for app developers, though, is that all that strict regulation, combined with the sequential nature of the waterfall method, means that there’s no way of knowing whether or not users will actually be interested in a product until it is complete.
Agile development, by focusing on incremental goals, rather than just the major end goal, gives developers the opportunity to respond quickly to user reactions and modify plans to build an app that will succeed. By embracing certain key principles, including frequent delivery of software and an openness to change at any step of the process, developers can avoid gambling all of their resources on the hope that the app they are working to build will appeal to users.
The Agile Development Process
Again, it’s important to keep in mind that agile development encompasses many different methodologies. No business needs to use all of them, nor could any one business possibly use all of them. As such, the process varies depending on the project.
That said, there are basic aspects of agile development that are generally applicable. One of these is the idea of “iterations.”
Instead of spending months working to create a complete product, which often involves a tremendous amount of planning and risk, agile app development encourages teams to spend one to four weeks developing basic iterations of an app. At the end of each cycle, the latest iteration is demonstrated. Although these individual iterations are rarely strong enough to bring to market, they allow a business to introduce new features, identify potential problems, and adapt to changing needs more quickly.
While working on an iteration, a common part of the agile development process is a daily meeting in which all team members explain what they did the previous day to reach the goal of that iteration, and bring up any roadblocks they anticipate. However, these daily meetings are usually not meant to be problem-solving conferences. If any problem-solving does occur, it only involves select members of the team, so that other team members can continue working on their piece of the project. In this way, time management and efficiency is preserved during the process.
Although milestones are a key part of agile development, they can be changed if necessary.
Agile Development Roles
There is no one set of roles that all agile development teams adopt. Different methods encourage different roles. However, there are certain team members who are typically involved.
Usually, the development team consists of 10 or fewer people equipped with the skills necessary to plan, develop, and test a new iteration of an app. These teams are usually self-motivated, and although there is rarely a specific team “leader,” there is often one member whose role involves addressing any issues that would distract a team from its task.
Another key player often involved in agile development is a product manager who represents the interests of the customers and stakeholders. Because the development team should be focused on reaching the goals of a particular iteration, someone needs to be available who can make sure that the work being done will actually result in something of value. One of the major principles of agile development is the idea that business owners and developers should be in constant communication, and this person facilitates that.
Benefits of Agile App Development
Building a successful app almost always involves being able to adapt. Your Really Good Idea might have only been the seed for something that customers actually want. As talented as you might be, predicting what will or will not resonate with users is no easy task. Yet, some approaches to software development rely on a team’s ability to make that kind of accurate prediction.
Agile development helps to limit risk by letting teams build apps in increments. Users can test new iterations and provide feedback; additional features can be launched to see if they add to the product; teams can spot potential problems early. They can also identify potentially successful features that they might not have thought of during the early planning stages.
As Fueled strategist Aaron Cohen puts it, “The agile process allows for unparalleled flexibility and customization during the development cycle of an application. While we may be certain of fundamental features and user experiences, the interface details and specific user flows can be tweaked during development should new use cases arise or insights be learned. Our designers often create discrete graphic elements moments before the engineers incorporate them into the codebase, freeing the engineers from reliance upon product level design files and less-than-ideal graphic elements. This is one of the primary reasons why our apps, even our v1 releases, exude such an evolved design sensibility.”
To put the agile development process to use, let’s look at a real-life example: The origin of Instagram is Burbn, a check-in app that you’ve probably never heard of. The team realized it was too similar to Foursquare and as a result, they changed direction, focusing on the photography element of the product. In the world of app development, teams have to be able to pivot when a better opportunity presents itself. But by sticking to a plan that’s too rigid, this can be difficult, if not impossible.
Agile development isn’t about doing away with planning. It isn’t about being unfocused. It’s about making sure your team works in a way that allows it to make those pivots when they need to.