A discovery workshop is a conversation where technical and business people collaborate to explore, discover and agree as much as they can about the desired behaviour for a User Story.
There are several discovery workshop models, these are just a few:
Uses a pack of index cards in four different colours to map rules (a summary of constraints/acceptance criteria the team has agreed upon) to examples (illustrations/cases of the acceptance criteria)
Similar to Example Mapping, uses Post-it Notes of different colours to map shared processes/relationships between outputs and scenarios.
Also uses Post-it Notes of different colours. The team picks a story from the backlog, identifies the actors involved, breaks the story down into tasks, and maps those tasks to specific examples.
As late as possible before development on a new User Story begins, in order to prevent details from being lost. Conducting a discovery workshop as late as possible also gives the team enough leg room to shift their plans should new details surface.
A good rule-of-thumb is 3-6 people, but at a bare minimum your Three Amigos should be present: a product owner, a developer, and a tester. Your product owner will identify the problem the team should be trying to solve, your developer will address how to build a solution around said problem, and your tester will address any edge cases that could arise.
A discovery workshop should ideally only last about 25-30 minutes per story. If you need any more time than this, it’s likely the story is far too large and should be broken down, or some of the specifics are missing. In the latter case, you should set aside the story as the team needs to do more research.
The purpose of a discovery workshop is to give all stakeholders, both technical and non-technical, a shared understanding of the work at hand. Doing so encourages cross-functional collaboration, an increase in feedback, and covers any lost details or incorrect assumptions made.
A discovery workshop is a very important piece of the BDD lifecycle, among other agile development approaches. Without it, you are sure to run into miscommunications and your team won’t discover any unknowns, which could really hamper your project’s success.