Agile Method in a Food delivery app
What is agile? Why it is better than traditional methods?
What is Agile methodology
Agile methodology challenges the traditional method of the waterfall where the process was pretty much linear and coherent across teams and any last-minute modification consumed a lot of time impacting the overall timelines.
The agile method solves the shortcoming of the waterfall method by emphasizing on the incremental and iterative approach to solve complex tasks. So the decision-maker is pretty much sure of every step and process, hence making it feasible for any last-minute modification which would decrease the scope of rework.
Types of Agile methodology
- Scrum (Widely used)
- Kanban
- Lean
- Extreme programming
- Feature-driven
- Dynamic
- Crystal development
Scrum methodology is widely used along with agile as it is one common way of implementing agile method. It usually consists of Scrum master, Product owner and few developers.
Benefits of Agile over Waterfall
- Unlike Waterfall, Agile can respond to last-minute changes at any stage.
- At any point in time, the given team can review its progress and thus there is complete control over the task.
- Creates a sense of ownership within a team member which is otherwise authoritative and hierarchical in traditional method.
- Inculcates an important quality of teamwork.
- The customer gets to test the features in the development phase itself.
- Delivering a working software in two to three weeks as opposed to a year mitigates the technical risks that usually lurks in a traditional scenario.
About the food delivery app
The Company we are talking about is hyper-local food delivery startup Zomato. It was founded in 2008 as a restaurant review based portal ( Yelp of the restaurant) before penetrating into the food delivery ecosystem. As a product manager, it is very important to provide quality ratings and reviews of restaurants as that formed the basis of the company.
Incremental & Iterative approach in Agile
Many use the two terms interchangeably, Well let's bust the bubble!
Difference Between Incremental and iterative approach
An increment is a better version of the existing product while an iteration is a series of constructive modification involved in developing any product. Still Confused?
Let's understand using an Example
Let's say our final product is a car, So an incremental way would be to design a chassis, the engine, then the suspension and then assembling to build a final car, A daily progress is must when we are talking about incremental version.
Now for iterative method, let's say we have developed a bicycle and we need something which can outsmart the bicycle so we brainstorm and build a bike but it still fells short of the speed cravings of humans and so we go for designing a car which then becomes an iterative way of going about things.
The two approaches in Agile methodology
An iterative process is one that makes progress through successive refinement. A development team takes the first cut at a system, knowing it is incomplete or weak in some (perhaps many) areas. The team then iteratively refines those areas until the product becomes satisfactory and matches client’s expectations before making it live. With each iteration, the software is improved through the addition of greater detail.
For example, in a first iteration, a search screen might be coded to support only the simplest type of search. The second iteration might add additional search criteria. Finally, a third iteration may add error handling.
In an Incremental process, the entire work is done in pieces. While every piece (which is featured in our case) is also approved by the customer and it is reviewed by the other team members as well. It may not represent the final product but it is just a subset of it. An incremental change may or may not be small. For Eg: Adding a Facebook signup button to the existing login flow may form as an incremental change
Following the principle of the scrum, a scrum team consisting of testers will incrementally also test the first feature while some developers may start working on the second and others would solve the bugs suggested by the tester. An ideal scrum team would have the developer delivering a perfect code with minimum error.
For Eg: Developing a statue, while an incremental change would be to first develop the mouth, then the nose then the ears, after few changes one can easily relate that the current feature is representing a face. Likewise after a few incremental changes, a product owner starts interpreting the feature as a whole.
Agile method Implementation in Zomato
Features we are discussing today are the following
- Rating and reviews of restaurant
- Online ordering
- Various filters
But wait, Why Agile?
We will use something called as Stacey matrix to identify the eligibility of products requiring an agile method.
As you can see the features 1,2 and 3 have the known requirements but the technology used to build is yet to be known as a simple looking feature like creating a filter may have multiple technology methods to build it. Hence the features are eligible for Agile method.
Deciding a team
Well can anything be done without a team and so we formed a scrum team which consisted of the following members.
- A product owner (me)
- A scrum master
- 2 Front end developer
- 2 Backend developer
- A Ui/Ux designer
- Tester
Now that you know who all was in our team, We needed to start the WORK. The aim was to complete the sprint backlog in this sprint which was decided to be of 3 weeks. As a product manager i had created product backlog and priority was decided to create a sprint backlog.(items which we are planning to build within the sprint). We had created a data sheet of features to be built and the reason behind building it.
Process
We had made a daily routine to have a quick 20 mins chat to decide the following things.
- Day to day bottle necks.
- The amount of task we are completing, (I had left it to the team to decide their individual tasks)
- Team reviewing their own backlog sheet.
We used slack for every bit of communication.
Incremental changes
We had prioritized the features in the sprint backlog and then we started to create a basic wire frame. As a team we used to brain storm to make sure that we are building a right set of features for the end users. A simple feature of adding a filter took us 4 days to finalize, But we as a team were happy and confident for what we had achieved.
So While creating, we had built a wire frame where we needed to decide the position of the filter, the features and the filtration parameters etc. The aim was to create a Minimum level of filter so that the developers can start the development. We constantly added features thereafter, coded it and then tested it and the loop repeated itself, By the end we ensured that all bases were covered and then we added the feature to the existing product.
Iterative changes
The filter feature was up and running and now the time had arrived to see the user respond to it, it was the litmus test moment for us, the environment was pensive every time we opened our analytics. The analytics showed that there were very less traffic on filter page, and the heat map confirmed it so we had a task on our hand, the best part was that the team was motivated to resolve the feature as soon as possible.
We tested the feature across various Operating system, we even launched a patch update to make sure the existing bugs are sorted but the analytics still showed the same with little improvement, after a lot of brainstorming sessions, we decided to change the font color of the filter which helped us to gain a lot of visits but the traffic was still short of the initial projection. Another set of brainstorming confirmed that it was the position which was not ergonomic to the users of the app which was probably hindered many users and hence we decided to change the position of the filter.
The end result? you may ask
Well we were still short of the traffic projected but we got very close and hence it can be concluded that the filter feature had tremendous improvement in overall traffic levels.
So we had a successful sprint and needless to say that the team was very happy about it! The only task left was to party hard that day to only get back to work the next day.
Agile indeed made our life easier, It created unity and introduced a value of participation within the team.