There are different software development methodologies including Waterfall and Agile as two of the most popular ones. In this blog post, we will focus on understanding one of the most applied software development methodologies today: Agile.
Let’s start from the beginning: what is a software development methodology?
A software development methodology is a framework used to structure, plan, and follow-up on the process of developing a specific project a team or set of teams are working on.
Traditionally, teams would generally work with a waterfall structure.
Imagine building a car
The waterfall methodology goes a bit like this (in theory). As a project manager, it is assumed the client knows exactly what (s)he wants and that development plans never change. So the designer(s) design(s) the car, show it to the client who agrees on the design for the whole car, then the teams spend months on building the whole car in its totality. After a few months, the car is finished and everyone is happy. Right?
Well, not exactly. In practice, when the car has been finally finished, the client has a new management and new priorities. So when it is delivered, they are not exactly happy with how it was designed in the first place. After much negotiating, they decide to use it anyway. They start driving it around in the city. Very quickly, they realise that having a car in a city like Brussels or Amsterdam is not exactly the best way to get around. Next to that, they also don’t have a way to navigate (no GPS was included in the first plans).
This would happen with software development all the time. A client would ask for a number of features, which a development team worked on for a long time. Then, when the software was finally released and the client started using it, they would realise that a lot of features that were built were obsolete, and a lot of other features that were not built were actually necessary.
That is where the concepts of Agile, Scrum, Kanban and Lean come in.
They are all based on iterations and incremental product development.
In contrast to the Waterfall methodology, Agile assumes that clients do not exactly know what they want from a piece of software.
The main idea of Agile is that you work on specific problems that you try to solve in an iterative way.
Take the car example again
Instead of saying ‘I need a car with a V8 engine, at least 4 seats and leather seats,’ the client will say: ‘I need a faster way of getting from place A to B and I need to transfer at least 4 people at the same time in a comfortable way.’
Then the development team would prioritise these problems:
- Faster from A to B
- At least 4 people at the same time
- In a comfortable way
Then it would start working on the first problem: “how can we solve this quickly so the client can already start using (and thus testing) a first transportation method?”
Then the team would start brainstorming about possible solutions. Now maybe an easy way to get from A to B in Brussels or Amsterdam is to take the bike. So the team develops a simple bike so the client can already start using it.
Now while using this first version, the client notices a couple of things:
- The bike format is actually quite handy in the city
- They still need a way to transport 4 people in a comfortable way
- They become really tired of having to peddle
The developers take this feedback into account to improve the next version. To make a long story short. At the end of the who development cycle, the developers probably won’t have built the exact car that the client had in mind from the beginning. But in the ideal scenario, they have built something even better: something that solves the client’s problems. In this case, it might be that they ended up with 4 electric bikes with heated seats.
Agile revolves around the idea of this iterative development and continuous improvement. Client’s needs change, and a lot of times clients and end users only realise what they really need when they are using the solution.
There are basically two ways to implement Agile: Kanban and Scrum. In our next blog post, we will explain these terms in further depth. So stick around!
This blogpost is part of Texidi’s mission to make tech understandable for non-tech profiles. Check out other blogposts explaining tech terms in an easy and fun way.
Check our website to learn more about Texidi.