ELI5: agile software development

Whether you are a developer, you’re looking to become one, or you work elsewhere in the tech scene, you will have heard of agile software development by now.

Agile is largely becoming a mainstream approach to developing software. But for those not in the know, it isn’t readily apparent what ‘agile software development’ is, or what it entails.

So, let’s demystify the term.

What is agile software development?

Agile software development is an approach to developing software that breaks the project down into small chunks.

In other words, an ‘agile’ team delivers work in fast, bite-sized increments.

It involves a few key steps:

  1. Breaking down a task into smaller tasks
  2. Ordering the small tasks by priority
  3. Completing the tasks during a predefined ‘sprint’ time.

How do you adopt an agile approach?

What exactly does an agile software development approach involve, though?

Well, let’s take an ‘agile’ approach, and break the key steps outlined above into smaller ones.

  1. Breaking down the task

An agile software development team will have specialised roles to facilitate the management of tasks. These include the product owner, scrum master, and even a team ‘batman’.

  • Product owner: the person that takes charge of the direction of the product.
  • Scrum master: the team’s facilitator — they act as the point person for questions and support in development.
  • Developers: the people writing the code.

Breaking down the planned functionality of the product tends to take the form of user stories. These outline the key functionalities that the product will have and why — which developers then use to inform their sprint efforts.

  1. Prioritisation

A key part of agile software development is prioritisation. (Most commonly achieved through product backlog refinement.) This is the act of working out what the most important stories/functionalities are, so developers know exactly what to work on during development time.

Working out what to prioritise, meanwhile, includes the collection and analysis of feedback, as well as strong communication. This is how the end-user and stakeholders can convey what future developments are the most wanted.

  1. Completion

“Completing” any given feature or set of stories in agile software development involves scrum meetings and sprints.

Scrum meetings are short daily meetings in which progress, problems, and plans are shared. Again, this is about facilitating clear understanding and communication between developers and concerned parties.

‘Sprint’ is the name given to the set time period spent focusing on developing the chosen functionality. Sprints typically last about two weeks. This means that agile software development can, in theory, produce workable functionality in this short of a time frame.

Why is agile a popular approach?

Knowing what agile software development is also means understanding why it’s quickly surpassing a waterfall approach to development in terms of popularity.

Agile development is all about adaptability.

It allows development teams to adapt to changing end-user needs, and to changing technological abilities. It allows a recent trend to be incorporated into a software product where appropriate.

Additionally, thanks to the short, smaller tasks, agile software development makes predictions about timing and resources easier. That is to say, the adaptability of agile makes planning easier. Long term planning is a huge challenge — it simply isn’t possible to plan for every change, every issue, and every need. Short-term plans, however, enable a clear image of the resource needs of a proposed idea.

The sprints in agile development provide clear, measurable progress to developers and users. Developers get a view of their progress every few weeks. Users get regular updates and improvements to the software.

Finally, there’s the communication and understanding that agile encourages. Agile, as an approach, requires clear communication and understanding. For it to work, every developer needs to know — in no uncertain terms — what the goals are, and how they’re to be achieved. With agile, developers are seamlessly kept in the loop with:

  • End-user and stakeholder wants
  • The progress made by other team members
  • The planned future of the product

Consumers of the software benefit too. Compared to a monolithic approach to development and deployment, agile software development is more collaborative with end users. It relies on customer feedback to inform future sprints, and the direction of the product as it evolves.

Agile software development: demystified

TL;DR: Agile software development is a method of development in which tasks are broken into manageable, deliverable steps.

All agile practices and procedures work to facilitate these small chunks of deliverable functionality.

And that’s the long and short of it. So, that’s one more tech term demystified.

Useful links

Batman and agile development

What is a product owner? An overview of the role and its responsibilities

What is a scrum master?

A four-point guide to product backlog refinement