Agile software development means using methods that divide the project into several smaller pieces (iterations) through iterative work. This is because Agile assumes that the direction of development work changes frequently. Every couple of weeks, the customer gets a piece of the working product, and they can look at it, enjoy it, raise their concerns, and give new comments.
Agile Values and Principles
The basic values and principles of agile can be defined as follows.
People and interactions over processes and tools
The biggest impact on the success of your project comes from the people involved. Even with a well-defined processes and expensive tools, you won’t get good results without assembling a committed team.
Working products over complex documentation
In my opinion, creating detailed project documentation and plans before development work ties your hands. You know your industry, you have an idea for a product, you think you have covered everything, and yet the functionality in the delivered product is not what you imagined. You get frustrated because everything was described in detail.
From the team’s perspective, the situation is as follows. Specifications are often incomplete and logically contradictory. In addition, everyone understands a written word from the perspective of their experience and relates it to previously completed projects. That’s why it’s so important to understand that everyone (client and the team) is on the same side.
Working with the client over contract negotiation
Continuous collaboration with the client at every stage of development work is one of the fundamental characteristics of agile projects. The customer must be always here to help. And the results of the developers’ work depend on the feedback they provide. Thanks to it, it’s possible to:
- avoid a situation in which the functionality, created for months, is not what you imagined
- reduce costs (of corrections, changes, improvements)
- improve communication (because many problems arise from insufficient communication, not from bad intentions of the parties involved).
Reacting to changes beyond sticking to the plan
During implementation, new requirements and changes always appear. Most often you realize that your assumptions from the beginning of the project can, and should be improved. Following Agile approach makes you realise that change is good and is an inevitable part of the development process.
Now ask yourself what is more important: a product tailored to your needs or a product tailored to the written documentation?
I believe there is only one answer to this question. Openness to interpersonal communication, teamwork, creativity, and self-organisation allows us to create a product tailored to your needs.
How to Work Agile
This is one of the best-known agile software development methods. It consists of twelve core practices, some of which are engineering practices. These include:
- continuous integration, which is the frequent, regular incorporation of ongoing code changes into the main repository and verification of the changes each time
- test-driven development, a technique of software development guided by tests
- pair programming, consisting of the joint work of two programmers, one of whom is the main coder, while the other observes, reports corrections and proposes other solutions
- code refactoring, consisting of changing the existing code into a more readable and easier to maintain one. As I have already written, it is worth thinking about the maintenance of the application earlier.
Feature-Driven Development (FDD)
FDD is about producing useful software in a repeatable way, providing constant information about the state of the IT project to the customer. The most important thing here is the quality of the created software, whose subsequent versions are created frequently, and contain new useful features.
Dynamic Systems Development Methodology (DSDM)
A distinctive DSDM working technique is the MoSCoW, which is a very convenient tool for prioritising requirements. What does MoSCoW mean?
- MUST have this – the application must have this functionality
- SHOULD have this if at all possible – the application should have this functionality if it is possible
- COULD have this if it does not affect anything else – this functionality is needed if it does not negatively affect others and the effectiveness of the system
- WON’T have this time but WOULD like in the future – this functionality is not needed now but could be added in the future.
Lean is the concept of obsessively looking for everything that is wasteful in the manufacturing process. It uses many interesting tools. These include short manufacturing cycles, work queuing system, continuous process improvement, elimination of losses. Kanban, one of the tools used in this method, is very popular. It is an information system, a system of planning, distribution, and control of production activities and tasks.
Scrum is an agile method of managing projects, not only the IT ones. The heart of this method is a team, which is formed by people motivated to achieve a common goal. Scrum does not describe standards or specific solutions. Rather, it is a model of operation, providing teams with a structure (specific practices and rules).
In Scrum, the customer requirements are called the product backlog. Successive iterations are called “sprints“. The elements of the product backlog that the team completes in a sprint are called the sprint backlog.
Scrum also describes project roles:
- Product Owner – a person who is responsible for the requirements, sets priorities, and receives work in sprints.
- Scrum Master – they help to understand the method, support the team in the implementation of specific practices, and remove obstacles that hinder daily work.
- The team – usually five to nine people.
What is particularly noteworthy about Scrum is its work philosophy, which is truly revolutionary. Scrum is based on the principles of empirical process control, which assume that experience is the source of all knowledge. So Sprint is about observing and adapting to changing conditions. It is also the ability to learn from mistakes.
Scrum is also about transparency. From planning, through daily scrums, to retrospectives, we have continuous insight into the current situation and the work of team members. In Scrum, there is always time to react to problems.
10 Reasons Your Developers Should Work Agile
- With short iterations, you get a piece of your product every few weeks.
- Being agile allows you to enjoy your own work and keeps team members highly engaged.
- Any doubts about the direction of your product are cleared up on the fly.
- By reducing the time to react to implemented features, you reduce the cost of development.
- You can react on an ongoing basis to changing conditions and be more competitive in the market.
- Extreme Programming practices allow you to keep track of changes, development direction, and verify progress.
- Feature-Driven Development practices allow you to frequently update your application and adapt it to trends in your industry.
- Dynamic Systems Development Methodology practices will help you make decisions simply and transparently.
- Lean practices facilitate the elimination of losses in your project.
- Scrum practices give your work transparency.
In summary, working according to Agile helps you to structure and accelerate work, setting the right pace. It also helps you notice and solve problems before they pile up.