Towards the end of 2018 I went to a workshop at Agile Leicester on Behaviour Driven Development (BDD) and Three Amigos. This article gives some references about where you can learn more about these techniques and then continues through the introduction of this technique to a team and the results that were achieved. I gave a talk back to the Agile Leicester community on this subject in early 2019 and the picture above is of that talk.
The stories we were using were closer to contracts than stories
I went to a workshop about BDD and Three Amigos at Agile Leicester given by Stuart Day.
Articles that summarise the practices:
Refresh on what stories actually are:
- User Story Mapping – Jeff Patton
- User Stories Applied – Mike Cohn
- We were keen on using the brilliant minds of all the team members to create the vision and to be a part of creating the solution rather than developing exactly what was written.
- Our stories had lengthy acceptance criteria that weren’t focused on the user needs and stipulated exactly what the solution should be leaving no space for creativity.
- There was not enough room to question, influence, and negotiate in the stories.
By using BDD and three amigos we would:
- Focus our communications on the value to a user of a feature and the behaviours that would help us ultimately achieve that value
- This would support us in negotiating and sharing solution ideas, moving away from it being pre-decided
- Spread the understanding of the story through the team and enable empowerment
- This would allow the team to make decisions on the solution with the Product Owner
- In depth behaviour discussions would enable pragmatic approach to MVPe
- This would allow us to deliver smaller increments of working software to allow feedback
To achieve our hypotheses we had to change how we worked.
- First thing to change was how we wrote stories. I worked with our Product Owner to refocus the stories back on what the User wanted and only that. No more design specifications, no more interaction specifications that a user doesn’t need to gain the value. We stripped them right back to CARD and CONFIRMATION all from the user’s point of view. (see Ron Jeffries explain CARD, CONFIRMATION, and CONVERSATION here)
- We changed how we talked through stories as a team. We previously had backlog refinement where the Product Owner would present to the team the stories and then we would move on when everyone understood.
- We started with four hour-long Three Amigos sessions per sprint to refine the stories ready for the next sprint.
- The team would decide who turned up from each specialty (i.e. who for the QA amigo and who for the Developer amigo) and the Product Owner would always be there, sometimes with a stakeholder if it made sense.
- We used the acceptance criteria as a guide to writing the scenarios as Stuart demonstrated in his talk. We talked through each user-driven acceptance criteria and created all the behaviour scenarios that supported that confirmation.
1 – Focus our communications on the value to a user of a feature and the behaviours that would help us ultimately achieve that value
- Changing how we wrote the stories brought the focus back to WHY we were developing the story in the first place and the unnecessary words were removed
- Our Product Owner has felt that these discussions help to marry the user need and the technical depth behind the behaviours
- Originally this did take up more time for her as instead of just writing her story and presenting it out to the team she had to spend time creating it with the team
- But previously a change to a story would be very time-consuming and this made it more tempting to resist the change. Now change happened naturally
- Overall, time was saved
2 – Spread the understanding of the story through the team and enable empowerment
- Collaboration with people of all different disciplines shone a light on different options and things that previously may not have been thought of
- For example a QA amigo may think about all broader scenarios like ‘what should the behaviour be if…’
- A developer amigo might be able to see that a solution is going to be slow and take a lot of power to achieve
- Existing behaviour was talked through to share knowledge of the product in general
- When we started using BDD we only talked through the behaviour that would change with this story
- We learned that omitting existing behaviour from our discussions was not the best approach as the team members who hadn’t touched that part of the product before didn’t know how this new story would impact what was already there
- If we felt that the existing behaviour was something we needed to consider as part of the story then we created scenarios
- Talking through the language in the scenarios all together boosted our shared understanding
- We had plenty of conversations about what certain words meant to make sure we were all using common language
- We used our user roles to make the scenarios relatable, defined terms, and debated grammar
- Some of this was too far admittedly and one of the things we learnt is to not waste time straying from the goal of three amigos on a quest for perfection
3 – In depth behaviour discussions would enable pragmatic approach to MVPe
- By splitting stories into scenarios we could see a bit clearer on their size
- For example if we found one had a lot of scenarios we could group them together and there our story was split by functionality just as simple as that.
- Or we could cut some out that maybe weren’t vital to the user. These scenarios could come later.
- We did also learn that BDD scenarios don’t work for all types of features for example one with a specific, non-negotiable set of rules set by a regulator. Scenarios are good for in general what happens if a rule is followed or broken but not needed for the actual rules.
All in all using BDD and Three Amigos achieved the three hypotheses that we set out to achieve. There are many more benefits cited from using this technique, including improvements to quality and documentation, but as we weren’t measuring ourselves against them I haven’t included it in this article.
It also goes to prove that Agile community events are wonderful places to learn and I am extremely grateful for them (hence the cheesy slide of my thanks in the header picture).
To keep working with and improving. Will update with any new challenges or tips. Let me know how you have found using BDD and Three Amigos in the comments below.
To encourage creativity and ownership from the team in the product
Articles on benefits
- Rob van Lanen’s paper on unlocking intrinsic motivation through FedEx Days
- Johan den Haan’s 10 reasons why you should organise a FedEx Day
- Facebook’s features that have resulted from Hackathons
Preparation for the day
- Agree a time frame with the team and management
- Agreed a time frame in between two sprints (we timed this with an awkward dates for having a planning session I think because a bank holiday had offset us)
- Organise a review session to show each other our innovations
- Ensure someone from seniority was present to see the innovations
- Structured similar to the first half of the Sprint Review
- Establish rules
- it couldn’t be something we were already planning to do and had to be new
- There had to be something to show at the end (i.e. the FedEx delivery must arrive on time)
On the FedEx Day
- Meet at the start of the day to refresh the purpose
- Participants self-organised into teams
- Teams each agreed a direction
Creativity and Innovation Boost
- Enjoyment from the team members on getting to work on something they either enjoyed or were passionate about
- The business appreciated the ideas that had been created and put them on the backlog for further investment, or for further investigation where a new product was involved
- After this event there were more creative questions on the solutions and the features and more suggestions
- The team separated into a few smaller teams to work on their projects – mostly by time zone for ease
- The team learned that for people who have specialist skill sets in the team it may be harder to join in, so this needs special attention
Delivering Incrementally for Fast Feedback
- Everyone had something to show for the review
- The business and the team asked for this to become regular
We have multiple teams delivering towards the same business goals. They often weren’t fully aware of what the other teams were achieving and missed the opportunity to ask questions.
- There is a similar idea to this but demonstrating by feature developed rather than by team in the Nexus Framework (1, pg 67)
- Quick scrum.org summary is here
- Each team doing their own end of iteration/ release reviews.
- Unsure approach from teams – especially those who had worked on features they didn’t feel have a ‘wow’ factor
- Some team members said they felt they had already completed a review of their work for iteration or release and were not confident any further review would be
- Each team having a ‘stall’ at the Science Fair (we had 6 teams in total holding stalls)
- Stalls set out around the edges of the room with enough space for people to wander about and stand around each stall
- Inviting all stakeholders from all teams and some in-business users
- A number of rounds of ten minutes each were set up to allow the teams to also rotate and see each other’s stalls
- An introduction was created to explain the format and summarise the features delivered in the interval length agreed
Notes from Setup
- We took the idea to schedule these at regular intervals that suited the iteration or release cycle of all of the teams involved as they work to different cadences
- Setup time in the room was important so that when people entered we were ready to go
- Talking through the features that were delivered at the start felt like a waste of time as everyone could then talk through them with each team. This took time away from actual conversations so we decided not to keep it in the next one and bring our objectives wall into the room instead for people to refer to if wished.
- Each team had someone viewing their demo at almost every ’round’ as we called them
- Each team felt they got value out of it as they were able to have more in depth conversations and ask more questions about the features from other teams than they usually feel able to in the team specific reviews.
- The teams who were concerned on repetition of reviews and their stall not having exciting enough features had ample interest, questions, and feedback for us to repeat this Science Review format again
- Stakeholders and in-business users who would usually only attend the review sessions for specific features broadened their knowledge to the work from other teams
- Introduction to the features at the start is unnecessary – this has now been replaced with bringing the feature board into the room
- Worthwhile start to improving the cross-team knowledge sharing and communication. It did highlight how difficult it is for each team to keep up with and understand the work of 5 other teams whilst also maintaining their own work.
- Requests were made from all to make the event more ‘jazzy and exciting to attend with an extension to more people included in this. Biscuits have been suggested
- This review format allowed a different type of conversation to a solo team review which I believe was because there were less people at one time and so questions of more personal interest seemed appropriate. This is why I don’t believe it felt more repetitive
- There are more interested people in the features than you immediately think of within the business
Extensions to try
- Invite more people and advertise as an event around the business for whoever wants to attend.
- Consideration on whether making it a competition for best stall would create a brighter atmosphere.
- Nexus Framework by Kurt Bittner
Communication with stakeholders and confidence in how we forecast was proving difficult
- I found this article on Scrum.org that introduced me to Monte Carlo forecasting.
- Further research here and spreadsheet to use
The team that I trialed this with were previously using the method to take the average velocity of the last 3 sprints, catering for anticipated holidays.
- Take it to the team and talk through research
- Input velocity data from previous sprints
- Use the predictions it comes out with to change how we forecast our sprints
- Use the calculations to have a strong goal (one that we could have a better confidence in our forecast) and a stretch goal which we would get to if we could
- Take it to stakeholders and talk through the trial
Communication on our forecasts within the team
- It enabled conversation over the forecast velocity as we could adjust and see the simulation run rather than be presented with a single number
- A forecast is as such, a forecast, and using this tool brought us back to metrics being a tool rather than a target number to hit
- The use of strong goals and stretch goals helped focus on something more realistic to achieve and therefore built confidence within the team
Transparency with Stakeholders
- As we’d had more conversations as a team we could justify our forecasts when asked and had more confidence
- The use of strong and stretch goals also helped manage expectations with stakeholders
Extension to try
- Planning for a goal first and then checking how that goal would look in the simulation and what our chances were of achieving the goal
- Then we could adapt our approach to the goal if it seemed unlikely for us inside a sprint