Using Specification by Example / BDD for your refinements
When I'm joining new teams at clients it often becomes clear that the added value of refinements is not always seen. Team members complain that hours are wasted. The refinement sessions shouldn't be long draining meetings with endless discussions. Refinements should instead provide a clear added value in the form of requirements that the whole team can work with to deliver added value. How do you shape your refinements in a way that they add value? Read on to see how BDD / Specification by Example can help you!
Delivering software in an iterative manner means that we need to remove waste from our processes. Since we are doing a lot of things in a short period of time, we need to get rid of the handovers and focus on adding value. This value is delivered in small pieces at a time and this is where it becomes difficult. Keeping stories small and having them not 'blow-up' once you start discussing them is something that a lot of teams struggle with. The result is an unstructured refinement session that drains energy and feels like a waste.
Another aspect of working iteratively, and specifically in multi-disciplinary teams is that roles are changing. Developers, testers and business analysts have to work together where the whole team needs to understand the business. We also need to get to this understanding as early as possible. Finding problems late in the development process is expensive, so we need to get feedback on the quality of our product as early as possible. Do you recognize the picture below?
A lot of teams start their sprints with open assumptions and they receive feedback late in the sprint, often even during the demo. It covers scoping ("Oh, I assumed that..."), Tests ("Whoops, worked on my machine") and basic requirements ("Of course we need to...)".
We need to fix all these 'bugs' in the next sprint of course, so as much as 30-50% of the work a team does is lost on rework and stories flowing over from previous sprints. The costs of these late feedback loops are enormous, but how do we get to this type of feedback earlier?
Behavior Driven Development (BDD), helped by methods like Specification by Example, give more structure to your refinements. The goal is to get to a common language between your team and (business) stakeholders and write your new functionalities in the form of scenarios with very specific examples.
Practicing Specification by Example means a change in how you refine. You can use different techniques to get to specific Examples. One of these techniques is Example Mapping.
These workshops bring a new vibe to your refinement process and increase the communication between the team and the stakeholders. Resulting in a common understanding of the work in your team needs to perform. It provides the team early with the feedback it needs!
Getting to a common understanding within your team has another advantage as well. You can use the examples as input for your development, test automation and documentation. They can lead to Executable Specifications when you write down your examples in a format that a tool can support. In the case of Cucumber, for example, you can use the Given, When, Then format to drive your tests. When all the tests are green, you know that you've implemented the features specified and that they work as well! The results of your tests can even be used as documentation as it clearly states what has been build and what the latest status is.
Want to know how to work like this as a team? At Xebia we specialize in making teams more agile. Specification by Example / BDD is an important part of this! We offer our Specification by Example training on demand for whole scrum teams where we can customize this training to match your exact needs. We cover all aspects outlined in this blog to give you faster feedback, improve your team collaboration and drive your test automation.
Are you part of a scrum team and do you want to infect the rest of your team? You can also join this training on one of the listed training days! We hope to see you soon!