Early and Frequent feedback in Agile – Importance and Benefits

Why is Early and Frequent feedback important in Agile Development?

Early and Frequent feedback is one of the key advantages of Agile Software Development methodologies.

As Agile projects have short iterations, the working code is delivered in each iteration and showcased to the customer. The showcase gives an opportunity to the customer to provide early and continuous feedback.

This overcomes the major problem with traditional development models, like Waterfall Development Methodology, in which the customer was able to see the working product only at the tail end of SDLC (Software Development LifeCycle)

At the last phases of the project in the Waterfall approach, it is too late to incorporate the issues from customer feedback.

By getting frequent customer feedback as the project progresses in each iteration, Agile teams can include most new changes into the product development process, i.e. in future iterations.

When the customer provides feedback early it becomes easy for the development team to focus on the highest business value items first. Highest business value items or items with the highest risk are delivered first in order to reduce risks in the project.

Early feedback also helps to manage work within a team effectively as there is transparency within the whole team. For example, what is the work allocated in sprint and whats the progress in each sprint?

Some of the benefits of early and frequent feedback are:

  • Early feedback avoids requirement gaps, which can sometimes become more clear once the working prototype of software is showcased to the customer.
  • Requirement gaps detected on later phases of SDLC in traditional development model like “Waterfall Model” are very expensive to fix, early feedback avoids this situation in Agile Development Methodology
  • After each iteration of Agile Development, the customer is shown the working software built incrementally in each iteration, which helps them to see if the product actually functions the way they want it to work
  • Continuous integration in Agile Development helps in identifying issues early and then resolving them
  • The agile development team works out the consistent velocity and delivers the product with consistent pace until the end of the project cycle
  • As the customer is involved in the whole development process, the Agile team can clarify the queries anytime in case of doubts

Whole-Team Approach in Agile Development Methodology

What is Whole-Team Approach?

Whole-Team Approach in Agile Development advocates involving the people with right skillset into Agile Development project to ensure the successful delivery.

The Agile team should include members from the customer and other business stakeholders to determine the features of the product.

The whole-team approach suggests that quality is the responsibility of the whole Agile project team including Developers, Testers, Business Analysts, Business stakeholders and other people involved in the project.

Co-location is also important for the whole-team approach as it promotes daily communication and collaboration among the team.

Daily standup meeting is conducted in the whole-team approach to check the work progress and resolve any blockers for any of the team members.

Small teams of 3 to 9 members should be formed in order to achieve maximum benefits of the whole-team approach and ensure successful project delivery.

For any feature discussions or elaborations, testers, developers and business representatives are involved which ensures everyone understands the feature correctly.

The concept of involving testers, developers and business analysts is known as three Amigos or power of three.

What are the benefits of Whole-Team Approach?

  • As co-location is highly recommended in the whole team approach, it enhances daily collaboration and communication within the whole Agile project team
  • Since the whole-team approach involves members with a different skill set, it is very helpful for team members to leverage that skill set for project delivery
  • Quality is not only testing teams responsibility, but whole team is also responsible for the quality of product delivered
  • Testers, developers, and business representatives work together in the whole development process to ensure the desired product quality is achieved
  • Testers work closely with developers to leverage coding skills in their Automation Testing and also extend testing knowledge to other team members
  • All members of the team are involved in any product future discussions, analysis or estimation, which ensures everyone in the team is on the same page

The 12 Agile Manifesto Principles – Agile Software Development Principles

12 Agile Manifesto Principles explained in detail 

There are 12 principles behind Agile Manifesto values, let us go through these 12 Agile Manifesto principles and understand them one by one in detail. 

It is important to understand these 12 principles of Agile Software Development.

If you are planning to do ISTQB Agile tester exam and move to an Agile tester role, then having a good understanding of 12 Agile Manifesto principles is very important.

Satisfy customer through early and continuous delivery of software.

Customer satisfaction is the key in Agile Software Development.

In order to satisfy customer it is very important to get early feedback by delivering a working software early in the development lifecyle.

