Agile methodologies help companies respond quickly to user needs. Development techniques change over time. And so do user requirements.
In traditional structured development requirements are developed early in the process and the software development cycle in lead by that blueprint. Contrary to that, agile methodologies are prone to constant change in development, which (surprisingly) isn’t a bad thing. The system develops incrementally due to a series of prototypes highly adaptive to user requirements.
Agile methods typically use a spiral model, where the final product is built gradually in a series of iterations and user feedback. The method determines the end result. Each iteration is a specific goal resulting with a prototype. Those prototypes are the path leading to the overall objective – a finished system. Teams are also cross-functional and they go back and forth through the development process, before coming up with the final solution.
1. Why Agile Methogologies?
Before you continue reading, focus on the following picture for a second.Agile methodologies focus more on interactions and individuals requirements, than on strict developing principles. There lies their flexibility. They also put more attention on the system functionality, than on the written documentation. Agile, means agile team and user collaboration, with frequent feedback, rather than negotiation of terms and fixed contracts. And last, but not least, these methodologies are responsive to change, rather than keeping up with previously developed plans.
You must be wondering: Why is that so?
Well, there are a few explanations.
- Users may not know what is possible with IT. They may not have enough tech knowledge to define their business requirements properly at the very beginning of the development process and a little professional assistance could boost system performances.
- Businesses are constantly changing. As well as their environments. What the business needs now, is not always what it will need when the project is done. Take notice that some IT projects take years to develop, and a year is a whole lot of time to even change the overall business strategy.
- Knowledge transfer, tech trends and staff training. In the tech world, there are always new things to learn, trends to follow and they change over time. What developer know today is not finite. And so aren’t the software performances.
There are many agile methodologies, but subjectively, we believe that Extreme Programming (XS) and Scrum are the most popular ones (and also the ones most easy to implement). Here are the main differences between the two methods:
In this article, we are going to elaborate Scrum, since it’s the methodology we use in software development.
2. The Scrum framework
Scrum is an agile software development framework leading the product development process with a flexible and development strategy going towards a holistic objective, or goal. Companies mostly use it to manage complex software and product development, using iterative and incremental practices. It emphasizes decision making from real-world results rather than speculation. The goals of Scrum is for users can change their user requirements during the development process and the team should react quickly and efficiently on implementing these changes.
The Agile methodology has three main principles: Roles, Time-boxes and Artefacts.
An essential thing to keep in mind while implementing the scrum methodology is who you are implementing it on-the team structure. This means that the developers using this methodology should show a lot of respect openness and commitment to each other, communicate regularly and keep the focus on the project by taking different roles.
There are three roles in Scrum:
Sometimes they also call him a Product Owner. That is someone who takes care about user requirements and makes sure that the product keeps its business focus, alongside its technical focus. It doesn’t strictly have to be someone who works as a programmer. He should be someone with great communication skills who knows how to translate user needs to the team of programmers.
This is someone who organizes the team work and spreads the system vision throughout the team members. This person monitors the performance and communicates constantly with programmers to make sure they keep up with the system quality and work patterns. In our case, this is a programmer with a great deal of knowledge in programming.
These are the programmer who work on developing the system. It’s self-managing” and self-organizing to complete work.
The Scrum project develops during a set of sprint. They are set on different time-boxes, from two weeks to a month.
One sprint means a set of idea implemented into a code, tested on functionality and integrates into the major system.
There are four types of meetings in scrum methodology:
- Sprint Planning Meeting
- Daily Scrum Meeting
- Sprint Review/Demonstration Meeting
- Sprint Retrospection Meeting
All team members attend daily scrum meetings for no longer than 15 minutes and discuss what they work on and synchronize their work. After every sprint, they write a review on the new developed functionalities. At the end, there is also a team retrospective, discussing the finished sprint and the possible optimization of the system features developed in it.
There are three artifacts in Scrum:
- Product Backlog.
Defines what will be build. This is a list of everything the product needs. It shows the business value and describes the needed development efforts. It is fully flexible and it changes (sometimes entirely) through the development process.
- Sprint Backlog.
It shows the functionality and implementation of each sprint and defines them for the next increment, also. It lists all the tasks and items which will contribute to the development. The tasks develop a state with time: to do, current and done.
- Product Increment.
This is a usable condition of the system. A set of tested tasks which can be used to execute an operation or a certain function. It may be also needed as user documentation.
3. Agile Methodologies: Advantages and Disadvantages
- Structured development can lead to a lot of unnecessary work, which will result as unuseful at the end of the project. Agile iteration sets that possibility to a minimum.
- Agile development ensures savings in time with the possibility for quick changes in system requirements and rapidly implement the user request.
- The adaptive agile methods are very flexible and efficient.
But there are a set of drawback which make them less attractive to developers.
- Quality: The quality of the project may be sacrificed due to frequent changes and unclear definition
- Time-consuming: Frequent scrum meetings and thick deadlines for product delivery can make project life cycle very intense
- Subjectivity: It depends highly on individuals, since it’s based on work commitment, communication and collaboration between them