What Is Agile Development?
Agile development is an approach in which software is developed collaboratively , with multidisciplinary teams that have a good level of autonomy in carrying out their work.
Many consider agile development as a set of methods, but this view is somewhat limited.
Because a method is a predefined set of practices, which can lead to a more rigid mindset, something that is more similar to the traditional model of software development.
Methods are important, yes. Fundamental, because they are already tested models that allow putting the concepts of agile development into practice more easily.
Before delving into these practices in depth, however, it’s more important to know the values and principles of agile development, which we’ll explain in more detail later.
Therefore, agile development is, above all, a mindset , which leads to certain structuring models for software creation projects .
It is a results-oriented approach, which enhances creativity, innovation and, above all, flexibility .
Fundamental characteristics in any company that wants to stand out in the Information Age , connectivity, globalization and Industry 4.0 .
When Did The Term Agile Development First Appear?
As stated earlier, agile development is, above all, a mindset, a set of concepts that are put into practice thanks to certain process management methodologies.
Several of these methodologies, however, already existed before the term agile development became popular.
Some examples are DSDM, Scrum, Crystal Clear, XP, UP and FDD, all developed throughout the 1990s .
Despite the existence of these methods, which led to quite satisfactory results, there was a primer on traditional practices that many technology companies still followed.
That’s when a group of developers who had already experienced the benefits of the agile model of managing processes discussed the subject in a workshop held in the city of Snowbird, in the US state of Utah.
From this occasion the Manifesto for Agile Software Development was born , also known simply as the Agile Manifesto .
On the manifesto website , you can consult what it says in Portuguese. It presents itself as follows:
“We are discovering better ways to develop software by doing it ourselves and helping others to do the same.”
The 17 programmers who signed it had experience with agile methodologies and observed that the successful projects they worked on had certain concepts in common.
From there, the term agile development began to be used to refer to this set of methodologies – but, before that, as we have highlighted before, to a new type of mentality in the conduct of projects.
Traditional Development Vs Agile Development
The traditional model of software development is carried out in a cascade fashion , that is, for a project phase to start, the previous phase must be completed.
In this approach, linear by definition, there is a very rigid division between roles, marked by the specialization of professionals who perform certain activities.
Size is the degree of linearity, rigidity and specialization, that most professionals involved in traditional development don’t need to think too much about what they are doing, just execute what has already been determined in the previous phases.
One of the problems with waterfall development is that, in the area of technology, the idea of a project with a beginning, middle and end and well-defined stages is a myth.
It is not that it never ends, but that it is normal for errors to occur , so that the work of a certain stage, already completed, will have to be repeated, making the waterfall model extremely inefficient.
After all, we are not talking about a normal industrial production, but a work of the knowledge economy , composed of activities that are less deterministic and repetitive and more creative and prone to errors.
In agile software development, it is already known in advance that all stages of the project will be executed more than once during the project.
Instead of cascading, processes are conducted in a spiral fashion , with small cycles in which the software is tested and approved.
As creating a software or system involves a lot of detail, it is necessary that the work in progress is put to the test all the time.
Because it is known that errors arise in any project (such as one of those many details being left out in a certain functionality), and realizing them in their last stage is extremely counterproductive.
Benefits Of Agile Development
From what we have just said, the errors found in agile development are corrected organically , within the natural course of the project.
Hence the word “agile”.
In traditional methodologies, rework generates a new cascade of steps, making the project much longer and more costly than it could be.
Therefore, the first benefit of agile software development is that it takes less time to perform and consumes less resources .
After all, it is a more flexible approach, another positive point of this model.
Flexibility makes it easier for a project to change direction, which can be motivated by numerous reasons other than mistakes.
In the testing stage of a given cycle, for example, it is possible to obtain insights and new information , something that was not available before.
Unexpected external events can also happen, related to the consumer public, competition, the launch of a disruptive technology , etc.
If there is flexibility in development, it is possible to adapt the work in progress to the new reality that presents itself.
Agile development also has the great advantage of improving relationships and communication between professionals.
After all, organizational silos (rivalry and lack of collaboration between sectors) are broken thanks to the formation of multidisciplinary teams.
In addition, these teams have greater autonomy, which increases their satisfaction, motivation, engagement and productivity.
Finally, the customer is more satisfied with the service, as agile development focuses all the time on meeting their needs.
4 Values Of Agile Development
The group of developers who signed the Agile Manifesto defined four values for the concept they created.
The idea is to value:
- Individuals and interactions more than processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change rather than following a plan
It’s not that the items on the right aren’t important, it’s good to be clear. And yes, those on the left should be priorities in relation to them.
In the case of the first sentence, it encourages the understanding that software development is a human activity.
Therefore, engagement and good communication between these people is more important than the tools they will use.
As for development documentation, it shouldn’t be left out, but getting the software up and running is always what matters most, as it’s what the customer is waiting for.
The third sentence values collaboration with the client in relation to negotiation, in order to create a relationship of partners, not adversaries. After all, everyone has the same goal.
Finally, the fourth value of agile development comes from recognizing that the software world is an environment with a lot of uncertainty.
Instead of drawing up plastered plans and cascading steps, therefore, it is necessary to prepare for the possibility of adapting the project at any time.
12 Principles Of Agile Development
In addition to the values we talked about above, the Agile Manifesto brings twelve principles that help to better understand what this approach is all about.
- Our highest priority is to satisfy the customer through continuous and early delivery of value-added software.
- Changes to requirements are welcome, even late in development. Agile processes take advantage of changes to gain competitive advantage for the customer.
- Deliver working software frequently, from a few weeks to a few months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective method of conveying information to and between a development team is through face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. Sponsors, developers and users must be able to maintain a steady pace indefinitely.
- Continuous attention to technical excellence and good design increases agility. You should analyze the need to implement the Design Sprint technique before or after development.
- Simplicity – the art of maximizing the amount of work not done – is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective and then refines and adjusts their behavior accordingly.
How Does Agile Development Work?
And in practice, how does the work of professionals who follow agile software development go?
There is no formula, a closed work model, a sequence of processes that the professional must follow.
The Agile Manifesto only brings values and principles, therefore, it is much more conceptual.
What happens is that there are several methodologies that help to execute these concepts – many of them emerged before the manifesto, as we explained before.
Frameworks are also created to make development more agile, uniting systems, components, tools and guides that can be used in different projects.
The specifics of the chosen project management model can vary greatly.
The important thing is not to fail to follow the values and principles of the Agile Manifesto, creating multidisciplinary teams, spiral cycles and giving autonomy to the work teams.
Next, we will talk about some of its main methodologies.
Scrum is an agile methodology in which projects are conducted in sprints , with work cycles usually monthly.
Scrum is marked by transparency, as all team members need to be aware of the processes, project status, and delivery requirements.
Another feature is the follow-up meetings .
At the beginning of a sprint, the Sprint Planning Meeting takes place to select and prioritize the activities that will be done.
There are also brief daily meetings to prioritize the work of the day ahead and the Sprint Review Meeting, to present the functionality implemented in the cycle.
The sprint ends with the Sprint Retrospective, a meeting from which the cycle ends and the planning of the next one begins.
Projects conducted with the scrum methodology have a product owner (who makes the main decisions, as he leads the product), a scrum master (a facilitator of scrum application) and the dev team, a team of developers that build the project.
Extreme Programming (XP)
The Extreme Programming methodology, which means extreme programming , is also a set of practices that make development projects more agile and flexible.
But in a complementary way to scrum.
The focus is on testing , tweaking, incrementing, and constant communication between team members.
Its five core values are: communication, simplicity, feedback , courage and respect.
The basic principles are quick feedback, assume simplicity, incremental changes, embrace change , and high-quality work.
In XP, all programmers are allowed to modify code, which is collectively owned. It should, however, be standardized so that it looks like the same person edited it.
Developers are encouraged to test, review, fix and simplify work all the time.
Kanban is a Japanese word meaning card.
This is a workflow management method in which cards (post-its) are moved around a board as work is being performed.
The board (kanban board) is divided into columns, each one representing a phase of a given activity.
This division can be, for example: backlog, work in progress, validation and completed.
Thus, there is a detailed visual control , from which everyone can easily know the progress of each detail of the project.
Interestingly, the Kanban method did not arise in the software development industry, but in Toyota , the company that created the lean manufacturing philosophy .
How To Put Agile Development Into Practice?
The first step in implementing agile development is to carefully read and reread the values and principles of the Agile Manifesto , until you are sure you understand the importance of each one.
Only then is it advisable to start with the understanding of process and project management methodologies, such as the three we talked about above.
The tip is to invest in team training , so that everyone understands the agile development work models.
And also, as far as possible, select professionals with experience in working with these methodologies.
Recognize among employees those who have good management and leadership skills to lead projects.
But never forget that self-management is important, that is, all developers need to be engaged with projects.
Thus, leaders will be there more to facilitate and show the way than to give orders.
A recipe that results in much more creativity and innovation .