What are Agile methodologies?
The agile methodologies are a series of techniques for the management of projects that were born, some say that as opposed others say that, as a complement, I lean more to the second opinion, as a complement to the classical methods of management. Although they emerged in the field of software development, they have also been taken for the management of other types of projects.
“The agile approach has the advantage of reducing the cost of change through the entire development process”
All that methodology that is considered as agile methodology, must comply with the agile manifesto that is not more than a series of principles that are grouped into 4 values:
Individuals and their interaction, over processes and tools.
The software that works, in front of the exhaustive documentation.
The collaboration with the client, above contractual negotiation.
The response to change, over the follow-up of a plan.
The agile development of software is a paradigm of development methodologies based on agile processes. The agile processes of software development, previously known as light methodologies, try to avoid the cumbersome and bureaucratic process of traditional methodologies focusing on people and results.
The agile process uses a value-based approach to build software, collaborating with the customer and continuously incorporating changes.
It is a conceptual framework of software engineering that promotes iterations in development throughout the life cycle of the project. There are many agile development methods; Most minimize risks by developing software in short periods of time.
The main agile methodologies
One of the main focuses of application of the agile methodologies are the technological projects. In each project we can adopt one or several methodologies depending on the characteristics of the project itself and the team.
Among the most used agile methodologies are:
SCRUM. It is a framework that provides us with a series of tools and roles to, in an iterative way, see the progress and results of a project.
KANBAN. It is based on a very simple idea. This is that the work in progress (Work In Progress, WIP) should be limited and we should only start with something new when a previous work block has been delivered or has passed to another function later in the chain.
XP: It is an agile methodology focused on enhancing interpersonal relationships as a key to success in software development, promoting teamwork, caring for the learning of developers and fostering a good work climate.
The agile methodology can be applied to a software process as long as: The process allows the team to adapt tasks and make them more efficient. Planning must understand the fluidity of the agile approach. The client receives incremental functional software as quickly as possible for the type of product and operating environment.
The agile methodology takes into account the following assumptions:
- It is difficult to predict in advance which requirements will persist and which will change.
- For many types of software design and construction are intertwined.
- The phases of analysis, design, construction and testing are not as predictable as you want.
A process is adaptable when it is possible to quickly change the project and the technical conditions besides that an agile process must be adaptable, which helps to deal with unpredictability. The adaptability must be scalable. It is directed by the customer feedback. Software increments must be released in short periods of time to try to keep pace with unpredictability.
Principles to achieve agility
First, the customer must be satisfied by the early and continuous delivery of useful software and then accept the changes of requirements, even in advanced stages of development, then functional software must be delivered periodically. Executives and developers must work together on a daily basis to provide individuals with the environment and the means to be motivated, and face-to-face conversations are the most effective means of transmitting information.
Functional software is the main measure of progress, sponsors, developers and users must maintain a constant rhythm indefinitely in addition to the continuous attention to technical excellence and good design increases agility. Keeping it simple always. The best architectures, designs and requirements come from self-organized teams, the team regularly reflects on how to be more effective, which refines and adjusts their behavior.
The traditional methodologies of software engineering do not take into account the weaknesses of programmers who develop software. Traditional methodologies impose discipline on people with weaknesses and weaknesses. Methodologies with a lot of discipline are fragile. The most tolerant methodologies are easier to adopt, but they can be less productive. It is necessary to do trade-off.