Last week it was my husband’s birthday and I decided to surprise him in a big way with a home-made cake. However, on the B-Day, this well-intentioned surprise turned into an unwelcome shock! My maiden cake was a disaster, and we ended up ordering one from outside!
Thank God! It was just a cake and not a software product for some paying customers! One can only imagine the consequences had it been the later! But this is not an imaginary scenario — it can actually happen when applications are developed using a traditional sequential approach and the final product is not revealed to customers until the very last step. This leaves little room for flexibility when it comes to progress reviews and changes. So, by the time an actual application is finished, it is highly likely that requirements and systems of the project’s original objectives have changed. This an result in lot of drain on precious resources and team morale.
It was in response to the inadequacies of traditional development methods, such as the waterfall model, that a new development methodology was created by a few professional leaders of the software community — the Agile Methodology. Using this approach, a lot of technological companies became capable of delivering software solutions to their clients in a more effective way that reduced the chances of a complete project failure. Realizing its advantages over the traditional way of managing projects, even companies outside the IT sector have started adopting it to great success
What gives Agile its power?
Agile draws great power from the fact that it’s both an iterative and incremental approach. Repeated cycles (iterations) and smaller and simpler portions of the software to be developed at a time (increments), allow software developers to take advantage of what was learned during the development of earlier versions of the system. Let’s first understand what are iterative and incremental approaches
Iterative development is when a product is developed with just the basic features which then go through a refinement process successively to add to the richness in features. For example, when yourself a custom-made shirt, you may be required to go for a trial to check for fitting. Even though the shirt may fit you well, you may not be able to use it as it has not yet been finished. The fitting test was just to give you an idea of the final product, which may not be ready for consumption. This is an example of iterative prototyping
In an incremental approach, each functionality is built to its fullest and additional functionalities are added in an incremental fashion. So, fully functioning modules are built up over time, with each adding to what has already been produced. You can compare this to a visit to restaurant. You get served starters first, followed by main course and then the dessert. You get served incrementally and you consume it as it it served.
In Agile, both increments and iterations are done at the same time. The goal is to develop a working product and share it with the users. If they like it, they accept it. But if they don’t, then you could get their feedback for making any changes. In fact, its more like baking a cake completely and providing it for someone to taste. If the person likes it, they eat it. Else, we make changes to suite their palate. This is being incremental & iterative at the same time. Wish I had been more agile in my baking experiment!
I know your mouth has already started watering now thinking of cakes and delicacies! :)
Why not take an example from the food-tech industry to understand the concept better
Imagine you are a product manager at “Munchies”, which has a similar business model as Zomato. You have been tasked with the development of new features for Munchies app — Rating/Reviews, Search Filters and Online Ordering. How would you approach this using the agile method of iterative and incremental development?
Let’s begin with the first feature -
Rate/Review Restaurants: Having this feature in your app will provide tremendous value to your customers, Not only will this allow your customers to compare restaurants based on the service quality, food, price, ambience etc., but it will also gives them a voice to share positive / negative experiences thereby creating a healthy competition among restaurants listed on the platform.
At a minimum, this feature can be implemented with two core elements: restaurant rating and review description. A more refined feature could also include advanced functionalities like ability to add photos, tag friends, share on social media, like/comment on reviews etc. While its desirable to have this feature rolled out with all the above advanced functionalities, this approach would not only be cumbersome but will also introduce considerable risks with respect to schedule and technical implementation. Therefore, the best way would be to rollout this feature with only 1–2 key functionalities in one iteration and then continually refining it in subsequent iterations.
Iteration 1: would include Rating and Review Description. These would be developed in a 5-step process beginning with ideation where the team brainstorms potential ways in which “rating” could be implemented — thumbs up/down, star-based ratings, point-based ratings, emojis etc. After a careful consideration, let’s say your team decides to go ahead with “thumbs -up/down” variation along with a text-based input for review description. This is because, you realize that It’s not only simple and intuitive for users but is also easy to implement. Once the design is finalized the team develops this functionality which is then beta-tested with a select set of users before deploying it for the entire user-base.
Henceforth, functionalities implemented in iteration 1 are closely monitored for performance and user feedback. Any learnings from there are leveraged used to further refine the Ratings/Review feature in iteration 2. For instance, if most of your users indicate preference for a numbered rating scale over a simple thumbs-up/down,then it could be prioritized for release in Iteration 2.
Iteration 3 could focus on providing more useful features to users like adding photos to their reviews. This will make the reviews more impactful and valuable to everyone using the platform
Iteration 3 could introduce integrations with the social media platform. This will enable sharing reviews on other platforms / social media channels like facebook, twitter etc.
Iteration 4 could add a functionality whereby users can like / comment on reviews posted by others
Iteration 5 onwards, more such elements can be added to the Ratings/Review feature -tagging friends, review individual dishes, add voice memos etc, thereby shipping incremental improvements with each iteration based on perceived benefit for customers
Search Filters: Search is an important aspect of product discovery and can help users quickly find what they are looking for. While search using basic keywords serves well for this purpose, however, it scan also result in indecisiveness and confusion for users when there are a lot of results for them to choose from. This can further impact click-through rates and overall conversions. That’s where Search Filters can help by enabling users to narrow down their search results based on parameters such as Cost, Cuisine, Ratings, WiFi, outdoor seating etc. These functionalities could be staggered for different iterations based on their value for customers
Iteration 1: During restaurant discovery phase, the two criteria that play a decisive role in influencing customer’s decision are location and cuisine These can, therefore, be released in iteration 1. These filters will help customers to narrow down their search by showing only those nearby restaurants that offer a selected cuisine
Iteration 2: could include filters related to price — “Cost”, “Cost for two”, “offers & discounts”. After deciding on a few options, customers often go for the one that has the best deals / pocket-friendly menu. Hence, this could be the 2nd priority
Iteration 3: Who doesn’t want to enjoy food at a good place? By having a filter for restaurant ratings, customers can quickly discover the best restaurants nearby, without the hassle of browsing through entire search results
Iteration 4: Next iteration can introduce the filter for “Online booking availability”, “Credit card payments”. Using this feature, users can easily find restaurants that provide online booking facility and allow payments through credit cards
Iteration 5 and onwards can focus on other filters like — Luxury dining, wifi, outdoor seating etc. based on user feedback and also by regularly monitoring key metrics with respect to app usage.
Online ordering: Let’s assume that currently Munchies is operating only as a restaurant search and discovery app, and aim to expand into the online delivery space. The platform already hosts a large aggregation of restaurants with rich information on each restaurant’s location , menu, ratings, reviews, opening & closing hours, location, menu and prices . While at this point, customers can easily browse through a restaurant’s details with respect to above parameters, however, they cannot use this platform to place an order for online delivery through the app. This can be achieved only when the app has bare minimum functionalities like -selecting and adding food items to cart, provide address, confirm booking, contact restaurant. Therefore 1st iteration could focus on rolling out this unrefined , yet functionally complete version of online ordering feature
Iteration 2 could include integration with few important payment gateways like netbanking, card-based payments and provide customer support feature for issues in online bookings
Iteration 3: could incorporate more payment options like COD, Wallets and UPI.
Iteration 4 could build the Order tracking feature, where the customer gets live updates on how the order is progressing and also track delivery executive’s location on a map
Iteration 5 could provide filter options that allow users to narrow down on a set of menu items based on whether its veg/non-veg. dessert, main course , starters, fruits juice etc.
From the above example we can see how agile helps teams, both big and small, to rollout features quickly and efficiently, while dynamically incorporating changes to the product roadmap based on customer demands and market conditions. This implies that organisations can start benefit of a quicker time to market and start raking in revenue much faster by utilizing Agile practices than traditional practices. Statistics also show that by using agile project management, on average, the time to market is 37% faster and the efficiency of teams is increased with a productivity higher by 16% that the average!
So why not go the agile way!