No matter where you go these days, you really cannot escape Agile. It is fast becoming the norm in a lot of companies today. This is also one of the reasons for the increased numbers of Agile Certifications to choose from. This is good and bad. Why bad? Because, in my experience, some companies use "Agile" as a justification for no documentation and testing on the fly!
The important thing is, understanding that, even if the method is "Agile", there are still organised methodologies that are defined. This article is designed to focus on these Agile methodologies to benefit you.
Project management has become much of a science than an art. Different software are being developed for efficient management of projects and in fact, software development in itself has become more efficient by applying the principles of project management.
Agile software development is an approach described as iterative learning technique through the collaboration of cross-functional and self-organizing groups and their end users.
The agile methodology since its birth has proved to bring significant improvements in the field of software development. There are pieces of evidence that support the claim that using agile methodologies for software development would improve the agility of developers and coordination between the teams.
Also, understand there are other methodologies out there, such as Extreme programming, and many others.
However, it gets difficult sometimes to decide which agile methodology is best. It is against that backdrop that I have come up with a guideline that would serve as a checklist when choosing between ideal agile methodologies, so that the choice is made according to your needs.
List of Agile Methodologies
To give you a fair idea about each methodology, we will be explaining each of them separately and would also be providing a comparison between them.
This would be helpful more than simple reviews to determine which agile methodology is going to work out for your project. The list of things that we are going to discuss is provided as under:
- What is Agile Scrum?
- What is Agile Kanban?
- When should you use Kanban?
- What is the difference between Agile Scrum & Traditional Waterfall models?
- What is Lean Agile?
1. What is Agile Scrum?
Scrum is a brilliant framework, designed for efficient software development when the requirements are volatile. The team of developers can be divided into small groups, each team working separately to reach the common goal.
The smoothness of work is ensured through 'timeboxed’ iterations and short standup meetings between the team members.
Agile Scrum emphasises on collaboration as well as an iterative approach, and flexibility to adapt to change. Each phase of the project is considered as a Sprint.
At first, the teams start with sprint planning in which they decide about duration and goals. This leads the team towards sprint objectives, which typically lasts two weeks and aims to achieve specific set of goals.
During the sprints, daily scrum is maintained through short standup meetings in which members participate and discuss their progress, using burndown charts and other measurement metrics. Finally, the sprint ends with a review session and the team adapts to the changes in requirements and situation as well as learns from its errors.
The product owner lists the product backlog which contains a set of activities need to be done by every team member collaboratively. Each item on the product backlog has a priority ranking as well. Assignment of these items to each sprint of the project takes place during sprint planning subsequently. These items are then moved from product backlog to sprint backlog.
The Role of a Scrum Master
The Scrum Master ensures the goal is achieved promptly and schedules daily meetings to stay updated on the progress of the project. Once a sprint is completed, the team presents the work they have finished in the final sprint review meeting. Based on the product delivered at the end of the sprint, iterations for next sprint are planned. The entire process repeats itself, right from the creation of a new sprint backlog to when the next sprint of the project commences.
Did Scrum pique your interest? Then watch this video of a conversation with Ken Schwaber and Jeff Sutherland, the creators of Scrum:
2. What is Agile Kanban?
Kanban is another agile methodology that helps eliminating the mismatch between demand of work and supply of resources. The idea behind Kanban is to provide a visual process feedback to the entire workforce.
With Kanban, you can visualise the process along with each work passing through that process.
It is a lean method which is quite useful for improving the workflow across human systems. It provides the opportunity to manage the entire workforce single handedly.
You use Kanban board to visualise the entire workflow, progress of each work, assess work capacity and its impact on the whole team.
This assessment allows you to rectify the situation in case a team member or an individual unit has over-committed and may fail to deliver what they committed within the allocated deadline.
What is a Kanban Board?
Kanban board is the typical tool used to inform workers regarding how, what and when to produce. The methodology helps in providing a broad overview of the workflow to the entire team.
The board also consists of columns that define the “status” of the work in progress as it passes through different stages of the workflow. For example, the status of a product can be “in development”,it can be “testing”, or “Ready-to-Release” and “Released” during the entire workflow.
Kanban allows you to identify potential bottlenecks quickly in the process and fix them to enable passage of work through the workflow in a cost-effective and optimised manner.
This way, multitasking and context switching wastes are reduced drastically and the timespan of project is also reduced. Top management can easily reiterate the goals to the developers using Kanban board efficiently.
Did you know that you can trace the origin of Kanban framework to the factories of Toyota? Watch here:
3. When should you use Kanban?
Kanban is a universal methodology and can be used with scrum together. To be specific, Kanban emphasizes more on the work states rather than iterations. The focus of Kanban is on work, rather than time and predictability.
You can use the Kanban board to visualize the work processes in different work states and can place a limit on the work in progress. This is a proven technique used to equate the demand with supply.
Kanban can be a preferred methodology if the focus is on good work flow and throughput. If you do not have a list of backlogs and you want to burn small issues immediately as they raise, using Kanban would be more efficient than scrum.
There is certainly no planning involved at all and you can direct the team through visuals to attack the problems in sequential manner to maintain a good flow of work.
4. Difference between Agile Scrum & Traditional Waterfall models
Broadly speaking, traditional waterfall model allows the work to fall like water from one team to the other without any option of turning back. This is the reason which differentiates the two models i.e.
Scrum methodology allows inter as well as intra departmental communication and devotes more time to planning, whereas traditional waterfall model only have intra departmental communication. Therefore, traditional waterfall model may backfire in case of a dispute between two work teams or departments.
Another major difference is related to the progression of work. Agile scrum divides the work into iterations and allows both backward and forward movements; however, this flexibility is not available with Traditional waterfall methodology. Moreover, this flexibility allows Scrum methodology to complete the project sooner than waterfall model.
5.What is Lean Agile?
The ideology behind Lean Agile is to make an agile process further lean by eliminating wasteful processes. This can be done using the Generally Accepted Agile-Principles that provide a broad framework to eliminate non-value adding processes.
The following are the additional practices that can be adopted in order to convert an agile process into Lean Agile:
- Backlog Grooming: The component of backlog is added into daily scrums and ways are developed to get rid of backlogs.
- Acceptance Criteria-Driven Developments: Using the daily scrums, all possible test scenarios are developed to reduce defect rates and to deliver high quality product to the customer.
- Code Refactoring: The idea is to restructure the logic of the code without affecting its functionality. This provides an easy way to improve the efficiency and runtime of the code. Continuous refactoring is used to add a new feature, remove the defect and for the code review.
Agile Methodologies Summary
We have tried to compile a short manual for you regarding the common agile methodologies prevalent in software development. The criteria for choosing the best methodology depend chiefly upon the needs of your project.
A large project may be well managed using a mix of Kanban and Scrum or Large-Scale Scrum methodology. It is your creativity that makes these methodologies efficient for your project. With the guidelines provided above, a checklist can be developed to identify the suitable agile methodology for your project.
We hope that you enjoyed going through our list and we recommend you to analyse the circumstances at your end first before deciding which agile methodology is best. But before you go, lets look deeper into two of these methodologies:
Agile Scrum vs Kanban: What Is The Big Difference?
There are many project management frameworks available in the market. Choosing which framework is right for your project is not an easy decision. Scum? Waterfall? Kanban? They all have their pros and cons. The key is to identify which methodology is best suited to your project.
Agile methodology is considered highly suitable for complex projects. According to PWC, Agile projects are 28% more successful than the traditional ones.
Scrum and Kanban are the two methodologies, belonging to the Agile family, that have been trending lately. Let’s look at both the frameworks and understand the critical differences between them, which in turn will help you choose the right framework for your project.
Scrum Vs Kanban: 3 Key Segments
The fundamental differences between Scrum and Kanban can be categorised into three segments:
#1. The Iterative Process
As you read above, the scrum is provided with a prioritised list of items that need to be completed within a sprint to deliver a product. The team must decide on the number of things they can finish within one sprint. Anything outside the scope has to wait until the next sprint. Ideally, a capable scrum team will identify their capabilities over a period leading to optimised estimates in each sprint and improved performance.
Thus, the scrum team produces a shippable product every two weeks (ideal time of each sprint; may vary based on project complexity), and dedicate their focus on continually optimising the process, eventually moving to the next sprint. This iterative practice enables constant improvement and effective management of multiple projects.
For Kanban team, there are no iterations. Though Kanban methodology is iterative in nature, the continuous optimisation occurs in an evolutionary manner as each work is executed in the process. A limitation is set on various conditions by the organisation (or teams) to prevent the bottleneck from occurring in the process. The workflow is thereby, regulated until an optimal set of limits is reached, making the workflow efficient and steady.
#2 Team Roles
For scrum teams to perform efficiently, there must be at least three roles assigned to the group. They are Product Owner, the sprint team members, as well as a Scrum Master. Each team member has their own set of responsibilities and must operate collaboratively to maintain organised balance. The sprint team must be cross-functional and be equipped with all the necessary resources and skills to complete the sprint’s assigned tasks.
No fix roles are assigned to a Kanban team. It does not make sense to have a project manager or a supervisor in the Kanban team. In fact, the roles evolve within the organisation, theoretically speaking, depending on the need and progressfor the Kanban project and organisation. Like Scrum team, the Kanban team need not be cross-functional as Kanban workflow is utilised by all the teams participating in the project. You can have a group of specialists or an entirely different squad of generalists working on various aspects of the same project using the same Kanban board.
#3 The Board
Both Kanban and Scrum board model consist of three primary columns: “To do” as well as “Doing”, and “Done”.While the fundamental board model has similarity, both scrum and Kanban boards are entirely different.
The Scrum board consists of columns that reflect periods in the workflow commencing with the sprint backlog and the period ending it. The things that are needed to be done at the start of the sprint are mentioned in the last column marked as successful or unsuccessful at the end of the sprint. The completed sprintis assessed, after which the board is cleared,and new sprintis prepped for the project.
A Kanban board has columns labelled to present workflow states as well. However, the critical difference lies in the number of tasks/stories allowed in each column at a time.
The team members are presented with limitations for each condition of the workflow. Like in scrum board, there is no sprint length,i.e. time boxes, which negates the need to rest the Kanban board as the project progresses. New tasks are added,or completed tasks are re-assessed based on project progress and needs.
Scrum vs Kanban Summary
Both Scrum and Kanban are one of the best frameworks that can vastly improve your project management needs.
The best plan of action is to get familiar with both the frameworks and test their aspects in your production environment. You can also build a hybrid framework if it serves your project in the best manner.
I hope that the above-listed differences will help you identify which framework suits your project most.
Which framework have you been using for your projects? What are your thoughts on these frameworks? Maybe you've dabbled with TDD? Let me know in comments below. Hit the Like and Share button below if you found this article helpful.