An overview of Agile core concepts in software development

Tish Chungoora
4 min readDec 2, 2019

Introduction

If you come from a non-agile environment and want to understand the fundamental agile concepts, or a software engineer in the making with no prior exposure to agile ways of working, then you’ve landed at the right spot! Entering the world of agile software development will be a totally new thing and this article is about understanding the basic terminology so that you can hit the ground running when you land that first job in an agile enterprise. Also, if you do not have prior background in agile as software engineering newbie and currently in the process of interviewing at organisations that operate in an agile way, with the concepts presented here, you should be able to demonstrate you understand the fundamentals.

The Agile Manifesto

The Manifesto for Agile Software Development is a set agreed ideas on how to deliver value-adding software products, while being able to stay adaptable to change, e.g. changes in customer specifications, priority of requirements, etc. These ideas are depicted in the digram below. It’s important to note that while the items on the right hand side are of value, in an agile environment the items on the left hand side will hold even greater value.

Core agile values

Agile software development methodologies

There are four common agile methodologies: Scrum, Kanban, Exteme Programming (XP) and Dynamic Systems Development Method (DSDM). These methodologies provide the framework and ways of working for operating in an agile way. Scrum is by far the most commonly applied agile methodology, so in the next section of this article, we’ll cover its various steps in more detail.

Note that Kanban itself isn’t necessarily an iterative approach, however, it provides a workload management methodology allowing software development teams to work in an agile fashion. The screenshot below identifies a Trello Kanban board used by a development team of 3 individuals to build and deploy, within a one week timebox, a Minimum Viable Product (MVP) web app for displaying football statistics.

In Kanban, different swimlanes are used to organise work items. The swimlanes are named to identify specific ‘gates’ or stages during the development cycle. Work items are ordered in the swimlanes so that items that are of higher priority are positioned at the top of a swimlane. Work items can be colour-coded and can carry metadata for organisational purposes.

Example Trello Kanban board

Scrum in a nutshell

Scrum is a multi-step methodology as depicted in the presentation below. The work-in-progress product backlog is refined with the level of effort estimated for every item going into the sprint backlog. A product backlog item is known as a story, or more commonly referred to as ‘user story’ due to its slant on the user.

The sprint cycle is entered where active work is done by the development team and during every sprint, on a daily basis, we have a short scrum meeting held at the start of the day to discuss progress within the Scrum team. At the end of the sprint cycle, a potentially releasable product increment is built and demoed.

Scrum methodology

In order to manage the workload that comes with the sprint backlog, we can use a sprint board, which is very similar to a normal Kanban board but tied to a specific sprint cycle. Agile collaboration software like Atlassian Jira provide the tools required by teams to manage work within an agile environment where, for example, integration with version control software is provided.

Common product-related terms in agile software development

There are some frequently occurring terms that occur when working in an agile software development environment such as user story, acceptance criteria, etc. The model below provides some simple definitions and associations across these terms in order to help you build a mental picture of how they come together. This simple reference model draws from three lifecycles commonly encountered in IT namely the requirement lifecycle, development lifecycle and project lifecycle.

A reference model of common product terms used in agile software development

--

--