Given below are the various advantages of Agile Methodology:
- The customers continuously get a look and feel of the project progress at the end of each iteration/sprint.
- Each sprint provides the customer with a working software which meets their expectations as per the definition of done provided by them.
- The development teams are quite responsive to the changing requirements and can accommodate changes even in the advanced stages of development.
- There is a constant two-way communication which keeps the customers involved, thus all stakeholders – business and technical – have a clear visibility on the project’s progress.
- The design of the product is efficient and fulfills the business requirements.
Disadvantages of Agile Methodology
Though there are several advantages of Agile methodology, there are certain disadvantages involved in it too.
#1) Comprehensive documentation is not preferred which can lead to agile teams incorrectly interpreting this as agile doesn’t require documentation. So the rigor gets lost on documentation. This should be avoided by continuously asking yourself if this is a sufficient information to proceed or not.
#2) Sometimes, at the beginning of the projects, the requirements are not crystal clear. The teams might proceed and find that the customers’ vision got realigned and in such situations, the teams need to incorporate many changes and it is difficult to gauge the end result as well.
Types of Agile Methodologies
There are several agile methodologies in practice across the world. We are going to learn more in detail about four of the most popular ones.
Scrum can easily be considered to be the most popular agile framework. The term ‘scrum’ is much considered synonymously to ‘agile’ by most practitioners. But that is a misconception. Scrum is just one of the frameworks by which you can implement agile.
The word scrum comes from the sports rugby. Where the players huddle together in an interlocked position pushing against the opponents. Each player has a defined role in their position and can play both offensive and defensive as per the demand of the situation.
Similarly, the scrum in IT believes in empowered self-managed development teams with three specific and clearly defined roles. These roles include – Product Owner (PO), Scrum Master (SM) and the development team consisting of the programmers and testers. They work together in iterative time boxed durations called sprints.
The first step is the creation of the product backlog by the PO. It’s a to-do list of stuff to be done by the scrum team. Then the scrum team selects the top priority items and tries to finish them within the time box called a sprint.
An easier way to remember all of this is to memorize the 3-3-5 framework. It means that a scrum project has 3 roles, 3 artifacts, and 5 events.
These are –
Roles: PO, Scrum master, and development team.
Artifacts: Product Backlog, Sprint Backlog and Product increment.
Events: Sprint, Sprint planning, Daily Scrum, Sprint review and Sprint retrospective.
We will get to know more in detail about each of these in our subsequent tutorials.
Kanban is a Japanese term which means a card. These cards contain details of the work to be done on the software. The purpose is visualization. Every team member is aware of the work to be done through these visual aids.
Teams use these Kanban cards for continuous delivery. Just like Scrum, Kanban is also for helping the teams work effectively and promotes self-managed and collaborative teams.
But there are differences between these two as well – like during a scrum sprint, the items being worked upon by a team are fixed and we cannot add items to the sprint whereas, in Kanban, we can add items if there is available capacity. This is particularly useful when the requirements change frequently.
Similarly, another difference is that while the scrum has defined roles of a PO, scrum master, and development teams, there are no such pre-defined roles in Kanban.
Another difference is that while the scrum suggests prioritization of product backlogs, Kanban has no such requirement and it is totally optional. Thus Kanban requires less organization and avoids non-value adding activities and is suitable for the processes which require responsiveness towards changes.
Lean is a philosophy that focuses on waste reduction. How does it do that?
In lean, you divide a process into value-adding activities, non-value adding activities and essential non-value adding activities. Any activity which can be classified as a non-value adding activity is a waste and we should try to remove that wastage in the process to make it leaner.
A leaner process means faster delivery and less effort wasted in tasks which don’t help to achieve the team goals. This helps to optimize every step in the software development cycle. That is why the lean principles were adapted from lean manufacturing into software development.
Lean software development can be used in any IT project by applying the seven lean principles which are shown below:
These are quite self-explanatory as their names suggest. Eliminating wastage is the first and most important lean principle and we saw how to do that, we just classify activities as value and non-value add.
A non-value add activity can be any part of the code which might make it less robust, increase the effort involved and take up a lot of time while not adding justifiable business value. It can also be vague user stories or poor testing or adding features that are not required in the big picture.
The second principle amplifying learning is again easy to understand as a team needs various skills to deliver products in a rapidly changing environment with new technologies cropping up in quick durations.
Making late decisions can be rewarding in circumstances where it reduces rework like if there are any changes expected then better delay it so that the team does not have to redo the work as the business needs change.
But there is always a trade-off here as the teams need to balance this with the fourth principle of delivering faster. Delaying of decisions should not impact the overall delivery and must not reduce the pace of work. One eye should always be on the complete picture.
Having empowered teams is also very common nowadays and this is something that even agile suggests. Empowered teams are more responsible and can take decisions faster. The sense of ownership in an empowered team leads to better results. To empower a team, they should be allowed to organize themselves and take decisions on their own.
Thus we see that lean and agile have a lot in common with one stark difference – while lean teams can help to refine a product, agile teams are the ones who actually build the product.
#4) Extreme Programming (XP)
Extreme programming is another most popular agile techniques. As per extremeprogramming.org, the first XP project was started on March 6, 1996. They also mention that XP impacts software project development in 5 different ways – communication, simplicity, feedback, respect, and courage. These are called the values of XP.
Out of these, it all starts with communication. XP teams collaborate with business teams and fellow programmers on a regular basis and start building a code from the very first day. The focus here is on face to face communication as far as possible with the help of the other visual aids.
Extreme programmers also build a simple code and start getting feedback on it from the first day itself. The focus is on not going overboard or predicting requirements which have not been shared. This keeps the design simple and produces just the minimum product which will serve the requirements.
Feedback helps the team to improve and produce a better quality of work. This helps them build respect for each other as they learn from each other and learn how to share their views.
This also gives them the courage as they know that they have gathered everyone’s best ideas and produced a good product with the feedback from others. Thus they are also not afraid to include changes or receive further feedback on their work.
This is particularly useful in projects where the requirements are going to change often. Constant feedback will help the teams in including these changes with courage.
Thus we have seen the different agile methodologies like Scrum, XP, Kanban and Lean along with their respective advantages and disadvantages.
Now, we can easily differentiate between them and also appreciate the subtler differences amongst them. We also learned the fundamentals of each of these methodologies and saw how to apply them in our projects as and when required.
Source : https://www.softwaretestinghelp.com/