Developing features using agile methodology
“Imagine a scenario. You want to explore new places and plan to take a vacation. There are two ways to go about it. First would be the travel agency approach which is a traditional approach. You get an itinerary which outlines details of the tour including your meal plans.
The second approach is the hitchhiker’s approach. You have a vision of exploring and you begin your journey in a direction. You solve problems as and when you encounter them with the available resources. In this way, you are better prepared to face uncertain situations. This approach is more intuitive, flexible and calls into action the ability to reason with the idea of exploring a new landscape in the hindsight. In PM speak, this approach is called as the Agile methodology.” ~Upgrad
Agile methodology has both incremental and iterative product development process. This was introduced to negate the downside of linear processes such as waterfall model, where flexibility is none.
Zomato
Zomato is an Indian restaurant search and discovery service founded in 2008 by Deepinder Goyal and Pankaj Chaddah. It currently operates in 24 countries. It provides information and reviews of restaurants, including images of menus where the restaurant does not have its own website and also online delivery.
To understand Agile better let's take the example of Zomato and try to come up with some features. To release any feature, let’s say you have four or five steps like ideation, design, implementation, testing and deployment. For Zomato lets choose 3–4 features like rate/review restaurant, filters for search, online ordering, etc. in line for next releases.
As seen before Agile is both incremental and iterative. Means you can start with a basic functionality, design and develop it, test it and release it. Based on the feedback you receive, you can incrementally add new functionality and iterate on it.
Scrum
Scrum is an Agile framework commonly used across industry. By framework it means, Scrum gives you a template to follow such that you end up getting the essence of Agile process.
Product Backlog, is simply a list of all things that needs to be done within the project. In our case, rate/review restaurant, filters for search, online ordering. It is product owner’s duty to prioritize the feature and write epics around it, such that the team can have a discussion and come up with user stories.
Say in our example out of the three features the product owner might prioritize online ordering as top priority, followed by filters for search and then rate/review restaurant.
After prioritisation in sprint planning a sprint backlog is handed over to the sprint team and this would contain the top priority tasks that team should finish in the upcoming sprint cycle.
As online order is of top priority, product owner would have discussions with team on how to implement the feature and how much time would take to complete it. After multiple discussions, team would identify the feature breakdown (such as, for online ordering you need to search for restaurants, list food available in restaurant, order cart and payment gateway) and time required to complete these items.
Out of all the items, for a sprint cycle team might only choose one or two items, (say, search for restaurants and list available food) and agrees on delivering a working product in one sprint cycle.
Once team starts with sprint cycle, product owner re-prioritize the pending list and update the product log.
Daily scrum gives the product owner and scrum master an update on how well the production is going. Once the sprint cycle is complete, the product will be reviewed and if not found satisfactory the product owner would again add it to the product backlog.
During the next sprint cycle, product owner would assign the next set of items to the team and this goes on incrementally until all the feature are completed or the time allocated expires. But the beauty of this approach is you would always have something to ship.
Agile methods can help teams manage work more efficiently and do the work more effectively while delivering the highest quality product within the constraints of the budget and in a flexible manner.