Give your data a personality. Keep it real. Work together to gather real life data that represents the different conditions that will comprehensively demonstrate the business capabilities. Doing this collaboratively up front, rather than in silos at the tail end of a project dramatically removes misunderstandings and plugs gaps in the design.
Data personas are a detailed description of data attributes for key inputs, pre-conditions and outputs that are referenced within our scenarios. These attributes (and notably the differences between them) drive our scenarios to demonstrate the key business outcomes and capabilities that our software delivers.
At the early stages of a project the data persona may be at a high level and refer to a type of output, for example a ‘Rustic Wraps’. It may be supported by illustrations and key data attributes that make it realistic and meaningful to support conversations with clients and business experts.
During discovery, as we go through our Outcome > Output > Process approach, we design additional data objects to support our solution and the process of generating the required output.
In our ‘Rustic Wraps coupon’ example, we may recognise that we need a ‘Rustic Wraps promotion’ set up in order generate the coupon output, so we extend our data persona to include the required promotion data attributes. We do this using real world data, and collaborate with the business to ensure we are getting things right.
This collaboration reveals misunderstandings and assumptions and we tweak our data personas (and the underlying data model) to reflect our new shared understanding.
As we move into delivery, and we start elaborating Scenarios > Inputs, we explore the inputs that drive our scenarios and our data personas extend to include these examples. We use real world data examples to generate all the key outputs and demonstrate enough positive and negative scenarios that give us confidence in our implementation.
What we realise as we go through this process, is that ambiguities in the data we use to drive our scenarios is often where costly mistakes creep in and by
collaborating on these data personas up front we are able to dramatically reduce misunderstanding and raise the level of shared understanding of the domain.
When it comes to setting up test data for our scenarios, our data personas allow us to assemble a set of precise data under a well-known name. So when we refer to it everyone will know what we’re talking about. It has become part of our ‘ubiquitous language’
Scenario: Issue coupon based on basket items
Given a Rustic Wraps promotion has been deployed to the till
When a qualifying lunchtime basket is scanned
Then a meal-deal coupon is printed
We can create data persona classes that inject all the defined personas into a test database, so that we don’t need to define all of the detailed attributes as part of our pre-conditions each time
Our data personas evolve. Using the same data personas in our initial customer conversations and vision as we do in our scenarios and unit tests helps us talk the same language and deliver lean and high value software. They help us start small, enabling us to only model our design based on the examples that are being implemented in that particular iteration.