Agility in the World of Software Product Development
Zomato
History
Software Product Development has come a long way since the initial days when an idea was conceived, requirements gathered and then came the Product after a long development cycle including design and testing. This was the era when ‘Waterfall Methodology’ was the de-facto process in the software development world.

Basic premise for the ‘Waterfall Methodology’ were flawed. The problem being, firstly, Users can describe their business workflows, but were unable to precisely define what is needed before starting to build the product. Secondly, the translation from requirements, imperfect as they are, to specifications, and from specifications to implementation, were rife with ambiguities.
In majority of cases, the problem was, businesses moved faster than the estimated timeframe. Within the space of development cycle, requirements, systems, and even entire businesses were likely to change. That meant that many projects ended up being cancelled partway through, and many of those that were completed didn’t meet all the business’s current needs, even if the project’s original objectives were met. Software development was becoming an expensive and risky proposition for businesses. Although, Waterfall proved to be advantageous in situations where client knows exactly what he wants and has a definite idea of what the program should be doing at the end.
This growing frustration among the experts, led them to come together and come with a newer and more agile process what we know today as ‘Agile Methodology’

in software development. This process has been refined over the years and instead of a sequential design process, the Agile methodology incorporates both incremental and iterative product development processes. Incremental software development entails delivering finished components of the whole in parts. It allows you to stagger the release of features which are of utmost value to customers. Iterative software development allows for instant feedback at multiple levels of the product development process.
It emphasizes on four core values:

- Individual and team interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Scrum is a subset of Agile. It is a lightweight process framework for agile development, and the most widely-used one. A Scrum process is distinguished from other agile processes by specific concepts and practices, divided into the three categories of Roles, Artifacts, and Sprints.
The Scrum framework includes:

· A product owner creates a prioritized wish list called a product backlog.
· During sprint planning, the team pulls a small chunk from the top of that wish list, a sprint backlog, and decides how to implement those pieces.
· The team has a certain amount of time — a sprint (usually two to four weeks) — to complete its work, but it meets each day to assess its progress (daily Scrum).
· Along the way, the Scrum Master keeps the team focused on its goal.
· At the end of the sprint, the work should be potentially shippable: ready to hand to a customer, put on a store shelf, or show to a stakeholder.
· The sprint ends with a sprint review and retrospective.
· As the next sprint begins, the team chooses another chunk of the product backlog and begins working again.
Zomato Feature Development
I have been tasked to plan and develop a couple of features for Zomato App, viz., rate/review restaurant, filters for search, and online ordering.
Rate/Review Restaurants:
Ideation:
Ratings and reviews help people make informed decisions when considering and/or evaluating the services. Delivering a great overall experience is the best way to encourage positive ratings and reviews, but it’s also important to ask for feedback at appropriate times.
Iterative and Incremental Development:
1. Initial feature in a series of incremental design changes would include a linear scale from 1 to 5 Stars with a text field to encourage a detailed review.

2. This feature can then be scaled to include a feedback form. This form will have a set of questions and subsequent ratings from Poor to Excellent. This will encourage users to give an overall rating to different aspects of restaurants operation. Example of a form is as below:

3. Next, we can move on to the features of adding photos and sharing the reviews on Social Media. We can then work on a Google or Facebook integration.
Search Filters:
Ideation:
A fully featured search filter is an intelligent search with an ability to sort and filter based on various criteria. Search filters gives a delightful experience to users and creates a lasting impression of an app. Zomato has a huge database of restaurants. The filters serves as the most important feature of Zomato to enable user to find the right restaurant. To make the search as relevant to the user as possible, the filters have to be easy and efficient.
Iterative and Incremental Development:
The search filter needs to be developed and include the following features, incrementally:
1. Basic search filter should be included. E.g.,
a. Type of Restaurants
b. Cuisine
c. Diet: Veg/Non-Veg, Seafood, Jain etc.
d. Location
2. We can then add “Quick Search” Filters that are easily accessible, like
a. Home Delivery
b. Type of Food: Indian, Chinese, Halal etc.
c. Price
d. Rated
3. A Sort feature should also be included to further narrow the results.
a. Rating
b. Relevance
c. Cost
d. Distance

4. In order to insure a delightful experience of the app user, a search history should also be included in the search field for easy access to most visited search results.
Online Order
Ideation:
Providing Zomato users with the ability to order directly from your platform closes the loop on providing the entire spectrum of the food ordering process.
Iterative and Incremental Development:
Following are features that would need to iteratively and incrementally:
1. User End Functionalities and features would include:
a.User selects the restaurants from the search results based on appropriate filters and sorting.
b. User Menu: Present user with restaurant’s menu with price listing
c. Select Line Item: Ability to select a food item and quantity from the restaurant’s menu

d. Add to Cart: Add the selected the line item to the cart.
e. View Cart: Ability to view the cart and make amendments in the added line item and quantity
f. Add Delivery Address:
g. Add Payment Method: Ability to make payments through multiple payment channels including payment wallets.
h. Complete Transaction
i. Receipt of completed transaction along with the tracking details.
j. Various notification and detail tracking of order.
2. Loyalty Program could be beneficial for long term customer retention.
Summary:
Scrum helps you streamline software development along with higher visibility of the work being done and higher predictability of the work that can be completed in specified duration. It helps you release multiple iterations of the application with changes being done based on feedback received from users. This helps you design and deliver what is required by the users or consumers of the application.