There’s a lot of talk about the “Agile way” of software development among developers. But what exactly is Agile methodology?
According to its manifesto, this method is all about “uncovering better ways of developing software.”
Some of the basic principles of Agile software development are:
- Completing tasks in a short period of time
- Working closely with customers
- Open communication between development team members
- Sustainable development
- Focus on excellence and effectiveness, yet maintaining simplicity
- Self-organizing teams
Most importantly, it is meant to “satisfy the customer through early and continuous delivery of valuable software.”
Agile software development is based on the ‘Incremental Model’ promoting an iterative approach where a lengthy development process is divided into smaller segments. It is usually preferred for software development due to its focus on continuous improvement through constant communication and feedback from clients. So any changes required are identified and implemented during the development process.
Two of the important Agile frameworks are Scrum and Kanban:
Scrum methodology was developed to help software development teams manage work pressure effectively and resultantly, deliver quality software. This effectiveness is down to Scrum’s ability to take on challenging tasks even with limited resources at hand.
The Scrum process is divided into smaller iterations called “Sprints” which are usually one to four weeks long. The development team sets up a meeting with the client to check the accuracy of the software that is delivered at the end of each sprint. Then they plan the next steps. Scrum provides the flexibility to make frequent changes during the development process.
Roles in Scrum process
Generally, the following are the different roles played by individuals involved in the Scrum process:
1) Product Owner
They are responsible for determining the business requirements of the product. Broadly speaking, their role includes:
Creating and managing the product backlog
Communicating the work items in the backlog to the team
Guiding the scrum team throughout the process on what to deliver next
2) Scrum Master
The Scrum Master makes sure that the development process is carried out according to the Scrum framework. They monitor optimisation of the delivery flow.
3) Scrum Team
The Scrum team plans each sprint. They organise themselves to complete each sprint successfully. Their responsibility is to decide the work they can manage to complete in each sprint and hence, set the goals accordingly.
Steps of Scrum method
Below, are the five steps in Scrum methodology:
Step 1: Creating Product Backlog Items
Every feature that is to be implemented during the development process is listed in the product backlog. It includes requirements listed according to their priorities.
Step 2: Sprint Planning & Creation of Sprint Backlog
Before beginning every sprint, a sprint backlog is created in a meeting between the team and the client. The sprint backlog consists of some items from the product backlog.
The team calculates the time required for each sprint. Short sprints are more effective as it speeds up the development process. Errors and bugs are detected and fixed during a sprint.
Step 3: Scrum Meetings
These meetings are held on a daily basis to discuss the project status and the problems (if any) that the team faces in accomplishing the tasks. The Scrum master plays his role here by providing solutions to the problems.
Step 4: Testing & Demonstration
The result of each sprint is a working product which is then tested. The result is presented to the client and that’s where they have the opportunity to provide input and suggest any changes in product development.
Step 5: Retrospective Meeting
Here the Product Owner, Scrum master and team members discuss the results and ways to improve the process. Hence, they plan the next sprint accordingly.
Scrum allows continuous progress while maintaining the communication between the development team and the client at each step. This ensures optimal progress throughout the process.
Literally speaking, the term Kanban means ‘Visual card’, and thus the main purpose of this agile variant is visualising the framework and focusing on the flow of work for continuous improvement. It uses a Kanban board that allows the team to see the progression of work.
Kanban offers great flexibility to adjust incoming requests that may even change the scope of work. Hence, Kanban focuses more on “going with the flow”.
There is no problem-solving master in case of Kanban. The team members here assume equally shared responsibility.
Core Practices of Kanban methodology
Following are the core practices of Kanban:
1) Visualizing the workflow
As mentioned above, Kanban involves visualising the work in progress (WIP) on a Kanban board. Each column of the board displays the different processing states of work unit or user story. It also shows WIP limits of the given states.
2) Applying WIP limits
The WIP limits allow only a limited number of work units to be in a column at the same time. These limits help in estimating when to start working on new items and hence, the workflow becomes smooth with frequent deliveries.
3) Managing flow
It refers to the flow of work items through the process of development. It is important to ensure quick delivery while minimising risk.
4) Making clear policies
It is essential to make policies like capacity allocation, WIP limits and other rules regarding the work items straightforward and understandable. This helps in bringing the team on one page allowing everyone to contribute towards achieving the set goals. It also enables them to decide on the changes that may be required.
5) Implementing feedback loops
Kanban emphasises on daily meetings of the team for a smooth flow, in which they discuss the tasks they have done and will be doing. Transparency is ensured by holding frequent meetings and conducting quality assurance testing. These meetings are also meant to review operations, risks and service delivery.
6) Improving and evolving collaboratively
The team members ensure collaboration throughout the project for successful software development along with continuous improvement.
By synching functionalities with the changing business requirements, Kanban’s flexible process leads to increased efficiency due to continuous reassessment of priorities.
The Agile software development model is different from the traditional waterfall model as it relies on a flexible approach of software development by modifying product specifications according to a client’s business requirements.
Talking about the two agile frameworks discussed in this blog, Goran Prijic, a Scrum master and web developer, says:
“Scrum and Kanban are not mutually exclusive… the beauty of both is that neither is a strict set of rules. There is nothing stopping you from picking and choosing the best scrum elements for you, such as a daily meeting or review. And there is no reason you cannot incorporate a kanban board into scrum.”
But to determine what approach is best for your project, it is important to fully understand and analyse the requirements and constraints of that project.
While Kanban may be a preferred choice for those requiring greater flexibility, Scrum, on the other hand, is better for teams who prefer working in a more predictable environment with controlled WIP.