An Agile Story on Zomato.
To introduce any feature in any product, it is important to breakdown the different stages that go into building the feature and then complete the stages to finally get the feature to be ready. However, the process of building the feature can vary greatly and the approach taken can greatly affect the quality.
One of the earliest methods of product development was a sequential process called the waterfall method. This process involved carrying out the different stages of development one by one where the teams moved to the next stage only after finishing the previous one. While this process seems the logical one to follow for developing a product, it does not allow for any changes in requirements or to make any corrections if there is a problem in the subsequent steps. In the fast-changing world of today where requirements of the customers and available technology can change during different phases of development, it is important for the development process to be flexible enough to take this unpredictability into account. This is where the Agile methodology of product development has an advantage over the traditional waterfall method as it has a great flexibility and can deal with changes in the variables very well.
Agile methodology is an approach which has cross-functional teams working on the product development by breaking the process down to multiple increments and then iteratively run through the different stages involved in building a feature or a product viz. ideation, design, implementation, testing and deployment. Each of these increments is then reviewed by the customer at the end of each iteration, called as sprints, so that the customer is able to view a functional module of the product and can provide feedback which can be incorporated in the next iteration.

To understand this better, we will try to apply this methodology for developing new features at Zomato, a restaurant discovery and food ordering app. Zomato initially started out as a restaurant discovery interface which tells users about good restaurants to find in a location. They later expanded into other avenues of the food business like food delivery and Restaurant point of sale software among others.
However, for the purpose of understanding the agile process, let us consider the below 3 features in the Zomato application and see how they can be built:
1. Restaurant Ratings/Reviews.
2. Search Filters.
3. Online Ordering.
As mentioned above, agile is an incremental and iterative process. The product is development in increments and there are cross-functional teams working on different stages of the product development in each increment. We can classify these stages broadly as below so as to understand the development process for each feature:
Ideation: This is the stage where the user requirements are mapped to features that need to be developed in the product. Typically, the questions that are solved in this stage are: How can we meet the user requirement? What all does the feature needs to have in order to meet the requirements?etc.
Design: This is the stage where the design of the feature in the application is done. The questions that the team looks to answer in this stage are where should this feature appear?, how should the information be presented to the user logically and clearly?, How can the user workflow be made intuitive? Etc.
Implementation: This is where the ideas are designs are actually implemented and the code is written to incorporate these features.
Testing: This stage involves testing the developed features against the various acceptance criteria so that the users’ requirements are met and so that the corrections are changes if required can be addressed.
Deployment: This is the stage where the feature is release to the customers and the customers start using it.
Now, let us look at the increments of the features that we have selected for Zomato:
1. Restaurant Ratings/Review systems: Since Zomato is a restaurant discovery app, it would be necessary to have some medium for the users to express their opinions on different restaurants. Here is how the Rating/Review system can be developed over time in increments.
a. Start with a simple feedback button for the users who have visited where they can express whether they have liked a restaurant or not. This can be as simple as adding a thumb up and thumbs down buttons on each restaurant listing.
b. The second increment could be to introduce a rating system where the user could provide a rating for the restaurants out of a 5 point or a 10-point system and can view the cumulative rating of a restaurant provided by different users.
c. This can be followed up by providing an interface for users to review different restaurants and list these reviews on the review page for each restaurant.
d. This can be followed by having a rating system for individual cuisines and for various categories for each restaurant based on Service provided, ambience, accessibility etc.
2. Search filters: These are necessary tools for any application as they help in users to locate what they want.
a. A search button can be provided initially where the user can key in keywords based on restaurant name, location, cuisine etc. and find a list of restaurants that match the keywords.
b. Based on the user response, the search feature can then be improved to search specific to each category like location/cuisine etc.
c. A sort and filter feature can then be added to sort the search results based on location, price, ratings etc and to filter them based on similar criteria in addition to cuisines and other categories.
d. A feature to save their searches and run them again can be provided for regular users.
3. Online ordering: This feature is to allow users to order food from the restaurants online and can be developed in the following increments.
a. Prepare an interface where user can look at the menu of the food available in each restaurant and can pay through a payment gateway.
b. This can be followed by integrating with GPS tracking technologies which would help users to track their delivery and get an ETA on their food delivery.
c. Later, multiple payment options can be integrated into the app and also an option to save a particular option can be provided for users to make payment easily.
This shows an example of how agile methodology can be used to break a problem into increments and iteratively develop features after incorporating user feedback.