When we talk about Agile Methodologies we refer to the whole set of actions that are beneficial for the company. It involves implementing methods that facilitate team management in evolving environments and that help improve business quality and action times, strengthen worker commitment and increase productivity.
There are several ways to work agilely, but all have the same objective: to work flexibly, autonomously and effectively reducing costs and increasing their productivity.
The function of agile methodologies is to find ways of working that fit the conditions of the projects, give more flexibility to the processes and adapt them to the specific needs of each work team.
The methodologies used in the management of Agile projects (such as Scrum, XP or Kanban) follow a model of continuous improvement, flexible and with clear objectives that seek good quality results. All these methodologies were born thanks to the development of software, which facilitates work processes. For example, tasks as simple as communicating to deliver a job were not years ago, with traditional work models.
There are quite a few agile methodologies; all share similar philosophies, characteristics and practices. However, after being implemented, each methodology has its own practices, terminology and tactics. Some of the main agile software development methodologies are:
Scrum is a management framework with great possibilities of control and management of iterations and increases in all types of projects. Scrum tactics are lightweight and can be combined with other agile methodologies. Its popularity has grown within the agile development community, since they are simple and have a proven productivity.
Lean and Kanban
Lean Software Development
The development of lean software is an iterative methodology originally developed by Mary and Tom Poppendieck. Many of the principles and practices of this methodology come from the trend of lean initiatives and were used for the first time in large companies, such as Toyota. This value-based method focuses on providing the client with an efficient “Value Stream” mechanism that defines the value of the project.
The essential principles of this methodology are:
- Do not waste
- Expand learning
- Make decisions as late as possible
- Deliver the results as quickly as possible
- Empower the team
- Achieve integrity
- Visualize the entire Project
By choosing only the features that have real value for the system, prioritizing them and delivering them in small batches, the waste is eliminated. In contrast, the lean methodology puts the emphasis on speed and efficiency; depending on the feedback between the clients and the programmers. It focuses on the idea that customer requests “pull” the product. The focus is more on the ability of people or small teams to make decisions more quickly and efficiently, rather than a hierarchical method. This methodology focuses on the efficiency of your team, ensuring that everyone is always as productive as they can be.
The Kanban Method
Organizations use the Kanban method to manage the creation of the project while putting the emphasis on continuous delivery and not overloading the development team. Like the Scrum method, Kanban processes are designed to help teams work together more efficiently.
It has three principles:
- Visualize what you do: see all the elements within the context of each one – more informative
- Limit the amount of work in progress (WIP): it balances workflow, so teams are not forced to do a lot of work
- Improve the workflow: as soon as a task is finished, start with the next bigger job on the backlog
The Kanban method promotes continuous collaboration between the client and the team. Incentives continuous learning and improvements to give the team the best possible workflow.
Extreme Programming (XP)
The Extreme Programming (XP) method was originally described by Kent Beck. It is one of the most popular and controversial agile methodologies. XP is a method of a lot of discipline that consists of continuously delivering high quality software quickly. The client is actively involved with the team to carry out planning, testing and giving feedback, getting to deliver functional software frequently. The software should be delivered at intervals, every three weeks.
He has 12 support practices:
- The game of planning
- Small deliveries
- Customer acceptance test
- Simple design
- Programming in pairs
- Development based on testing
- Continuous integration
- Collective ownership of the code
- Programming standards
- Sustainable pace
The Crystal methodology is one of the least heavy and most adaptable in the world of software development. It is composed of several agile processes, which include Clear, Crystal Yellow, Crystal Orange, and other methods. There are many factors that drive these processes, including: the size of the team and the system, and the priorities of the project.
Crystal’s family focuses on the fact that each project has unique characteristics, therefore, policies and practices have to adapt to these characteristics.
The Crystal method has several fundamental principles, including:
- Frequent adjustments
- Improve processes
This agile process, like other methodologies, promotes the early and frequent delivery of functional software. Encourages adaptation and user involvement, eliminating distractions and bureaucracy.
Method of Development of Dynamic Systems
The Dynamic Systems Development Method (DSDM) was created in 1994 to provide a standard framework for project delivery, and was then called Rapid Application Development. Although it was very popular in the 90s, the DRA model developed in an unstructured way.
Since its inception, the DSDM has evolved and matured; now it provides a basis for the planning, management, execution and scaling of the agile process and the iterative projects.
The DSDM method has six fundamental principles:
- Involving the customer is the key
- Empowered teams
- Frequent delivery of products
- Integrated testing
- Cooperation between all parties
The DSDM uses a “commercial purpose” approach to delivery and acceptance criteria. It focuses on the formula: launching 80% of the system in 20% of the time.
Development Based on Functionalities
Jeff De Luca, with the collaborators A.m. Rajashima, Lim Bak Wee, Paul Szego, Jon Kern and Stehen Palmer developed the Functional Based Development method. It is an iterative process that begins by establishing the shape of the agile model. The iterations of the “design based on functionalities, build based on functionalities” last two weeks. The functionalities like the customers because they are small and useful.
The design and development is based on these eight practices:
- Modeling domain objects
- Development of functionalities
- Property of classes and components
- Functional Teams
- Configuration management
- Regular builds
- Progress and results report
Agile management is a fascinating and exciting method of software development. By integrating product developers and customers into the planning and implementation processes, the result is a more rewarding experience for everyone.
When Agile programming is done correctly, organizations can continually find ways to increase value for their customers. It gives more meaning to those who are working on the project and creates a more positive experience for the client, producing greater benefits for the company.