In today’s globalised world, where we are competing against many different companies located in various continents and with limited resources (both material and financial), businesses need to react quickly to new challenges and situations in order to be as competitive as possible. In this sense, part of the responsibility falls on the IT departments, which must support and help the rest of the departments in the company to achieve their objectives. In recent years new concepts have appeared in Spain to align the way software development is done with these objectives. Terms such as agile methodologies, Scrum, Kanban have found a place in the vocabulary of company managers and IT departments. In this article, we shall try to explain the concepts these methodologies are based on and what advantages they provide to the company, without going into the specific characteristics of how a particular workplace puts them into practice.
Concepts
Agile methodologies, in their various implementations, have a series of common characteristics that are a part of their philosophy. Each one of them emphasises different aspects when defining their work structure. These characteristics are clearly reflected in what is known as the agile manifesto. The latter defines the values ruling a different way of understanding how software development companies build their products as well as their relationships, both internal (developers, managers, senior executives) and external (clients, users).
Manifesto for Agile Software Development
We are discovering better ways of developing software both based on our own experience and by helping others. Through this work we have learnt to value:
- Individuals and iterations over processes and tools
- Working software over extensive paperwork
- Collaboration with clients over contractual negotiation
- Responding to change over following a plan
Although we value the elements on the right, we value those on the left even more. We prioritise the elements on the left over those on the right, but this does not mean we don’t also value those on the right. For example, collaboration with clients is an essential characteristic, but this does not mean we don’t have to establish contractual client-provider relationships. Also, the manifesto is based on twelve principles that set down the main guidelines used by the various methodologies to develop their work structure. These principles are the following:
Principles of the Agile Manifesto
We follow these principles:
- Our number one priority is customer satisfaction by early and continuous delivery of software with value.
- We accept that requirements do change, even in the late stages of development. Agile processes take advantage of changes to provide clients with competitive advantages.
- We deliver working software frequently, from two weeks to two months, preferably in the shortest time possible.
- Business managers and developers work together routinely throughout the project.
- Projects are developed around motivated individuals. We have to give them the environment and the support they need, and trust them to do the job.
- The most efficient and effective way to communicate information to the development team and among its members is face-to-face conversations.
- Working software is the main measure of progress.
- Agile processes promote sustainable development. Promoters, developers and users must be capable of maintaining a steady pace indefinitely.
- Continuous attention to technical excellence and good design improves agility.
- Simplicity, or the art of maximising the amount of work not done, is essential.
- The best architectures, requirements and designs emerge from self-organised teams.
- At regular intervals, the team reflects on how to be more effective to continue adjusting and perfecting its performance.
If we look closely, we can see how various implementations of agile methodologies (Scrum, Kanban, Extreme Programming, Adaptive Software Development, Feature Driven Development, etc.) include each one of these principles as their own way of seeing software development. Although there are differences in the techniques and the procedures used to implement them. These principles have implications at different levels within the company and not only in the development teams. Some we can highlight are:
- At the organization level, business managers must work shoulder-to-shoulder with developers, thus improving communication.
- In order to get the best out of each team they must be given a high level of independence, and be capable of self-management.
- As for procedures, a continuous improvement process is established through regular meetings with the team where elements that can be improved are identified (retrospective meetings).
- In the area of project management, team predictability increases by promoting sustainable development over time, diminishing planning errors.
Benefits
There are two major differences from the client’s or the business user’s perspective compared to what is known as traditional methodologies: flexibility in the face of change that allows achieving competitive advantages and continuous delivery of value in the form of working software. These two characteristics are closely related, since continuous deliveries of working software help users learn about what has been developed so far (continuous learning), allowing them to detect new needs or changes based on what they have seen to date, so the final result meets their real needs. It also gives a more accurate measure of the actual project progress. Goodbye to tasks that are eternally 90% completed. Now we can frequently see something that really works, or even decide to put it into production and give it to users to start working without having to wait for a completely finished product. And this has a very direct advantage for the company: we clearly improve ROI. We don’t have to wait for everything to be finished to get results.
Conclusions
In summary we can say the main objective of agile methodologies is to maximize the value delivered to clients as quickly as possible. This is done based on the guidelines established in the agile manifesto and the twelve principles. They provide a different way of addressing software development by prioritising aspects such as collaboration, quality and the flexibility needed to react to changes during the life cycle of any project.