BDD and the four pillars of business agility
People often ask where Behaviour Driven Development, or BDD, fits with regards to other agile practices. Managers might say "BDD sounds great. But how do we align our agile transformation strategy with BDD adoption?". Some ask "Does BDD work with Scrum/SAFe/Kanban/<insert your favourite agile methodology here>"? Some folk even simply ask "So are we doing BDD or Agile?"
To answer questions like these, this article tries to put BDD in the context of other agile practices.
Behaviour Driven Development (or BDD) is a collaborative approach that helps teams focus on delivering high value features sooner. BDD builds on and extends standard agile practices such as sprint planning and backlog grooming, user stories and acceptance criteria, and makes them much more effective.
Teams practicing BDD use structured conversations around business rules and concrete examples to build a deeper shared understanding of the problems they need to solve. They often automate the acceptance criteria they discover in the form of automated acceptance tests, or executable specifications, that provide both documentation about what the application does, and feedback about whether the application works.
But if you are trying to make a large organisation more agile, then BDD is just one part of the picture.
The Four Pillars of Business Agility
In fact, there there are four key enablers, or pillars, to business agility:
- Agile Methods
- A BDD Mindset
- Engineering Discipline
- A DevOps Culture
Agile Methods, such as Scrum and Kanban, focus primarily on team organisation, coordination, and change management. Some would say that the value of a framework such as Scrum or Kanban is not so much to make you deliver faster, but to make it more obvious why you are not. To actually deliver faster, you need the other three pillars.
A BDD Mindset accelerates the flow of value and reduces waste and rework by enabling teams to discover and focus on the features that really matter (“building the right thing”).
Engineering Discipline includes a range of practices and techniques that help us build more reliable, more maintainable code faster. Test Driven Development (TDD), Continuous Integration, Automated Acceptance Testing and Clean Coding all fall into this category. Such practices are essential if you want to deliver quickly and reliably.
Finally, A DevOps Culture gives teams the ability to deliver features safely to production at speed (“delivering the thing safely in time”).
All of these areas overlap and interact. Requirements Discovery practices from BDD, such as Impact Mapping, Feature Mapping, and Example Mapping, play a key role in release and sprint planning and backlog grooming. And executable specifications, the flip side of BDD, rely heavily on solid engineering practices to keep the maintenances costs down and the feedback quick and reliable.
In sum, improvements in any of these areas in isolation are not enough to produce great results. You need a coordinated approach that address all four pillars if you want to get sustainable results.
Model refined and refactored with the kind help of Peter Suggitt and Jan Molak. The first version of this model came out of a conversation with my good friend Marco Tedone some years ago, in a car in the mountains between Pune and Mumbai.