Agile Methodology: Incremental and Iterative way of development

Ashutosh Agrawal
9 min readDec 4, 2019

--

“Agile development reflects a product lifecycle approach (continuous delivery of value), rather than a project approach (begin-end). While an individual release of a product can be managed as a project, an agile approach views a release as a single stage in a product’s ongoing evolution.” ― Jim Highsmith

Agile method and methodology is a particular approach to project management that is utilized in software development. It is a combination of iterative and incremental work sequences with a focus on process adaptability and customer satisfaction through the rapid delivery of the working product.

Unlike the traditional waterfall model, where each step of the software development lifecycle (SDLC), is done sequentially after the completion of the previous step, agile promotes the idea of overlapping phases.

The below image summarises the differences between the Agile and traditional Waterfall models.

Agile v/s Waterfall (Source)

The agile method follows the 4 values and 12 principles as defined in the Agile Manifesto.

Agile methodology promotes iterative development with incremental releases. To understand more about how agile is an incremental and iterative method, let us first understand more about incremental and iterative development methods.

Iterative Process

An iterative process makes progress through successive refinement. The development team develops the first cut of the system, knowing in advance that some/many parts are incomplete. The team then iteratively enhances those parts until the product is satisfactory. With each iteration, customer feedback is taken into account and the software is improved through the addition of greater detail.

For example, let us take an example of search functionality on a website. In the first iteration, a simplistic search screen can be built. In the next iteration, advanced search criteria can be added.

Making a picture of the Mona Lisa in iterations (Source)

Another analogy can be taken from the above picture where the customer is not clear about the requirements and just asks the artist to paint a picture of a woman in a pastoral setting. In this case, the artist first creates a sketch and takes the user's feedback to understand and paint the proper image in multiple iterations.

Incremental Process

An incremental process involves delivering components of the software in parts. Each increment represents a complete subset of functionality and is fully coded and tested.

For example, for an e-commerce store, initially, payment can be supported only via credit and debit cards. In the next release, payment via wallets can be supported.

Incrementally making a picture of the Mona Lisa (Source)

Another analogy can be taken from the way an artist paints the picture of the Mona Lisa. In the case of using the incremental method, the artist knows that he has to paint a picture of the Mona Lisa and he continues to incrementally build separate parts of the image.

Difference between Incremental and Iterative process

To better understand the difference between incremental and iterative methods, let us take an example of an e-learning app. We can consider features like video courses, test series, student profile management etc.

If we build this app only using the iterative method, we will build a little of each part of the app. Then we will revisit and enhance each part.

If we build this app only using the incremental method, then we will build the video course first. Then we will add test series and finally profile management capabilities. Each part will be made perfect before moving on to the next part.

Agile: The incremental and iterative method

Agile method combines both incremental and iterative methodology. It is iterative because it plans for the work of one iteration to be improved upon in subsequent iterations. It is incremental because completed work is delivered throughout the project.

Agile development method (Source)

During a development “iteration” where we build several features some may be iterating to improve, modify or remove existing functionality, while others may be incrementally adding new functionality.

Scrum

Scrum is one of the implementations of agile methodology in which incremental builds are delivered to customers in iterative cycles of 2 to 4 weeks.

Scrum Teams are self-organizing and cross-functional teams of 7 +/- 2 members. There are three roles in a scrum team viz. Product Owner, Scrum Master and Development team member.

(Source)

The iterative cycles in scrum are called sprints. The length of the sprint cycle varies from organisation to organisation and ranges from 2 to 4 weeks. Once an organization decides on a particular duration for the cycle, it is usually not changed.

Scrum Artifacts

Various artefacts of scrum are:

  1. Product Backlog
  2. Sprint backlog

The above artefacts contain a list of Epics and User Stories ordered by their priorities. The product backlog contains a list of all the stories that are available and need to be developed. The sprint backlog contains the list of stories that the team plans to take up in a particular sprint.

Scrum Events

The sprint starts with sprint planning, in which the top priority stories from the product backlog which can be taken up by the team in the current sprint are added to the sprint backlog. Every day a small activity called daily standup is done to track the amount of work left. At the end of the sprint, there is a sprint review/demo to the product owner to ensure that all the acceptance criteria are met and the delivery is as expected. After that, there is another activity named sprint retrospective, in which the sprint is reviewed and opportunities for further improvement are discussed.

Implementation of Agile Methodology

To understand more about how Agile methodology is used in the industry, let us consider the case of a food tech company.

