Agile Methodology

6 minute read

Introduction

Agile methodology is a type of project management process, mainly used for software development, where demands and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customers.

The software industry is a highly competitive market due to the fact that software is something that can be continuously upgraded. This means that developers need to constantly improve and innovate their products to keep on top of the game — and the linear, sequential approach of the Waterfall method just wasn’t cutting it.

Values

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

Agile Project Management

Agile project management is a methodology that is commonly used to deliver complex projects due to its adaptiveness. It emphasizes collaboration, flexibility, continuous improvement, and high quality results. It aims to be clear and measurable by using six main “deliverables” to track progress and create the product.

The Deliverables

  1. Product vision statement: A summary that articulates the goals for the product.
  2. Product roadmap: The high-level view of the requirements needed to achieve the product vision.
  3. Product backlog: Ordered by priority, this is the full list of what is needed to be done to complete your project.
  4. Release plan: A timetable for the release of a working product.
  5. Sprint backlog: The user stories (requirements), goals, and tasks linked to the current sprint.
  6. Increment: The working product functionality that is presented to the stakeholders at the end of the sprint, and could potentially be given to the customer.

Frameworks

There are various frameworks within Agile project management that can be used to develop and deliver a product or service. While they each have their own set of characteristics and terminology, they share common principles and practices.

Two of the most popular ones that support the Agile development life cycle are Scrum and Kanban.

Scrum

Created by Jeff Sutherland and Ken Schwaber, Scrum is comprised of five values: commitment, courage, focus, openness, and respect. Its goal is to develop, deliver, and sustain complex products through collaboration, accountability, and iterative progress.

What distinguishes Scrum from other Agile methodologies are the roles, events, and artifacts that it is made up of, with which it uses to operate. Here’s what they are:

Scrum team roles

  • Product owner: Product expert who represents the stakeholders, and is the voice of the customer.
  • Development team: Group of professionals who deliver the product (developers, programmers, designers).
  • Scrum master: Organized servant-leader who ensures the understanding and execution of Scrum is followed.

Scrum events

  • Sprint: Iterative time boxes where a goal is accomplished. Time frame does not exceed one calendar month and are consistent throughout the development process.
  • Sprint planning: Where the entire Scrum team get together — at the beginning of every Sprint — to plan the upcoming sprint.
  • Daily Scrum: 15 minute time boxed meeting held at the same time, every day of the Sprint, where the previous day’s achievements are discussed, as well as the expectations for the following one.
  • Sprint review: An informal meeting held at the end of every Sprint where the Scrum team present their Increment to the stakeholders, and discuss feedback.
  • Sprint retrospective: A meeting where the Scrum team reflect on the proceedings of the previous Sprint and establish improvements for the next Sprint.

Scrum Artifacts

  • Product backlog: Managed by the Product Owner, it’s where all the requirements needed for a viable product are listed in order of priority. Includes features, functions, requirements, enhancements, and fixes that authorize any changes to be made to the product in future releases.
  • Sprint backlog: A list of the tasks and requirements that need to be accomplished during the next Sprint. Sometimes accompanied by a Scrum task board, which is used to visualize the progress of the tasks in the current Sprint, and any changes that are made in a ‘To Do, Doing, and Done’ format.

Kanban

Kanban is a highly visual method popularly used within Agile project management. It paints a picture of the workflow process, with an aim to identify any bottlenecks early on in the process, so that a higher quality product or service is delivered.

A concept that was developed in the production line of Toyota factories in the 1940s, Kanban achieves efficiency through visual cues to signal certain stages of the development process. The said cues are a Kanban board, Kanban cards, and sometimes even Kanban swimlanes.

  • Kanban board: A visual management tool used to visualize the development process. It can be either physical (a whiteboard, sticky notes, and markers) or virtual (like Zenkit’s online project management tool), and can be used for personal productivity, as well as professional use.
  • Kanban cards: Cards that depict a work item/task in the work process. Used to communicate progress with your team, it represents information such as status, cycle time, and impending deadlines.
  • Kanban swimlanes: A visual element on the board that allows you to further distinguish tasks/items by categorizing them. Flowing horizontally, it offers distinction and provides a better overview of the workflow.

Best Practices

It’s always handy to know how to do things best. Here are seven things you and your team should be doing when implementing any type of Agile methodology:

Customer collaboration

One of the core values stated in the Agile Manifesto, customer collaboration is a vital part of Agile methodology. Through consistent communication with the development team, the customer should always be aware of the progress, and the combined effort will result in a higher quality product.

User Stories

A tool used to explain a software feature from an end-user perspective, the purpose of a User Story is to create a simplified description of a requirement. It helps to picture the type of user of the product, what they want, and the reason(s) for it. A common User Story format that is used is:

As a [role], I want [feature], because [reason].

Continuous Integration

Continuous Integration (CI) involves keeping the code up to date by producing a clean build of the system few times per day. With a rule stating that programmers never leave anything unintegrated at the end of the day, it enables the delivery of a product version suitable for release at any moment. What CI seeks to do is to minimize the time and effort required by each integration.

Automated tests

Performing automated tests keeps the team informed about which of the code changes are acceptable, and whether or not a functionality is working as planned. Regression tests are run automatically before work starts.

Pair programming

Programming in pairs aims to enhance better designs, less bugs, and a sharing of knowledge across the development team. One of the least-embraced Agile programmer practices, it involves one programmer ‘driving’ (operating the keyboard), while the other ‘navigates’ (watches, learns, provides feedback). The roles can be rotated.

Test-driven development (TDD)

TDD aims to foster simple designs and inspire confidence. Instead of a process where software is added that is not proven to meet requirements, it is a method based on the repetition of a very short development cycle where requirements are turned into test cases, and then the software is improved to pass the new tests.

Burndown charts

A burndown chart is a graphical representation of the work that is left to do versus the time you have to do it. Using one as part of your Agile project management plan enables you to forecast when all the work will be completed. A detailed burndown chart will also include the amount of User Stories per unit of time.