In the context of BDD, “Discovery” refers to a structured, collaborative practice for specifying software requirements with examples. The process of Discovery is also known as a “Specification By Example workshop.”
Discovery aims to overcome the blind spots of the “unknown-unknowns” in software development and reduce the bottleneck of learning, as described in Deliberate Discovery (by Dan North). The key elements are the use of examples, face-to-face conversation with diverse perspectives, focus and time-boxing.
Discovery starts with “unknown-unknowns”: questions you don’t even know to ask yet. These questions are uncovered through a workshop with a diverse group of perspectives:, like:
- Business: the perspective of the “happy/success cases” that provide business value
- Developers: the perspective of technical constraints to consider when coming up with a feasible solution
- Testers: the perspective of exceptions and edge-cases that need to be considered in addition to the “success case”
This group is also often called the “Three Amigos.”
“Unknown-unknowns” are brainstormed by the “Three Amigos” asking the question, “What happens if …” from their different perspectives. The questions should point to examples that break the model (Chris Matts) of their current shared understanding about the domain. The questions become “known-unknowns” and are clustered for further exploration. The clusters are prioritized and further explored in a focused time-box. This exploration should come up with answers that specify additional rules for the domain (also called acceptance criteria). Concrete examples are used to illustrate the rules. Example mapping is a popular visualization technique for this collaboration.
Once a model has emerged from describing a few rules with examples for the domain, the next step is starting a new brainstorming for examples that break the model.