This food tech company is already in the restaurant listing/discovery business where a user can open the app and look for nearby restaurants. Let us consider that the below features are in line for the next releases:

  1. Rate/review a restaurant
  2. Filters for search
  3. Online ordering

Let us consider that the team follows the scrum framework.

Let us look at how these features can be developed and delivered using the Agile method. We will discuss the iterations and incremental delivery of these features.

All the above features are Epics as described below:

  1. As a user, I should be able to rate the restaurant so that I can share my experience with other users planning to visit the same restaurant.
  2. As a user, I should be able to apply certain filters in the search so that it is easier to find restaurants based on my choice.
  3. As a user, I should be able to order food online so that I can enjoy the food from my favourite restaurant without going there.

These epics can be further split into small, independent, negotiable, valuable, estimable and testable user stories which can be developed and delivered across multiple iterations.

Rate and Review Restaurants

Restaurants review and ratings help the app gain trust among the users by adding a social validation which tells the users about various aspects of the restaurant like the quality of service, quality of food, taste, hygiene, staff behaviour etc. Let’s consider that we want to have the following functionalities in the rating and reviews feature of the app:

  1. Rating on a scale of 1 to 5.
  2. Review description.
  3. Add photos to the reviews.
  4. Share reviews on social media platforms.

Building the above feature with all the functionalities in one development cycle will be difficult. So we can think of prioritising and delivering the functionalities in parts, incrementally across multiple releases. This is where agile comes into the picture.

In the first iteration, we can build the first two most essential parts of the functionality i.e. Rating on a scale of 1 to 5 and writing a descriptive review with a limit of 100 characters.

In the second iteration, the team got feedback from the customers that the 100 characters limit is too less. Hence we can enhance the limit to 200 characters by making modifications to the existing functionality. In addition to that, the team feels that giving users, the option to add photos to the reviews will help in increasing the genuineness of the review. So the team can build and release the functionality to add photos to the review.

In the next iteration, to increase user engagement on social media sites, the functionality to share reviews on Facebook can be delivered. Other social media platforms like Twitter and WhatsApp can be added later on in subsequent iterations/releases. Also, the ratings can be split into multiple sections like staff behaviour, ambience, quality of food etc. each on a scale of 1 to 5.

Filters for Search

Being a restaurant discovery service, the goal is to help users find the restaurants of their choice easily. Filters on the search results can be very helpful to achieve that goal. There are lots of filtering options that can be provided, but again delivering them all in one cycle will be difficult for the team as well as it will flood the user with a lot of new things and may lead to confusion.

So the various filters can be added incrementally in various iterations as discussed below.

In the first iteration, we can build the basic filters like filter by locality/area and filter by cuisine.

In the second iteration, we can give an additional option to filter by ratings. This will help the user narrow down the search and decide upon the quality of the restaurant.

In the third iteration, we can add filtering by cost option so that the user can narrow the search based on her budget.

Other filters like veg only, promotional offers, serving alcohol, open now etc can be added in subsequent iterations.

In addition to that users can be given the option to save their default filters for a better user experience in a later release. This will help users keep their filters, which can be auto-applied when they start searching for restaurants.

Online Ordering

This company is already in the restaurant listing business. Hence it will be a good idea to leverage the network to start food delivery. This will reduce the hassle of users going to a restaurant to eat. This will also help the restaurant in increasing their orders.

In this case, also there will be a bunch of features that can be delivered incrementally and in iterations, as discussed below:

In the first iteration, bare minimum functionalities like listing the nearby restaurants, browsing through the menu, selecting and adding items to the cart, adding address and contact information, payment using cards, placing orders and on-call customer support can be provided.

In the second iteration, rating and feedback for the order can be rolled out. This will help in understanding how users feel about the service.

In the third iteration, functionalities like payments using wallets and UPI, and adding labels to the addresses can be added. This will reduce the cognitive load on the user to identify the address by going through the full address, in case the user has multiple addresses in her account.

In the fourth iteration, the ratings can be split into two parts, one for food quality and the other for the quality of service provided by the app/delivery person.

In further iterations, features like real-time tracking of the delivery person, contacting the delivery person, real-time display of estimated time of arrival of the order, adding a tip for the delivery person etc. can be delivered.

Summary

To conclude we can say that neither iterative nor incremental is excellent alone. We can agree that we can’t build anything without iterating to some degree and we can’t release anything without incrementing to some degree. So, we develop software iteratively and release incrementally in various sizes over time and this is what agile is all about.

--

--