In recent times, when we talk about Software Development, we come across the term “AGILE”.
To clear the confusion, let’s understand Agile in depth.
Agile is not just restricted to software domain now, it is widely used across design, business and of course, engineering domain.
Before we dive deep into ‘Understanding Agile’, let’s first go through the ‘Waterfall Model’.
In Waterfall Model Approach, there is one way followed. The project starts with gathering requirements and its analysis, understanding the design, implementing the design by coding, then testing the code, maintaining the code even after the project delivery. This is where the project is completed and delivered to the customer.
Challenges : What if the requirements change during the journey of the project? What if it doesn’t work?
Since there is just one path to follow, going back and forward is time consuming and not possible at times. There is no scope for feedback until the project is ready to be delivered to the customer. Thus, the customer is not kept in loop during the project development. Thus, makes this model unfavorable.
Now, Let’s talk Agile…
Agile has an upper hand in any kind of environment, especially dynamic. It helps you focus on what is important at the current moment and think of the end goal. Even if the requirements or the goal changes, the focus will be on faster and efficient delivery.
The Agile Methodology
Agile methodology helps you in work with the customers in a flexible manner, which helps in faster iterations.
During the software development life cycle, this practice focuses on continuous deliveries with continuous iterations throughout the process, for an overall faster and better experience to achieve the project goal.
Some of the benefits of using the agile methodology :
- The customer is involved in the development process and gets to see the progress by the end of every sprint (defined time period to achieve a set of predefined goals), so the regular feedback helps the development teams to iterate faster and as required.
- This helps in transparent communication and better clarity of how the project is progressing and what is the need of the hour for both the teams and the customer.
One needs to be aware, in spite of having many advantages, the requirements may not be very clear at the start. But it will be gradually improving over the course of the project.
The value that Agile provides is learning continuously and implementing it quickly. It is not just a method, it is a way of thinking and a mindset to be adapted.
Before we get deeper into understanding the concepts of using agile, let’s understand the basics –
The Agile Manifesto
Check out The Agile Principles here.
Here are a few frameworks/concepts used at various stages to implement agile methodology in the software development process, which will make the process efficient and following the best practices :
Scrum is an agile development process, that is a mix of an iterative and an incremental method. It is originally derived from the sport of rugby. It focuses on completing the planned tasks within a defined time period. In the agile framework is called “sprints”, which helps in regular tracking. It helps align with the planned timeline of the project and complete the backlogs (predefined independent tasks) in a prioritized manner.
As seen in the above figure, there is a sprint started with 4 tasks set for the sprint to be completed in the time frame of 2 weeks. It can be assigned to team members. The entire communication can become remote with the help of the board, team can start working on the tickets assigned to them in a prioritized manner. They can comment and tag team members, if blocked somewhere.
Kanban is quite similar to the scrum board, just that here the focus is on completing the highest priority task first, not focusing much on the time period for the same. The to do tasks are defined first, like setting up your project plans. This can be organised based on the priority at that moment.
The above figure rightly explains the flow of a kanban board. It is divided into three columns — To Do, Doing, Done. The colors of the tickets define the priority level which can be modified as per need. The tickets can be assigned a deadline of completion.
3. CONTINUOUS INTEGRATION, CONTINUOUS DELIVERY
Abbreviated as CI/CD, this is not a framework of agile methodology, but an integral part of agile. If implemented with the agile development process, it will help in taking care of your code by adapting to continuous changes and then deploying it safely. It uses automated testing to deliver the software to the customer faster.
Continuous Integration is a software development practice that requires the developers to push the code daily to a specific repository. Each task is automated and checks for any bugs. As errors are caught faster and solved regularly, this helps in maintaining a code coverage and a clean code by the end of the project.
Continuous Delivery is the process of combining all the changes, work of the project faster, safely for delivering it to the customer. This helps in making sure that the code is always in a deployable state.
4. TEST DRIVEN DEVELOPMENT
Also, TDD. It is a three step process — coding, testing (in the form of unit testing) and refactoring (updating the code to suit the test cases).
SO, TDD works in the following way :
- Write the tests cases based on the customer/project requirements
- When you run the tests, it is meant to fail since it contains no feature for it to check
- Now, write a very simple code, just enough for the test cases to pass
- Refactor the code based on the requirements to make it up to mark
- Keep on repeating the process for new requirements
The common benefits of using this agile approach of testing is to make sure that there is maximum code and requirements coverage and reducing the team’s efforts in the later stage of testing since the process is already covered before.
An integral practice in agile methodology is daily standups. As the name suggests every team will have a standup meeting in the morning daily to discuss what each team member did yesterday, what they will work on today and if they are blocked somewhere, where they would need other team members’ help. It is a short meeting to ensure there are points discussed for collaboration, if any.
These are some of the agile practices that can be implemented in your software development process to increase the speed, efficiency, collaboration for both the customers and the agile teams.
I hope this gives you a good start to take your first step into agile!