Traditionally, software development on a large scale has mostly involved the Waterfall model— a development model that had its roots in the manufacturing industries and involved specifying design and requirements upfront which made making changes at a later stage in the development process difficult. To overcome this limitation, the agile methodology was created based on iterative, incremental and adaptive development methods to improve the agility of software developers, teams and organizations. Examples of the agile methodology include frameworks such as Scrum, Kanban and Lean to name a few.
The Agile manifesto involves:
- Individuals and Interactions over processes and tools — focus on people working together effectively.
- Working Software over comprehensive documentation — focus on development to create useful software.
- Customer Collaboration over contract negotiation — focus on working closely with customers to discover their needs.
- Responding to Change over following a plan — focus on changing needs rather than just follow a plan.
Iterative and Incremental development
Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system. The word iterate fundamentally means re-do.
Incremental development is a staging and scheduling strategy in which various parts of the system are developed at different times or rates and integrated as they are completed. The word increment fundamentally means add onto.
The basic idea behind this method is to develop software through repeated development cycles (iterative) and in smaller portions at a time (incremental). The entire strategy can be summarized in two steps:
- Divide the system into complete, useful slices of functionality or according to some other useful decomposition you may choose.
- Do them one after the other.
Agile development methods divide product development work into small increments that minimize the amount of up-front planning and design. Iterations, or sprints, are short time frames of developmental work — each of which develops a small piece of the overall software. Each sprint involves a cross-functional team working in all functions: planning, analysis, design, coding and testing.
Example:
First iteration(Basic version):
- Create a web page with a login form.
- Add just username, password fields and a login button.
- When a user logs in, a “Welcome” message is displayed.
Second iteration(Enhanced version):
- Add form validation to check for errors.
- Use CSS to make web-page better looking.
- Display error when username does not exist.
Thus we have incremented login functionality.
Third iteration(Final version):
- Add forgot password functionality.
- Add “Remember me” checkbox.
- Display accounts page when users log in (rather than just a “welcome” page)
Waterfall vs Agile
In the waterfall model, there are separate build and test phases while in agile software development, building and testing are completed in the same iteration. Thus, iterative product development allows the software to evolve in response to changes in the business environment or market requirements. Multiple iterations might be required to release a product or new features and working software is the primary measure of such progress.
Agile as applied to Zomato
Zomato is an Indian online restaurant search platform that provides information about nearby restaurants and cafes including user ratings and reviews, photos of menus, ambiance, table reservation and home delivery.
Zomato started with a vision to be the Google of restaurants and has now expanded to food delivery services, subscription services like “Zomato Gold” and managed “cloud” kitchens. Over ten years, it has steadily built an intuitive search and discovery platform that brings aggregation, organization and efficiency to the F&B industry. Today Zomato has multiple products and services that ensure customers have a great experience while improving the food and service industry as a whole.
Zomato has over a million listed restaurants and 80 million monthly active users across 24 countries including the United States, Australia, United Kingdom, Canada, India, Turkey, UAE, Portugal, South Africa, New Zealand, and more.
Using the Incremental and Iterative methodology for developing some of the features of Zomato:
Rate/review restaurant
Version 1:
- Like/Dislike button: Helps in analyzing if users are interested in giving feedback after visiting the restaurant.
- Rating Scale: Users will be able to rate the restaurant by giving 1 to 5 stars and providing a review in the text box
- Overall rating: Users should be able to view the overall rating of the restaurant along with the total number of user ratings and reviews.
Version 2:
- Add photos: Users should now be able to add photos of the place and food along with the review.
- Sort reviews: Users will now be able to sort reviews by date(most recent) and rating(highest/lowest)
- Preferred reviews: Users should be able to see the reviews given by friends and followers at the top followed by the other reviews.
Version 3:
- Share on Social Media: Users should be able to share a posted review on social media
- Tag Users: Users should be able to tag another user or follower while reviewing the restaurant
- Like and Comment: Users should be able to like and comment on other user reviews.
Search filters
Version 1:
Sorting based on ratings and cost
Categories based on veg/non-veg and cuisine
Filters based on location(part of city)
Version 2:
Added sorting based on popularity and recently added restaurants
Added categories based on cafes, takeaways, nightclubs/pubs
Added filters based on location(area of city), open now, discounts
Version 3:
Added option to include/exclude nearby areas from search results.
Added book table/order online/Zomato gold filters.
Added restaurants categorized by suitability for meetups/hangouts.
Added work friendly restaurants/cafes with WiFi filter.
Online ordering
Version 1:
- List food delivery restaurants nearby based on the location selected/detected.
- Search and sort restaurants by cuisine, food and delivery rating.
- Show basic order tracking info such as ETA.
Version 2:
- List favorite/most ordered restaurants followed by recommendations.
- Allow searching by names of dishes and sorting by delivery time.
- Better order tracking by showing cooking/packing status at a restaurant.
Version 3:
- Showcase special promos and offers on food delivery.
- Introduce credits and membership programs for customer loyalty.
- Advanced order tracking with real-time location of the delivery agent.
Summary
The Agile methodology with its principles of iterative and incremental development supports and enables cross-functional teams and organizations to be fast-paced, flexible, efficient and dynamic. It works perfectly well when the requirements are continuously changing especially for consumer-facing, internet-enabled businesses as depicted in this article. Agile gives the much needed reprieve for new-age software companies and product startups to break free from the clutches of the old school Waterfall model and adapt to an ever changing and fast growing business environment.