Photo by Zan on Unsplash

HOW TO MITIGATE WASTED TIME AND REWORK IN SOFTWARE DEVELOPMENT:
ATDD IN ACTION

Andrea Lorenzo
eDreams ODIGEO
Published in
5 min readNov 7, 2023

--

In the fast-paced world of software development, wasted time and rework are two of the most dreaded challenges that can affect project timelines and increase frustration in the development team.

Can you picture going to a restaurant in Japan, being allergic to certain foods, trying to explain it, and thinking they get it, but in the end, they bring you something you can’t eat?

It’s frustrating, right? It’s no one’s fault, it’s simply a problem of understanding.

Sometimes this happens in software development, in many cases, we think that everything has been understood until we realize we weren’t talking about the same thing generating frustration, rework, waste of time and money.

And what can we do? We are humans, we make mistakes and that’s normal, but we can use certain tools to help us mitigate misunderstandings, promote better communication and define a contract between all parties involved. This is where Agile methodologies have come to the rescue, and among them, Acceptance Test-Driven Development (ATDD) is a potential solution.

ATDD helps teams align with stakeholder expectations and try to ensure that software is done right the first time. In this article, I want to explain to you what ATDD is and how it can help minimize time wastage and extra work in software development.

Understanding Acceptance Test-Driven Development (ATDD)

ATDD is a collaborative approach to software development that brings developers, testers, and business stakeholders together to define and validate software requirements. It’s closely related to Test-Driven Development (TDD) and Behavior-Driven Development (BDD), emphasizing the importance of tests early in the development process.

What are the key components of ATDD?

  • Requirements Definition: ATDD helps us to have a clear and unambiguous definition of requirements in the form of acceptance criteria. These criteria serve as guidelines for what the software should achieve.
  • Acceptance tests: After defining the requirements, acceptance tests are defined. These tests check whether the software meets the defined criteria and you can automate them.
  • Collaboration: ATDD promotes open communication and collaboration among developers, UX designers and business stakeholders to ensure that everyone understands the requirements.
  • Continuous Integration: The automated acceptance tests could be integrated into the development process, running alongside unit tests and other checks to ensure that new code changes don’t break existing functionality.
Photo by John Schnobrich on Unsplash

Implementing ATDD

There is no single way to implement ATDD, everything will depend on the tide in which your team works, but this is a guide:

  • Gather Stakeholders: Involve business stakeholders to discuss and define acceptance criteria. The format is usually a meeting following the “3 friends/3 amigos” technique. It means that you have to involve 3 people with different roles in the discussion, for example: Developer, Product Manager, UX designer.
  • Define the Contract: The output of the meeting should be the acceptance criteria complemented by the use cases that describe what you want to achieve with the development: happy path, edge cases, sad path, behaviour according to dependencies, etc. This will be the contract of everyone involved.
    The format that is commonly used to write these scenarios is Gherkin, if your automation framework is compatible with this language, it’s a win!!
  • Automate Tests: Create automated acceptance tests based on the use cases defined.
  • Integrate Tests: Incorporate these tests into your continuous integration process, ensuring they are run regularly.
  • Collaborate: Maintain open lines of communication between developers, UX designers and business stakeholders throughout the development cycle.
  • Refine as Needed: We are human and we cannot have control of everything, it’s absurd to think that everything will be perfect, if there are changes, talk about it with everyone involved, adapt the contract and move forward.
  • Retrospective: If there have been changes and they have been very disruptive, it is good practice to do a retrospective to evaluate if it can be avoided next time.

Benefits of ATDD

ATDD offers numerous advantages that can significantly reduce time wastage and extra work in software development:

  • Improved Requirement Clarity: By involving business stakeholders early in the process, ATDD helps in better understanding of the requirements, reducing ambiguities and misunderstandings.
  • Early Issue Identification: Automated tests identify problems as soon as they occur, allowing for immediate resolution. This minimizes the chances of bugs going unnoticed until later stages.
  • Reduced Rework: Rework for large changes mid-development phase is reduced because we have requirements and acceptance criteria clearly defined and validated from the beginning.
  • Enhanced Collaboration: Collaboration between team members fosters a sense of ownership and shared responsibility for quality.

Challenges of ATDD

While ATDD offers substantial benefits, it’s not without its challenges. Some common problems using ATDD are the resistance to change, the learning curve for team members and the effort required to write and maintain automated tests. If you manage to overcome these obstacles you will see great benefits in the long term.

Photo by charlesdeluvio on Unsplash

Conclusion

It’s essential that any development begins with well-defined requirements and that we all have the same understanding of what is wanted. Mitigating time wastage and extra work in software development is crucial for successful and efficient project delivery.

Acceptance Test-Driven Development (ATDD) is a valuable approach that aligns teams, clarifies requirements, and promotes early issue identification. By implementing ATDD, development teams can minimize costly rework, deliver software that meets customer expectations, and accelerate the development process.

ATDD is not a magic potion but try it, embrace ATDD, you’ll find that the investment in collaboration and automation pays off in terms of reduced waste and improved software quality.

And if ATDD doesn’t work in the way your team works, nothing happens, try other methodologies, the important thing is to identify the problem and look for possible solutions.

Happy testing!

--

--