Written in collaboration with Ruchi Choudhary
Summary: Iterations / Sprints are short bursts typically between 1–3 weeks in which a team picks up a subset of features and attempts to complete them. This allows teams to iteratively deliver software every couple of weeks instead of waiting for 3–6 months for delivery cycles to complete.
What is a sprint/iteration and why is it even used?
Instead of going into jargons, we’ll explain this with the help of a simple example, and then cover the terminologies later.
The example we’ll use:
We’ll take a fictional airlines called TransInd.
TransInd Airlines does not allow passengers to pre-book their seats online. Now they want to introduce this feature on their website.
They need the following features
Feature 1: Display the seat layout depending on the plane.
Feature 2: Allow user to select free seats and move forward.
Feature 3: Navigate user to the payments page when they select a paid seat.
Feature 4: Show a set of warnings when the users select a exit-row seats.
Traditional Approach (Waterfall)
Suppose the airline takes the traditional waterfall approach, in which the developers will set a long-term deadline i.e. 6 months or one year. The team will develop all the features and pages simultaneously, compile them, run it for tests at the final stage after the whole application is completed (probably discover bugs and malfunctions and fix them by uprooting the whole application which would be time consuming) and then launch the whole project (after which the user feedback stage would still be awaited).
This way, the feature is launched only after 5 months. Since it’s never been been tested with live users, it has dozens of edge cases that make it crash, behave badly, or just stop working.
After the feature has launched, the business will likely discover loads of issues with the way the design was created, and go into a firefighting mode, trying to salvage whatever they can out of the project.
Overall, the project was doomed right from the moment it was planned.
The Agile Approach
As opposed to the aforementioned approach, Agile offers a more practical path. The process of Iteration within the Agile format allows us to set small goals which are attainable in a short-time frame.
Taking the earlier example again, with this methodology — In the first iteration, one page could be added to the website where passengers can initially view the seat layout map. Once this is launched and feedback for the same is received, we can move on the next task.
In the second Iteration, we can make the selection of free seats available to the passengers. The same process of launching this feature after testing, collecting feedback and working upon the received feedback will follow.
This process continues month after month.
This process enables developers to read the market while also releasing updated features every one or two weeks. They can also grasp how the market is responding to those updates. The additional benefit of using Iteration mechanics here, is that by the time our project is completed, there will be enough awareness among the users about the new features that are being launched by the airline website, due to our regular online presence and consistency during the whole project.
Agile vs Waterfall
In the Waterfall approach, the feature went live only after 5 months, but in the second approach, the feature was live after 2 months.
If there was something basic that was missing or that the users hated, Agile gave the business and development teams time to tweak it, fix it, or scrap the project altogether. In Waterfall, the time is already gone.
In the Agile approach, the feature is not that useful in the beginning, but it is live. Therefore it would attract some users, but not too many. This would get some customers to play around with the feature, but if something goes wrong, it is not that big a problem. By the time more critical features like paid seats are introduced, the early glitches are already sorted
What is an Iteration / Sprint?
Typically, practitioners of Agile divide their works into small chunks called iterations or sprints. Just like in the example above we divided work by month. Typically, this period is even smaller, between 1–2 weeks, so that the team remains focused on immediate goals.
More formally —
‘Iteration’, in layman’s language, is the route from a rudimentary idea to a final result. In this process, prescribed set of goals should be completed within a stipulated time frame (which is generally one or two weeks). The process of Iteration includes:
· Prioritizing tasks to be worked upon, from a Master Story List.
· Developing the program, in accordance with, carefully and precisely formed User Stories.
· Unit Testing actively, at every stage.
· Feedback from the client on every step, to avoid the cost of regression tests.
· Suggested Changes to be incorporated.
· Receive Approval
· Release the final product
Benefits of Iterations
- Focus, Motivation, Momentum: Working on a project while keeping this trajectory in mind, enables us to release different features of the product one after the other, rather than all at once. And this approach helps the developers to maintain both momentum and motivation as the focus will be on short-period goals rather than long-term targets which can cause lethargy and demotivation. It also helps the team gain immediate feedback from the users after every feature is released. This aids in quick bug fixing; and adding/deleting features which would be best suited to the users in real-time, rather than developing the whole application at one go, and realising the issues later.
- Priority: Prioritizing helps team discard the redundant ideas acquired during the initial stages of the project, while recognising and focusing on the crucial ideas that needs to be chased. Testing, on every stage, significantly reduces the risk of error and neglect. Frequent feedback and approvals ensure that the project is headed in the direction of the ACTUAL client’s requirements, as opposed to, the team’s CONCEPTION of the client’s requirements. It eliminates the risk of client and team being in dissonance and avoids miscommunication of ideas.
Iteration and its features enhance the entire developing experience. It’s time bound nature, with a prefixed and precise goal, induces motivation and real-time hard work among teams.
Agile methodology works in a similar way for software development, as butter does for baking! It’s the secret ingredient which, although being invisible, is essential to the final product. The entire developing process happens around it, it acts as the binding agent and most importantly, the lack of it is a recipe for disaster. The unique trait of Agile is that its principles are not limited to the software engineering world, but can very well be inculcated in our daily work or private lives.
If you liked this article, please share it on social media.
View my courses on Udemy — https://www.udemy.com/user/abhinav-manchanda/
Subscribe to us on Linkedin — https://www.linkedin.com/company/interleap
View all our Youtube Videos — https://www.youtube.com/channel/UC9NGO7UNyFIAK8I-as9SeLg/videos
Join our Facebook Group — https://www.facebook.com/groups/1065474107206895
Subscribe to us on Youtube for an awesome video every Wednesday!