Agile Methodologies

Agile methodologies

The key benefit of agile approaches to software development is being able to respond to changing customer requirements and feedback from user testing. It also means that you can roll out a system that meets the basic requirements and then refine it incrementally over time.

The most well-known agile methodology is Scrum, but other systems exist, including Kanban, Smart/ADP, Scrum-ban, and Agile Unified Process. In this article, I will compare the different methodologies.

Agile is a method of managing projects devised by a group of 17 software developers in 2001, although similar systems had been proposed as far back as 1957, and many iterative methodologies were in use in the 1990s. Agile allows for tight feedback cycles, continuous improvement, and changes of direction. It is an umbrella term for a number of different methodologies which inspired it.

The Agile Manifesto proposes the following:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the
right, we value the items on the left more.

A typical agile development cycle looks like this:

The agile development cycle. During a series of sprints, developers create features for the product, and testers test the features. Items from the backlog are added to the next sprint during the planning meeting.

The backlog is a list of features which are needed for the system. The product owner creates a list of desired features and prioritizes them. The developers then agree on an amount of work they can get done during a sprint, and they will develop the features during the sprint. At the end of the sprint, the team will hold a retrospective to review what went well, and what could be improved.

Estimation is hard

It is difficult to predict how long a feature will take to develop, so a variety of estimation systems have been devised. The one that is most popular with developers is the one based on the Fibonacci sequence, which measures the amount of effort required to complete the task, rather than how many days it will take.

Agile systems

Scrum

Scrum is an iterative methodology using sprints, planning meetings, estimation,

Key features

  • Estimation meetings, retrospectives
  • Scrum board, sprints
  • User stories

Advantages 

  • Constant visibility of the team’s progress
  • Any member of the team can pick up any task

Disadvantages

  • Amount of time spent on planning, estimation and retrospectives
  • It does not account for varied roles in the team as it requires “generalising specialists”
  • Estimation is hard

Kanban

Kanban is a system devised for continuous processes like support or manufacturing, but it could also be used for continuous development. It does not use sprints.

Key features

  • Kanban board
  • Pipelines 
  • Pull from customer
  • Just in time methodology

Advantages 

  • Constant flow of work
  • Pull rather than push
  • No estimation or planning needed

Disadvantages

  • Rigidity of roles and pipelines
  • Bottlenecks in the system
  • Each channel in the Kanban board has to be owned

Scrum-Ban

Key features

  • Hybrid of Scrum and Kanban
  • provides the development team with the best thing to work on next

Advantages 

  • No estimation required
  • Combines the best features of Scrum and Kanban

Disadvantages

  • Not very widely used
  • Poorly documented

The most widely-used agile methodology is Scrum, but people often end up modifying it to be more like Kanban. For example, a developer may finishing writing code for a feature within the sprint, but then it has to be reviewed by other developers and tested by a QA tester, and the developer may end up modifying it. As a result, most teams end up moving unfinished work to the next sprint.

Another modification that a lot of people make is adding a “Ready for development” bucket, which is similar to the “ready” column on a Scrum-Ban board.

Whichever system you end up using, it is important to remember that the goal of a system is to make development easier and ship your code faster, not to achieve the perfect implementation of the methodology.

Enjoyed this post? Please share

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Blog Homepage

Subscribe to our newsletter

More posts

Tag cloud

2SLGBTQIA accessibility action adaptability Agile artists catering content management system content writing cosmetics CSS DEI design disability pride month diversity editing roles equity formatting gender inclusion Indigenous Indigenous-owned businesses Indigenous History Month internationalization JEDI jewel justice LGBTQ localization make-up marketing neurodivergent pebble pebbling penguins post scheduling Pride Scrum sexual orientation TRC calls to action UI usability user experience user interface design UX