Agile for Products: Incremental, Iterative or both way of development?
“Intelligence is the ability to adapt to change.” – Stephen Hawking
Agile is about adapting to change; it is based on the dogma that entrepreneurs want to change and development teams must be ready to adapt.
The Agile methodology is a way to manage a project or product by dividing it into different phases. It is about constant collaboration with stakeholders and continuous improvement at every stage. Ongoing collaboration is essential, both with team members and stakeholders.
The?Agile Manifesto of Software Development ?brought a pioneering way of delivering value and partnering with customers when it was created in 2001.
The four core values of Agile are:
It is a combination of repetitive and incremental workflows with a focus on process customization and customer satisfaction through fast delivery of the work product.
Unlike the traditional cascade or waterfall model, where each step in a software development lifecycle (SDLC) is performed sequentially after completing a previous step, a smart one promotes the idea of overlapping phases.
The below image summarizes the differences between Agile and traditional Waterfall model.
Agile methodology promotes repeated/iterative development with incremental releases. To understand more about how agile an augmentative and repetitive method is, let us first know more about the iterative and incremental development methods.
Iterative Process
An iterative process is one that continues with successive refinements. The development team is developing the first installment of the system, knowing in advance that some / many parts are incomplete. The team then repeatedly improves those parts until the product is satisfactory. With each iteration, customer feedback is taken into account and the software is enhanced by adding additional details.
For example, let's take an example of search functionality on a website. A simple search screen can be built for iteration. Advanced search criteria can be added in the next iteration..
Another analogy can be taken from the image above, where the client is unaware of the requirements and simply asks the artist to paint a picture of a woman in a pastoral setting. In this case, the artist creates a sketch first and uses user feedback to understand and paint the correct image in multiple iterations.
Incremental Process
An incremental process involves the delivery of software components in parts. Each step represents a complete subset of functionality and is fully coded and tested.
For example, for an e-commerce store, payment may initially only be supported by credit and debit cards. In the next version, payments via wallets will be supported.
Another analogy can be drawn from the way an artist paints the Mona Lisa picture. In case of using the incremental method, the artist knows how to paint a Mona Lisa painting and proceeds to build individual parts of the painting step by step.
Difference between Incremental and Iterative process
Let's take an example of an e-learning application to better understand the difference between incremental and iterative methods. We can think of functions such as video courses, evaluation questionnaires, student profile management, etc.
If we build this application simply using an iterative method, we build a bit of each part of the application to get entire end to end workflow experience of application. Then we will review and improve each part.
If we create this application only with the incremental method, we will create the video course first. We will then add evaluation questionnaires and finally profile management capabilities. Each part will be refined before moving on to the next.
Agile: The incremental and iterative method
Agile method combines both incremental and iterative methodology. It is iterative because it is intended to improve the work of one iteration to be improved upon in subsequent iterations. It is incremental because finished work is delivered throughout the project.
During a development "iteration", where we build more functions, some can be repeated to improve, change or remove existing functionality, others can step by step add new functionality.
Scrum
Scrum is one of the implementations of a agile methodology, where incremental builds are delivered to customers in repeated 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.
The repeated cycles in scrum are call sprints. The length of the sprint cycle varies from organization to organization and ranges from 2 to 4 weeks. Once an organization has set a certain duration for the cycle, it usually doesn't change.
Scrum Artifacts
Various artifacts of scrum are:
The above artifacts include a list of Epics and User Stories, arranged according to their priorities. A product backlog contains a list of all the stories that are available and need to be developed. The sprint backlog includes the list of stories that a team plans to take in a given sprint.
领英推荐
Scrum Events
The sprint begins with Sprint Planning, where the top priority stories of product backlog that can be taken by the team in the current sprint are added to the sprint.
Every day a small activity called Daily Standup is done to track the amount of work remaining.
At the end of a sprint, there is a Sprint review/demo for the product owner to ensure all acceptance criteria are met and delivery is as expected.
Then there’s another activity called Sprint Retrospective, which looks at the sprint and discusses opportunities for further improvement.
Implementation of Agile Methodology
To better understand how the Agile methodology is used in the industry, let's look at the case of a food technology company.
This food tech company already lists/discovers restaurants where a user can open the app and find nearby restaurants. Please note that the features below are inline for the following versions:
Let's see how these functions can be developed and delivered using the Agile method. We'll talk about iterations and incremental delivery of these features.
All the above features are Epics as described below:
These epics can be broken down into small, self-contained, marketable, valuable, measurable and testable user stories that can be developed and delivered through multiple iterations.
Rate and Review Restaurants
Restaurant ratings and reviews help the app gain user trust by adding social validation that informs users about different aspects of the restaurant such as service quality, food quality, taste, hygiene , the behavior of the staff, etc. Let's remember that we want to have the following functionalities in the rating and reviews function of the application:
It will be hard job to build the above function with all the functionalities in one development cycle. So we can think about prioritizing and delivering features in chunks, step by step across multiple releases. This is where agile comes into the picture.
In first iteration, we can build the first two most essential parts of the functionality i.e. Rating on scale of 1 to 5 and writing a descriptive review with 100 characters limit.
In the second iteration, the team received feedback from customers that the 100-character limit is too low. Therefore, we can increase the limit to 200 characters by making changes to existing functionality. Additionally, the team believes that giving users the option to add photos to reviews will help increase the authenticity of the review. So that the team can create and launch the functionality to add photos to the review.
In the next iteration, to increase user engagement on social networking sites, the Facebook notification sharing feature can be provided. Other social media platforms such as Twitter and WhatsApp may be added later in later iterations / releases. The ratings can also be divided into different sections such as staff behavior, atmosphere, food quality, etc., each on a scale of 1-5.
Filters for Search
Since it is a restaurant discovery service, its goal is to help users easily find the restaurants of their choice. Filters in search results can be very helpful in achieving this goal. There are many filtering options that can be provided, but again, providing them all in one loop will be difficult for the team as it will flood the user with a lot of new stuff and lead to confusion.
So the filters can be implemented incrementally in multiple iterations as discussed below.
In first iteration, we can develop the basic filters like filter by location and filter by dishes.
In second iteration, we can provide other option to filter by ratings. This will help the user further to search and decide upon the restaurant's quality.
In third iteration we can develop filtering by price option so that the user can narrow down the search based on his/her budget.
Other filters can be added such as vegetables only, promotional offers, pour alcohol, open now, etc. in later iterations.
Additionally, users may have the option to save their default filters for a better user experience in a later version. This will help users save their filters and can be used automatically when the user starts searching for a restaurant.
Online Ordering
This company is already active in the hospitality industry. Therefore, it would be a good idea to use the network to start food delivery. This reduces the hassle of users going to the restaurant to eat. This will also help the restaurant increase their orders.
In this case there will also be many functions, and they can be delivered step by step and in iterations as explained below:
In the first iteration, a minimum of functionality is available, such as listing nearby restaurants, menu navigation, selecting and adding items to cart, adding addresses and contact details, paying by card, placing orders, and customer support.
In the second iteration, review and feedback can be implemented for the order. This will help to understand how users feel about the service.
In the third iteration, features such as wallet payments and UPI, adding labels to the addresses, can be added. This reduces the cognitive load on the user to identify the address by going through the full address if the user has multiple addresses in their account.
In the fourth iteration, the ratings can be divided into two parts, one for the quality of the food and one for the quality of the service provided by the app or the delivery person.
In further iterations, functions such as real-time delivery boy tracking, contact with the delivery boy, real-time display of the estimated time of arrival of the order, addition of a tip for the driver, etc.
Summary
In conclusion, we can say that neither iterative nor incremental are good in themselves. We agree that we can't build anything without repeating at some point and we can't release anything without raising at some point. So we should develop software iteratively and incrementally release it in different sizes over time and that's what Agile means.