What are agile methodologies?
The first we heard about Agile development (or the term Agile) was back in 2001, when a community of developers that was tired of using development methods considered to be “heavy” – namely, the waterfall model – decided to set out a manifesto: The Agile Manifesto. This very important document had so much impact that it has worked as a bible for Agile development even until today, laying out all principles and good practices.
Agile methodologies argue that, above all, we should seek client satisfaction through continuous deliveries of value-adding software, by keeping up constant communication with the client and, also, by focusing on communication between team members. Contrary to previous practices, the Agile methodology is not characterised by the complete definition of a product – a complete analysis or the definition of all categories/requirements – but by a dynamic interaction that allows constant delivery.
According to the Agile Manifesto and some of its 12 principles:
- Customer satisfaction is the priority, demonstrated through continuous deliveries and added value.
- Changes to the requirements should be accepted, even if at a late stage of the development: “Agile processes harness change for the customer’s competitive advantage”, as is stated in the Manifesto.
- The customer and the development team should work together on a daily basis.
- It is necessary to provide a good environment and good support to development teams. Only in this way it is possible to keep them motivated.
- Agile processes promote sustainable development because of their constant rhythm and technical excellence, which improves productivity.
- Retrospective moments inside a team are essential, allowing it to make the necessary adjustments and promote efficiency.
Basically, Agile development follows an incremental model, which develops collaboration within the team and continuous planning, as well as everlasting evolution and learning. Agile methodologies should respect the software development cycle – planning, execution and final delivery – therefore allowing software to be developed in stages; this makes it easier to identify and resolve bugs.
The main advantage of using Agile methodologies is not only the fast delivery of software, but also the constant delivery of value to the customer, since deliveries are incremental.
There are countless methodologies that follow this Agile mindset. In this blog post, we highlight the five main Agile methodologies and their advantages and disadvantages in the software development universe.
Main Agile methodologies:
1. Scrum
Scrum is, undoubtedly, the most used of the many frameworks of the Agile methodology. Scrum is characterised by cycles or stages of development, known as sprints, and by the maximisation of development time for a software product. It is usually used in the management of development projects for software products, but it can also be used in a business-related context.
Every day there are small 15-minute meetings, the daily scrum, that take the role of synchronising activities and finding the best way to plan the workday.
Advantages: | Disadvantages: |
|
|
2. Kanban
The word Kanban is of Japanese origin and its meaning is linked to a time concept, “just-in-time”. In practice, the Kanban method exists in a board or table (Kanban board), divided into columns, that shows every flow of the software production. As the development evolves, the information contained in the table changes, and when a new task comes into play, a new “card” is created.
The Kanban method requires communication and transparency so that the members of a team can know exactly at what stage the development is and can see the status of the project at any time.
Advantages: | Disadvantages: |
|
|
3. Extreme Programming (XP)
This is a typical Agile Development framework, developed by Kent Beck, and can be adapted to development companies of various dimensions. It is a methodology that emphasises values such as Communication, Simplicity, Feedback, Courage and Respect and prioritises customer satisfaction over everything else. This methodology offers trust to the developers by motivating them to accept changes in the customer’s requirements, even if they arrive in a later stage of the development cycle.
Teamwork is extremely important in XP, since when there is a problem, it is solved by the whole team of managers, developers or customers. They are all essential pieces of the same puzzle, hence creating a fertile environment for high productivity and efficiency in a team. In Extreme Programming, software is tested from day one, collecting feedback to improve development.
Advantages: | Disadvantages: |
|
|
4. Lean Development
Lean Development is a methodology that comes directly from Lean Manufacturing, created by Toyota, and applied to software development. This method offers a conceptual framework and follows values, principles and good development practices that can be applied to an Agile development approach.
There are seven essential principles: Deleting the things that do not matter (everything that does not bring effective value to the customer’s project is deleted); Quality development (creating quality in development requires discipline and control of the quantity of residuals created); Creating knowledge (the team is motivated to document the whole infrastructure to later retain that value); Differing commitments (this point encourages the team not to focus too much on planning and anticipating ideas without having a prior and complete understanding of the requirements of the business); Fast delivery (deliver value to the customer as soon as possible); Respecting the team (communicating and managing conflicts are two essential points); Optimise the whole (the development sequence has to be perfected enough to be able to delete errors in the code, in order to create a flow of true value).
Advantages: | Disadvantages: |
|
|
5. Crystal
This is a family of Agile methodologies which includes variants such as Crystal Clear (up to an 8-person team), Crystal Yellow (up to a 10 to 20-person team), Crystal Orange (up to a 20 to 50-person team) and Crystal Red (for big teams with 50 to 1000 people). Crystal focuses on principles such as People, Interactions, Community, Skills, Talent and Communication, aiming to deliver the best possible software development process. The core of this development process is interaction and symbiosis, which have to exist between the people allocated to the projects and processes in order to bring efficiency to the development.
According to its founder, Alistair Cockburn, “Crystal is a family of software development methodologies, which works with the power invested by people, and is extremely light and stretch-to-fit”. Basically, Cockburn believes that the talent and the way team members interact brings benefits for the whole project.
Advantages: | Disadvantages: |
|
|
At Xpand IT, software development is personalised, focusing on results and customer satisfaction, stage by stage. The whole development is governed by Agile principles. Therefore, in order to respect the development cycle, achieve the desired results, predict possible errors, maximise productivity and develop safely, while still keeping team members motivated, we created our own methodology: XPAgile (a mix of Agile frameworks – Scrum and Extreme Programming – that ensures the best results within the given deadlines).
For more information on the development methodology of Xpand IT, click here.