Agile software development: Principles and practices

Date

February 2nd, 2022

Category

Written by

Vesta Software Group

No comments

Agile software development has taken the software industry by storm since it was introduced in the early 2000s. All development teams want to be agile, but what does it really mean and how do you achieve it?

What is agile software development?

Agile practices were introduced by a group of 14 leading figures in the software industry to reflect their experiences of what approaches do and do not work in the world of software development.

They refer to methodologies that are centered around the idea of iterative software development, describing approaches that keep the process lean by breaking it into smaller, more consumable increments. Teams employ consistent evaluation of requirements, plans, learning and results to encourage flexible responses to change.

How is it different to the “waterfall” approach?

Alongside agile, there is a second, more traditional, approach to software development known as the waterfall methodology. This approach is highly sequential and involves a set line of phases that need to be completed one by one.

Some of the distinct differences between agile and waterfall include:

  • Waterfall typically values planning ahead, while agile values adaptability and collaboration
  • Waterfall focuses on successful project delivery, agile focuses on customer satisfaction
  • Testing comes after the build phase in a waterfall project but is performed concurrently with agile
  • Waterfall divides a project into phases, agile separates it into sprints
  • Requirements are prepared at the beginning of a waterfall project but are reviewed continuously in agile

Why choose agile?

Easily and quickly adapt to change

Agile software development acknowledges that customer needs will change and that teams must be able to adapt. Items or projects can be added to the backlog and allotted to an upcoming sprint based on priority and business need.

Higher quality products

By assigning smaller subsets of features to each sprint, developers have more time to perfect those items before releasing and moving onto the next. Furthermore, agile’s reliance on regular testing means issues can be identified and addressed swiftly, which results in a fully tested and working product.

Greater customer satisfaction

Keeping the customer involved throughout the decision-making process and making changes according to their feedback means you can deliver value and ensure the final product meets their requirements.

More control

Because teams work together to determine what goes into each sprint, there is greater transparency with everyone on the same page about what needs to be delivered and when.

Increased flexibility

In other methodologies, changes can be time-consuming and costly. In comparison, agile teams work in smaller bursts that are manageable and adaptable enough to allow them to implement changes at short notice.

Improved team morale

Agile teams are self-organised and self-managing and, as such, have increased autonomy and authority over their decisions. On top of this, the cross-functional natural of the teams means that members learn new skills, boost their knowledge and ultimately grow in their roles.

Agile frameworks

Since the publication of the Agile Manifesto, a number of frameworks have emerged, including:

  • Scrum
  • Extreme Programming (XP)
  • Kanban
  • Lean

Each focuses on the common core principles of frequent iteration, continuous learning and high quality, but differ in processes and how results are achieved.

Scrum and XP are typically favoured by software development teams, but many agile teams choose to combine practices from a few different frameworks and add in elements that are unique to themselves.

Scrum

Scrum is perhaps the most popular agile framework and puts emphasis on cross-functional teams working together to reach a common goal. Teams are expected to “address adaptive problems while productively and creatively delivering products of the highest value”.

One of the most recognisable elements of scrum is the break down of development phases into set periods of time, called sprints, which typically last between two and four weeks each.

XP

XP is designed to improve software responsiveness in response to changing customer requirements. It promotes teamwork, communication, regular feedback and continuous testing to help deliver high quality software at frequent intervals.

Kanban

Kanban is a visual workflow method with no pre-defined phase durations. It uses physical or digital boards to represent a team’s processes; tasks are laid out to provide shared visibility, which helps teams work together more effectively and operate with greater agility.

Lean

Originating from the Toyota Production System; which revolutionised the manufacture of physical goods, lean is both a methodology and a mindset that can be applied to software development. It puts emphasis on continuous improvement, respect for people and eliminating waste.

No two teams should have identical agile practices. Instead, they should be unique to the teams’ needs and their culture. The key to getting it right is embracing a mindset of continuous improvement and open communication. Keep the practices that work and set aside the ones that don’t.

To find out how Vesta supports our family of software companies, and how we could do the same for you, get in touch.