Agile methods grew out of the real-life project experiences of leading software professionals who had experienced the challenges and limitations of traditional waterfall development on project after project. The approach promoted by agile development is in direct response to the issue associated with traditional software development both in terms of overall philosophy as well as specific processes.
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 in 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.
Problems with Traditional Software Development
According to the Standish Group’s famous CHAOS Report of 2000, 25% of all projects still fail outright through eventual cancellation, with no useful software deployed. Sadly, this represents a big improvement over CHAOS reports from past years. And now there is more evidence of the same kind. In Agile and Iterative Development: a Managers Guide, renowned consultant and author Craig Larman does a thorough job of debunking the traditional waterfall model once and for all.
The numbers are overwhelming. A study in the United Kingdom shows that of 1,027 projects, only 13% did not fail, and waterfall-style scope management was the “single largest contributing factor for failure, being cited in 82% of the projects as the number one problem.” A 1995 study of over $37 billion USD worth of US Defense Department projects concluded that “46% of the systems so egregiously did not meet the real needs (although they met the specifications) that they were never successfully used, and another 20% required extensive rework” to be usable.
Why Agile Methodologies?
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 includes a collaboration between the agile team and the users, with frequent feedback, rather than the 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 developers 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.
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 goal 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 of 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 teamwork 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 programmers who work on developing the system. It’s self-managing” and self-organizing to complete work.
The Scrum project develops during a set of sprints. They are set on different time-boxes, from two weeks to a month.
One sprint means a set of ideas 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 of the newly developed functionalities. In 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 built. 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.
Benefits of Using the Agile Method
The Agile Method grew out of the experience with the real-life projects of leading software professionals from the past. Because of this, the challenges and limitations of traditional development have been discarded. Subsequently, the Agile Method has been accepted by the industry as a better solution to project development. Nearly every software developer has used the Agile Method in some form.
This method offers a light framework for assisting teams. It helps them function and maintain focus on rapid delivery. This focus assists capable organizations in reducing the overall risks associated with software development.
The Agile Method ensures that value is optimized throughout the development process. The use of iterative planning and feedback results in teams that can continuously align a delivered product that reflects the desired needs of a client. It easily adapts to changing requirements throughout the process by measuring and evaluating the status of a project. The measuring and evaluating allows accurate and early visibility into the progress of each project.
It could be stated that the Agile Method helps companies build the right product. Instead of trying to market software before it is written, the Agile Method empowers teams to optimize the release during its development. This allows the product to be as competitive as possible within the marketplace. It preserves the relevance of the critical market, and it ensures that a team’s work doesn’t wind up collecting dust on a shelf. This is why the Agile Method is an attractive developmental option for stakeholders and developers alike.
There are many critics of the Agile Method; however, this method produces results that clients can take to the bank. Although a project may not turn out exactly as the client envisions, it will be delivered within the time that it needs to be produced. Throughout the process, the client and the team are changing the requirements in order to produce the quality needed by the client. Clients are happy with the results, and the team satisfies the client’s needs. The ongoing change can sometimes give both the client and the team more than they had originally envisioned for the product. The Agile Method really is a winning solution for everyone involved in software development.
Criticism of Agile Development
- It is developer-centric rather than user-centric.
- Agile focuses on processes for getting requirements and developing code and does not focus on product design.
- Agile methodologies can also be inefficient in large organizations and certain types of projects.
- Structured development can lead to a lot of unnecessary work, which will result in unuseful results 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 drawbacks which makes 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