Agile is a buzz word nowadays and Google trend says that lot of people search for the term What is Agile? So, what exactly is Agile Methodology or how does it work? Agile is a word that the IT industry uses to describe an alternative method of project management. Let us learn about what is Agile in this tutorial.
The purpose of this article is to cut through the clutter to give you a better, clearer & more concise meaning of Agile. Once you understand this, you can correct your manager when they talk about how agile they were with their series of meetings.
We will be covering the following topics in this article:
- Agile Intro - It includes the basic introduction of the Agile methodology.
- Agile Process - It covers how Agile software development lifecycle works.
- Why Agile over traditional methods - We will talk about the problems with the conventional methods and how Agile can help in reducing them. We will also compare Agile with the Waterfall model and see how it is better.
How Agile ensures functional delivery every week and will also know about the standard technical terms used in Agile.
What is Agile?
The first thing that we need to understand about Agile is that it’s an approach and a mindset. It’s not a list of instructions to follow. Neither it is a textbook nor a certificate. If we try to turn Agile into a black and white paper document, then it goes against everything that Agile is.
Let's try to understand Agile with the help of an example. Suppose - You are a story writer, and a director approaches you and wants you to write a story for him. You take down the director's requirements and start writing the story & deliver. He reads it, reviews it and comes up with the changes required. You then try your best to include all the changes and resubmit it. Once again the director suggests some other changes & this may or may not end here.
However, the other approach that you could adopt was to probe the director about his requirements and get precise details about what he wants in his story. Then you can create an overview, show it to him and seek his approval. Once approved, you can go ahead with writing the story after clearly setting the expectation of delivering one story each week.
The client can then review and give feedback on it. In the meanwhile, you can start working on the next episode. Once the feedback is received, you can make the required changes and at the same time deliver the next episode timely. This will reduce the time taken, reduced rework, reduced your efforts and expenses too. This is what Agile does in the Software Development industry -dividing your tasks into small bits and managing them in a short period.
The agile model adopts iterative development, and each iteration is designed to be small and manageable that can be delivered in a specific short period of time. i.e., a week or a couple of weeks.
An agile model is a group of development processes, and its main motive is to remove/avoid activities that may not be required for the project and to remove anything which is a waste of time and effort.
Agile gives us an idea about how much of our delivered product is valuable and whether we’ve missed out onto something that counts.
Agile is a framework that defines how software development needs to be done. It’s not a single or specific method, and it is the collection of various methodologies and best practices that follow the value statement signed with the customer.
How does Agile work?
When you have many things to do but do not have enough time to complete them all, what will you do? You will make a list of all things, prioritize them, assign time and try to complete all the tasks.
Agile works like this. We will discuss the agile process step-by-step.
To understand it better, we can take the help of an example. Let’s consider a customer who wants you to develop software for them. Below would be the steps that you will follow as per Agile:-
Create a List: This step includes meeting customer and taking down all the details and features that they want to see in their software. This list of requirements and functions is called the User Requirements List, and this becomes the to-do list for this project.
Estimating and Sizing: After making the user list, you will size stories relative to each other using Agile Estimation techniques and come up with an estimate of how many days each story would take to complete.
Setting Priorities: After giving an estimate you can take customer’s help to know their preference. You can ask them to prioritize their user list so that you can finish the most critical task first and save the least important for the end.
Execution: Now when you know the customer’s priority and have a master story list in place, you can finally start delivering some value to the customer. You start from the top, with the most prior task and work your way down to the bottom for the least prior task. After every delivery, you take feedback from your customer.
Updating Plan: As you start delivering the product to the customer, he will come up with some changes. You can include those changes in your list. If required, you will reprioritize the list of items. There might as well be a case where you are not fast enough and may not deliver the project in time. In such a case, you will always be delivering the highest priority and most important features. The prioritized list is used to define work order.
However, these practices and methods of Agile do not claim to solve every problem present in the software development industry because of the ever-changing environment and demands. But they help to establish a culture and provide an environment where tangible solutions emerge.
In earlier days Waterfall Model was one of the most popular Software Development Models to deliver any project, but software developers faced many issues while using the waterfall model to develop new software. There were many drawbacks in the waterfall model which used to create difficulties around including the changes and the time and cost required for that.
To deal with these drawbacks, the Agile Software Development Model was suggested. In its initial phase, it was designed only to help any software development project to adapt to the client’s and market's frequently changing requirements and to provide quick project completion.
What is wrong with Traditional Methods?
Nowadays, traditional methods are being replaced by a more streamlined process. Below are the few reasons as to why traditional methods may no longer be applicable in modern business:-
High Cost: Traditional methods may be quite costly, and often 60% of the budget is spent on developing features that may not be used or required by the customer. It is a major concern for business. The biggest problem with the traditional methods was wasted budget as they were paying for something that customers/users did not demand and did not use.
Not Productive: In the traditional approach, there were vast chances of disconnects between the business (customer) and the engineer. Usually, in conventional methods, the engineer puts the structure of the software in place and later implements the system features needed by the business. This used to cause a delay in the development process. Until the software completes it is non-functional for the user.
Cost and Time on Changes: In all traditional methods, particularly in the waterfall model, it can be very rigid to implement the changes. To apply any change, the progress may have to bring back to the very initial stages, and a lot of rework would be required, and rework means a waste of money, time and resources. It was one of the primary reasons for the failure of the waterfall model.
Management Involvement: Traditional software development processes required many rigorous approvals. Hence, management ends up wasting time. This lead to a delay in the project.
Transparency: In traditional methods, timely status reports were provided to the business. However, they had no idea about the real progress of the project. So there was no transparency between the business and the engineers.
In short, traditional methods often lack productivity & flexibility which may result in delays and wastage of time and money. Because of these drawbacks, traditional methods have faced denial in the modern software industry.
Agile Vs. Waterfall Model
Waterfall Challenges: In the waterfall model, we follow the below steps for software development:-
In this model, "Cost of change" is on the higher side which leaves the client with only two options:-
Accept the high cost of changes OR Accept substandard software
This model also has the following drawbacks-
- Poor Quality: In the waterfall model when the project starts running out of time and money, the organization is forced to cut costs and time on testing which in turn leads to poor quality delivery.
- Poor Visibility: Since the working project is not getting produced until the final product, so you never really know where you are on a waterfall project. Hence, the last 20% of the project seems to take 80% of the time.
- Risky: It’s very risky because you don’t get to test your design until late in the project. Secondly, as long as it’s not tested, you don’t know if you are building the right product. Lastly, if any changes are required after testing it, then you have to start from the very initial stage of the product risking the time commitment as well.
- Change: In this model, if you have to adopt any changes then you have to start from the initial stages. It does not only lead to high cost but delays in delivery as well.
Agile Approach: Agile has the same stages of software development, but this process is more agile. It follows continuous activities which makes it sharp and flexible.
- Better Quality: In the Agile method, testing starts from the first stage, i.e., day 1 and allows us to deliver better quality.
- Excellent Visibility: Visibility improves as every week you are delivering values to the business which means when you have built half the features you are halfway through the project.
- Less Risky: It is less risky because you are getting feedback after every test and you can include those changes in the next stage.
- Changes are easy: Since this is a continuous method you can make changes at any stage without investing extra money, in turn, making customers happy.
How does Agile Help:
As customers and developers are involved in all the steps, this reduces the chances of any mistakes and end-result for the client is much more rewarding.
Below are the factors using which Agile addresses all the problems mentioned above:-
|User requirement||Detailed, interactive inputs taken|
|Involvement of client||High engagement|
|Customer involvement||Customer involves as soon as the work starts|
|Escalation management||The entire team works to resolves problems as they occur|
|Model preference||Agile model favors adaption and accepts changes|
|Product or process||Less focused on formal and directive methods, so less documentation|
|Test documents||Comprehensive test planning before every value delivery|
|Effort estimation||Scrum master facilities and the team does the estimation|
|Reviews, Approvals, and feedback||Inspections are done after each iteration and feedback is also provided immediately. Requires fewer approvals|
High acceptance of feedback.
Other factors that make Agile more adaptable include :
- High Quality
- More Productivity
- Better Business Values
- Fewer Costs
- Quicker Time-to-Market
Considering the dynamic nature of businesses, where changes are happening every moment. Agile method is an excellent option for Software Development.
How agile ensures delivery of functional product every week?
To understand this point, we can consider an example; Say you are a customer and you have hired a knowledgeable and experienced team to work on your project. Now, what would give you confidence in the team that you have hired? A pile of files, reports, and plans? Or a regular/weekly delivery of working tested software which consists of your most important and requested features.
Agile is all about looking at software development from a customer’s point of view. Below is how do we do that here:-
Break big problems down into smaller problems - A week is comparatively shorter time and it may not possibly do all the work in a week. So we have to break the more significant issues down into smaller, more manageable and simpler ones.
Focus only on essential steps - Focusing on essentials make sure that we work on the most important features that are requested by the customer. This also means that everything that is not important is dropped from the plan. Just like a backpacking trip you travel lighter and take what is required. That does not mean that we do not need documentation, plans, etc. We need them but only in support of working software.
We need to ensure what we deliver is working - Agile methodology relies on functions outcomes after every iteration.
Feedback - How do we get to know that we are going in the right direction? For that, we need to regularly stop by and ask the customer if we are aiming for the right target. Taking regular feedback is one of the most critical steps. If there are any variations in customers’ expectations, then we need to take preventive measures.
Change plan and course of action when needed - In any software development project things change so, we can’t just make a plan and follow it blindly. When reality changes we need to change our strategy, plan, and course of action accordingly.
Accountability - Delivering value in every iteration means that teams become accountable. And accountability means you would be providing things with quality on time and as per customer’s requirement.
Following the software development life cycle in every iteration, we have to deliver the fictional product to the customer in committed time.