The software is build incrementally and regular feedback is obtained by customers by doing a software demonstration (AKA, showcase) after end of each sprint (2-4 weeks time boxed development cycle)

Welcome changing requirements, even late in development.

As changes are inevitable in software development process, Agile software development welcomes requirement changes during development.

Due to delivery of working software within few weeks cycles and continuous customer collaboration, the changes if required are welcomed and implemented in the next release cycle.

Frequent delivery of software

Agile development methodology “Scrum” follows the 2-4 weeks development cycle and delivers a working code after these cycles.

Due to frequent delivery of software in Scrum, it becomes very easy for stakeholders to have a quick look at working software and provide feedback.

Agile development advocates frequent delivery of software which could be few weeks to few months, preferable weeks.

Daily collaboration among business people and development team

Agile development advocates daily interaction and collaboration within the whole team.

The development team should be having daily conversation with business stakeholders to get feedback and details around any unclear requirements.

Build project around motivated individuals, provide support and trust team

It is the team members of development teams who deliver the actual software for customer and end users.

Agile teams should be built with skilled and motivated team members.

Once the team is formed they should be given decision-making power in order to come up with the best possible solutions.

Motivated individuals take ownership, communicate regularly with other team members, and share ideas that deliver quality products.

Face to face conversation and collaboration

Colocation is another principle of Agile Manifesto, when teams are colocated, face to face communication becomes very easy.

Collaboration within each team member on a regular basis is easily possible only if all the members are colocated at one place.

Working software is the primary measure of progress.

Delivering the working software is the primary measure of progress in Agile software development.

In SCRUM, the showcase is done at the end of every sprint (time boxed 2-4 weeks development cycle) to demonstrate the working software.

Agile processes promote sustainable development and team should be able to maintain a constant pace

Agile development promotes the sustainable development pace and teams deliver working software with this pace in each iteration.

Attention to technical excellence and good design enhances agility

As the Agile development comprise of motivated individuals, they come up with best skills and right solutions which can accomodate any changes if required.

This ensures that team can maintain the pace and sustain changes if required.

Simplicity – the art of maximizing the amount 
of work not done–is essential

Agile processes also advocate simplicity to any delivery. Develop just enough to get the job done in a simple way.

Agile team should be focusing on essential things which create value to the customer and not on distractors like unnecessary lengthy documentation, processes etc.

Self-organizing teams produce great products

Agile software development teams should be built by hiring skilled and motivated team members.

These team members should have decision-making power, take ownership, communicate regularly with other team members of the team.

Self motivated individuals collaborate and share ideas with other team members which in turn deliver good designs and quality products.

Retrospectives conducted regularly to analyse how to become more effective

Agile teams gather at regular intervals to brainstorm about improvements required to enhance the future delivery and quality.

They discuss about what worked well in past and what didn’t worked very well. They the action items are addressed to improve future deliverables.

Agile Manifesto for Software Development – Four values of Agile Manifesto

Agile Manifesto History

Agile Manifesto came up when the group of individuals were brainstorming over shortcomings of traditional development models.

There had been some evolution of lightweight development methods since 1990s in oder to overcome the limitations of traditional development methodologies.

In year 2001, a group of 17 individuals met to discuss lightweight development methods in order to overcome the limitations and issues with traditional software development models

This group agreed on common set of principles and values which later became “Agile Manifesto” for Agile Software Development.

The Agile Manifesto contains following four statements of values:

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

As per Agile Manifesto, the concepts to the right have value, however the concepts to the left have greater value.

Let us understand the Agile Manifesto concepts in detail.

Individuals and Interactions over processes and tools 

As per Agile Manifesto, it is argued that there are benefits of following the processes and tools, however, the core to any Agile Development is the team and communication within the team.

If there is heavy reliance on the processes and tools rather than the interaction and collaboartion within team members, it hampers the effectiveness and overall progress of project.

Agile Software Development teams can work more effectively through continuous collaboration rather than heavily relying on tools and processes to get the work done.

