Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Why BDD Can Save Agile

Why BDD Can Save Agile

Leia em Português

Matt Wynne, founder at Cucumber Ltd spoke at QCon London 2015 on how BDD can leverage the benefits of Agile on teams struggling with common patterns like lack of predictability, communication and quality.

Working with companies that asked for help, Wynne noticed that they often ran into those problems because they have misunderstood the difference between being agile, attain agility and acquiring some kind of agile practices just by following a cargo cult approach.

To fight against pain points typically found, he proposed to bring back some of the agile characteristics eventually lost. Predictability will increase if teams start to build small pieces of software, communication will work better if teams collaborate on a daily basis and quality would be improved if a technical discipline was followed.

He then described, on his own view, why BDD may be helpful on this.

According to Wikipedia,

“Behavior-driven development (BDD) is a software development process that emerged from test-driven development (TDD). Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software development and management teams with shared tools and a shared process to collaborate on software development.”

Wynne focused his own definition on the behavior expected by the people who use it.

“BDD practitioners explore, discover, define and then drive out the desired behavior of software using conversations, concrete examples, and automated tests.”

Using cone of uncertainty, he showed how people go from an explore phase where the uncertainty is maximum to a drive out one where the certainty is as much it can be. The three tools suggested to go that journey were conversations, concrete examples and test-driven development.

Conversations matter because software is made by people, for people. Everyone has a unique perspective and all are important. A technique called discovery workshop, a “three amigos" workshop to discover scenarios for a user story, was proposed to strengthen the conversations tool. Concrete examples are important because they make sense to everyone, are rooted in the problem domain providing help to build a ubiquitous language and a shared source of truth.

Test-driven Development are mandatory because automated tests are the warning lights so, the advice is to not forget to listen what the tests are saying.

Wynne ends the talk remembering somehow the roots of TDD:

“You can’t stay agile without clean code

You can’t have clean code without refactoring

You can’t refactor without good automated tests”

Rate this Article