Agile Software Development
The origins of Agile
The software development industry faces the need to develop products in a steady and adaptive way. Companies have to deal with Agile on a daily basis, and the benefits of the methodology are visible for the industry.
Although Agile is a very prominent methodology that helps companies deal with the market’s uncertainty, this particular theme has been studied since 1990. When PC computing started to proliferate, software development faced a crisis. Back then, experts estimated that the time between a validated business need and an actual application in production was about three years. Within three years requirements, systems and needs were most likely to change.
Software development companies had to face rapid changes in requirements of the products they were developing. At the time, the business used traditional methods of project management. These methods are known to be rigid and having strict plan-driven processes. Traditional methods failed to provide the software desired because they couldn’t adapt to the quick changes.
In 2001, a group of developers, frustrated by the unproductive software development activities led the Snowbird meeting in Utah. The main focus of this meeting was to find the best way to quickly build software and deliver it to users. From here, the “Agile Manifesto” emerged, with 4 main values emphasised:
1. Individuals and interactions over processes and tools
The first value shifts the focus from the processes to the people. This change is important because the ones who respond to business needs and that drive the development process are the people working in the company.
2. Working software over comprehensive documentation
With traditional methods, a significant amount of time was invested on documenting the product for development. All the phases would be planned, documented, approved and released. This caused long delays in development. Agile does not say documentation is not necessary, but builds it in a practical way, giving the information required to the developer in the form of user stories.
3. Customer collaboration over contract negotiation
In traditional methodologies, customers negotiate requirements for the product, with a high detail level, before any work starts. This means that the customer was active in the process of development before and after the development began, but not during the process. Using agile means that the customer is involved through all the development process. This makes it way easier to develop the product that the client wants and had envisioned because the client can send feedback and ask for modifications of the end deliverable.
4. Responding to change over following a plan
Before Agile, traditional software development labelled change as an expense, hence it should be avoided at all cost. For this, one should develop detailed plans, with defined features and dependencies on delivering in a specific order. Agile has short iteration, meaning that priorities can be shifted, and new features can be added. Changes create value – not only for the client, but for the business as well.
Although the values of the business changed focus, this does not mean that the previous values should be eliminated. The main difference rests upon on what carries more value.
Besides the four mains values, written in the Agile Manifesto are also 12 principles that describe a culture in which change is welcome, and the customer is the focus of the work.
- “Customer satisfaction through early and continuous software delivery” – customers are more satisfied when they are able to receive working software at regular intervals, rather than receiving the final product at once;
- “Accommodate changing requirements throughout the development process” – the ability to avoid delays when a requirement or a feature changes;
- “Frequent delivery of working software” – one of the Agile frameworks that integrate this principle is Scrum, because it works in sprints that ensure a regular delivery of software increments;
- “Collaboration between the business stakeholders and developers throughout the project” – If the business and the technical team are aligned, they are able to make better decisions;
- “Support, trust, and motivate the people involved” – The business must trust their teams and understand that the teams are the best people to make decisions on software issues. The team must feel like it has support from their company;
- “Enable face-to-face interactions” – Communication is more successful when development teams are co-located;
- “Working software is the primary measure of progress” – One of the ways to track progress is by the delivery of functional software to the customer;
- “Agile processes to support a consistent development pace” – Teams decide a repeatable and maintainable speed at which they can deliver;
- “Attention to technical detail and design enhances agility”
- “Simplicity” – Teams should develop just enough to get the job done;
- “Self-organizing teams encourage great architectures, requirements, and designs”
- “Regular reflections on how to become more effective”
The success of Agile
Agile methodologies used in projects have a significant impact on project success when measured by efficiency, stakeholder satisfaction and perception of overall performance. Adding to this, the complexity and experience do not influence the project success, meaning that Agile can be used for complex projects or projects with members on different levels of knowledge (Serrador & Pinto, 2015). Adopting Agile methods in software organizations is beneficial for fast and high-quality deliveries.
Agile has been growing, and here are some stats to prove it:
- Based on the Project Management Institute, almost 71% of organizations report using Agile approaches;
- Microsoft Project is the most popular management software, and Atlassian Jira is the most popular Agile-tool;
- The average Agile project manager salary is $84,134 in the United States;
- In the “Agile Project Delivery Confidence”, PwC states that Agile projects are 28% more successful than traditional projects;
- Atlassian’s post about teamwork says that 50% are more motivated by team success than company (27%) or individual (23%) success