To summarise, Agile Development focuses more on following points:

  • Agile development is very people-centered.
  • People are the key to any development project as they build the software.
  • Contnuous communication and interaction within the team is key to get most value out of the whole team
  • More importance should be given to team collaboration
  • Least reliance on the process and tools makes the team more effective in getting blockers resolved and get things moving

Working Software over comprehensive documentation

From the end user or customers perspective, a working software is much more useful and valuable than excessive detailed documentation.

A working software gives a very good feel to the customer of how things will look like after being developed and it provides opportunity to customer to give early feedback to development team.

Some of the benefits and advantages of working software as compared to every detailed documentation are:

  • Working prototype is much easy to understand for customer and provide feedback.
  • As working software is available very early in development cycle, so it gives opportunity to customer to provide easy feedback.
  • Agile software development can confer notable time-to-market advantage, as working software, albeit with reduced functionality, is available much earlier in the development lifecycle.
  • Due to early software demonstration to customer, there is a huge scope to innovate and improve the solution if required, during the software development lifecycle with minimal cost impacts.

Customer collaboration over contract negotiation

Traditional development methodologies like Waterfall and V-Model didn’t gave flexibility for early customer feedback due to their sequential approach.

In traditional development methodologies the requirements were gathered first and then the contracts were formed based on those requirements.

Any changes required later were managed by change requests and negotiated over contracts again.

It is very difficult for customers to specify the requirements all at once before the development starts.

To overcome all the above challenges the Customer collaboration is more valuable than negotiating over contracts with customer.

  • Collaborating directly with customers during the whole development cycle helps to understand requirements correctly
  • Customers find it very difficult to specify all requirements at once
  • Frequent collaboration with customers is likely to bring more success to the project 

Responding to change over following a plan

Following a plan is important to any project, however, having flexibility in work practices in order to embrace change in projects is more important than strictly following the plan.

Change is unavoidable in software projects due to the environment in which business operates, legislation, technology changes and many other factors.

All these factors should be accommodated in the software development methodologies, so the team is ready to respond to changes if required. 

The advantages of fourth value of Agile manifesto is as follows:

  • Agile software development embraces changes throughout the development cycle due to early feedback and continuous customer collaboration
  • Agile development does follow plan, however it is flexible enough to accomodate changes if required
  • Due to continuous delivery in agile projects, the development team is able to respond to the changes quickly

Introduction to Agile Software Development – History and Agile Manifesto

What is Agile Software Development?

Agile Software Development is an approach to develop and deliver software products by following the set of methods and practices based on the values and 12 principles outlined in the Agile Manifesto.

In Agile software development the requirements and solutions unfold by the collaborative effort of whole team along with customer/end user.

The teams in Agile Development are self organising and cross functional, the team comprises of member with different functional expertise and working towards a common goal.

If you are a tester on an Agile project, you will work differently than the way you have been working in other traditional development methodologies.

In Agile project, you must understand the values and principles that underpin Agile projects.

As Agile advocates whole team approach, so testers are an integral part of whole team together with developers and business representatives.

The team members in an Agile project communicate with each other early and frequently. Early and frequent communication helps in identifying and removing defects early in the development lifecycle and improves product quality.

History of Agile Software Development

In 2001, a group of 17 individuals met to discuss lightweight development methods in order to overcome the limitations and issues with traditional software development models.

This group agreed on common set of principles and values which later became “Agile Manifesto” for Agile Software Development.

The Agile Manifesto contains four statements of values described below.

  • Individuals and interactions over processes and tools

    Agile advocates that competent individuals in the team and collaboration within that team is more important than processes and tools.

  • Working software over comprehensive documentation

    Good documentation is important in Agile development project however, working software is more important.

    Documentation produced in Agile project should be precise and concise, as the main purpose of Agile team is to create software.
  • Customer collaboration over contract negotiation

    Working closely with your customer is more important than negotiating all the requirements through contracts.

    Getting a clear picture of requirements is difficult until you collaborate with your customer frequently.

  • Responding to change over following a plan

    Following a plan is important but it should be flexible enough to accomodate the changes suggested by stakeholders if required.

As per Agile Manifesto the concepts on the left have more value as compared to concepts on the right.