Since the “Agile Manifesto” hit the scene, it has brought about positive changes in software development and sparked controversy in the IT society.
Agile evangelists believe that the agile approach makes it possible to deliver the software faster and continuously improve it.
Their opponents claim that the agile approach to software development undermines all existing acceptable practices.
So who is right? Based on our software development experience, which we have also implemented using agile methods, we would like to break down the collective term “agile software development” into individual elements in our blog post and explain what is behind this term.
Agile software development: values and principles
The four values and 12 principles of agile software development come from the Agile Manifesto, which was published in 2001 to make the development process leaner and more flexible.
The following values were listed, emphasizing that the values on the left are valued higher than those on the right:
- Individuals and interaction more than processes and tools. Planning is essential, but team members and internal communication are paramount. Individuals can develop further and continuously improve the entire process with their skills and specialist knowledge.
- Functioning software more than comprehensive documentation. Although the documentation serves as the basis for further maintenance, the focus is on the functioning software. We should also note that agile projects are primarily about needs-based documentation.
- Cooperation with the customer more than contract negotiations. To avoid misunderstandings and incorrect interpretations, one relies on permanent and close collaboration and direct and open communication with the customer. The more intensively a customer is involved in the development process, the more satisfied he will be at the end of the project.
- Responding to change more than following a plan. There is no point in creating detailed plans for months (or years) because changes are essential. Reacting flexibly and timely to these changes through short iterations and frequent releases contributes more to the product’s success than simply following a predefined plan.
The 12 Agile Principles (Image)
The agile manifesto also contains 12 principles of the agile approach to software development:
Agile Software Development Process
An agile development process is divided into the following phases:
- Initial planning. This phase does not involve detailed planning of the software product but rather the definition of milestones on the way to the desired outcome. Experience has shown that it is difficult to describe all framework conditions in advance and follow the plan drawn up during the project. Agile software development makes it possible to refine planning step by step.
- Iteration. The entire project is broken down into several iterations (2-4 weeks each) to deliver the working software that can be improved based on customers’ feedback when planning the next iteration. Each iteration consists of the following phases: planning an iteration; Development of features; Testing, and acceptance.
- Extradition. The working version of the product is shipped to the customer. The functional software is released after each iteration. In this way, the product goes through several releases. New features can be added after each release, which gradually improves the software until it fully meets customer expectations.
Agile software development: advantages in general
Agile software development offers several advantages that contribute significantly to project success.
The main benefits include the following:
- Faster delivery: The functional software is released at the end of the first iteration. The developers start working on the project as soon as they know the high-priority requirements. You will add more functionality in the next iterations. The scope of functions is defined in the course of the project according to changed circumstances.
- Documentation with little effort: detailed specifications are not required because constant changes are even planned. But that does not mean that it is not documented in agile projects: less, needs-based, and in a different form.
- Continuous improvement: Flexible adaptation to customer requirements or changes in the work process become part of the agile approach. This makes it possible to improve the software and deliver satisfactory results continuously.
- Practical cooperation: The intensive customer involvement in all phases ensures that misunderstandings are avoided, and the client receives the software that meets his requirements.
- Higher quality: Testing after each iteration helps identify and eliminate errors at an early stage, thereby increasing the product’s quality.
Agile software development: Advantages for outsourcing companies
There are numerous debates about whether it is even possible to combine an agile approach and outsourcing because the agile approach to software development requires that a company react quickly and flexibly to all changes. Therefore, it isn’t easy to establish an effective, long-term relationship between an outsourcing provider and a customer without regular meetings and direct communication.
But as experience shows, it depends on how flexible and complete a client’s requirements are.
During the implementation of numerous projects, our team for outsourcing software development discovered that the agile approach also opens up several possibilities for outsourcing projects to plan and manage a software project more effectively and thereby continuously improve the software quality. What advantages does agile development offer when outsourcing:
More detailed and more effective project planning
Agile development involves comprehensive planning of each function for an iteration that regularly takes 2-6 weeks. Once the outsourcing provider has a plan for an iteration and shipped a working product with high-priority features, it plans a new iteration. As a result, the entire planning for the project is carried out step by step.
Visible project progress
The agile development offers opportunities to analyze results after each iteration – quality, costs, deadlines, budget, and more – using suitable software metrics and to check the project progress regularly.
If it turns out that specific improvements are necessary – for example, introducing new technologies or a different distribution of the available project resources – it is possible in agile projects to continuously carry out these improvements from iteration to iteration.
Improved team management and resource allocation
Through the agile software development approach, you can improve team management processes and manage various resources effectively.
Every outsourcing project is aimed at delivering the product of the highest possible quality. Here, too, agile development comes to the rescue by making it likely to increase the product’s quality to be developed both through constant improvements and optimization of internal processes (also based on feedback from customers) and through continuously carried out test activities during each iteration.
Disadvantages of Agile software development
Although the advantages of agile software development listed above look convincing, this approach also has some disadvantages :
- Unknown risks: As the project’s scope can change, unexpected challenges may arise during the project that needs to be eliminated.
- No overall overview: If requirements can change in the project’s course, it isn’t easy to estimate the time and budget. Furthermore, there is always a risk that the project can get out of hand.
- High time expenditure for communication: The agile approach requires a lot of time to coordinate all processes. It’s not just about internal communication between subject matter experts and developers. The customer often has to be involved in the development project, which is not always possible. This can take a lot of time and lead to delays.
- Dependency on soft skills: The project’s success also depends on how effective the cooperation is, both in the team and with the client. The development team may, for example, have poor organizational skills, which means that the goals set at the beginning of each iteration are not achieved and thus move on to the next. This does not speed up the delivery but slows it down.
7 Popular Agile Development Methods
The following agile development methods are prevalent:
Scrum is one of the most prevalent agile methods in which the development process is divided into short incremental iterations (so-called sprints) that last 2 to 4 weeks. Each next iteration is based on the results from the previous one. This method offers the possibility of continually following the project’s progress: analyzing results regularly and creating more flexibility through feedback to customers.
Kanban helps to prioritize tasks and to visualize their current status on the so-called Kanban board. This method also makes it possible to limit the number of orders and thus distribute resources more efficiently and avoid overloading the development team.
Lean method of agile development comprises principles that help lean processes in software development to minimize waste (excessive functionality, downtimes in the development process, unclear requirements). Above all, it aims to find out what the customer needs and bring the new product to market based on the results.
4. XP (Extreme Programming)
It is a method where the focus is on coding from the start, and some aspects (e.g., documentation) are deemed redundant. Short development cycles and software releases (1-3 weeks) make it possible to receive customers’ feedback and react flexibly to changes. Acceptable development practices are used in this model:
- Programming in pairs – each code is created by two employees who sit together on one computer.
- Test-Driven Development – Tests are used to control software development.
- Continuous integration – changes made are regularly integrated into the project.
5. DSDM (Dynamic Systems Development Method)
DSDM attaches particular importance to the integration of users. This agile approach consists of seven phases: pre-project, feasibility study, business study, functional model, design and construction, deployment, and post-project. In contrast to other agile methods, DSDM covers the entire project cycle.
Crystal represents a family of agile methods that enable parallel developments and form a basis for selecting a suitable method for each project depending on the project size, criticality, and objective. The goal is to choose the leanest way that will lead to success.
7. FDD (Feature Driven Development )
FDD is an approach that focuses on the definition of features during development. First, the overall model is developed. The creation of a feature plan follows this. Every component must bring added value to the customer. According to this plan, the development process is organized according to the feature – planning, design, and creation.
Now you know that the generic term “agile software development” covers several aspects. Values and principles formulated in the agile manifesto form a basis for elegantly implementing software projects.
But the agile approach is not a panacea for all projects. It makes sense to weigh up the advantages and disadvantages of agile and classic software development and choose a suitable agile development method.
The right decision can make a significant contribution to the success of your project. Let’s discuss your project now.