Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
150707 stories
·
33 followers

The one where Oskar explains Example Mapping

1 Share

cover

One of the first indications of getting old(er) is when people stop getting your movie or music references. Of course, based on this rule, some people are always old. That happens.

Recently, I realised during my workshops that referencing Friends is not so cool anymore. It started to happen when I was explaining the Example Mapping technique.

It always starts with “The one where”.

Just like in Friends.

I started to notice a bit slower head nodding and a bit more awkward smiles from the attendees. I repeated

“You know, like in Friends, the series titles episodes”.

And head-nodding stopped; only totally awkwardly polite smiles remained. Definitely, it wasn’t The One Where Everybody Finds Out. So I finally asked, you weren’t watching Frients, didn’t you?

Obviously, the answer was:

Emmm. NO.

Okay, then, if you don’t know Friends or the Example Mapping technique, this will be The One Where You Find Out.

Let’s say that we’re working on the guest checkout feature for a hotel management system.

We could start by asking the business how it works. We could get an answer that:

The guest approaches the desk and requests checkout. The clerk inquires about the quality of the products and services, and after receiving an answer, requests the room key. After gathering, the key clerk checks whether the balance is settled. If it’s settled, then proceed with the checkout. Marking the stay as completed.

Sounds straightforward, but we should already have several questions popping up, e.g. what does it mean that “balance is settled”? We could get quick feedback that:

This means that the difference between the sums of all charges and payments is equal to zero.

Then we could try to come up with an example:

Ah, so for instance, when guests haven’t paid upfront for their stay, right?

Right.

Oh, then we need to charge them, right?

Right.

We could visualise what we discovered in the following way:

em01

Now, this generated another flow for us. We have a new feature we weren’t aware of: the guest’s stay payment registration. Let’s try to start this time from the visualisation.

em02

It’s the one Oskar pays for his stay, because he wants to check out but didn’t pay upfront. The payment is registered, and we can try checking out again. Sounds fine, but we should ask whether there are any rules for payments. It may appear that:

Yes, there are some, for instance:

  • Only guests with a valid credit card can pay with it for their stay,
  • Guests paying in cash need to hand it over before accepting the payment.

em03

And hey, we just found out new business rules, let’s put them on the board and update our flow to be more precise and reflect our scenario by adding a note that this scenario represents a guest paying with a credit card.

em05

Now, what if the payment fails? Can it fail? Let’s ask the business!

Payment may fail if the payment gateway is unavailable or the issuer rejects it.

What if our internet connection is down for the whole day?

The clerk should ask the guest for cash.

What if the guest doesn’t have cash? 🤔

Then the shift manager can authorise unsettled balance checkout and register a charge with a delayed due date.

Here’s the updated flow. The one where Oskar pays for his entire stay with a credit card, but the Internet is down, and he doesn’t have cash.

em04

Now, we found out:

  • A new outcome, failed payment,
  • A new rule, that we need Internet access to authorise credit card payment,
  • A new feature, the shift manager can authorise unsettled balance checkout and register a charge with a delayed due date.

How would the authorisation look? How should we register a delayed charge?

We should follow double-entry bookkeeping and register the authorisation (type of payment) with the unbalanced amount to settle the balance for today, and register an additional delayed charge for the same amount

The flow will look like:

em06

And that’s precisely how the Example Mapping session looks like. It’s a structured conversation format created by Matt Wynne. You take a user story, gather a small group (usually a developer, tester, and someone from the business side), and spend around 25-30 minutes breaking it down together.

You don’t need a big setup, a huge ceremon, you don’t need sticky notes, you can just use plain text like:

Given: Example

When: We use specific features

Then: Based on business rules, we get a specific outcome.

em07

Business people don’t need to give them to you in such form. You can use the interview as I showed above and note it on your own, while you’re discussing stuff. It’s also a nice way to collaborate and visualise your discussions.

You don’t even need to start with an interview; you can use the Example Mapping as a brainstorming tool to generate as many examples of your (part of the) system. Then, try to model it as you see fit and ask the business for clarifications in the preferred form. It can help facilitate discussion with your team, not only with business stakeholders.

It’s super helpful, as misunderstandings are expensive. When multiple people try to describe the same rule using real examples, you’ll quickly see where assumptions don’t match. Better to find that out in a 30-minute chat than after two weeks of coding the wrong thing.

It also works as a readiness check. Too many red cards? The story isn’t ready. Too many blue cards? The story is probably too big. If examples come easily and everyone nods along - you’re good to go.

There’s also more, as you can try to distil business rules based on the examples and outcomes the business describes.

It’s worth noting that I cheated you in colours. The original looks like this:

Why did I change them?

Example Mapping plays nicely with other collaboration techniques like Event Storming. And if you’re familiar with the Event Storming colour scheme, that’s also the reason why I used it. I aligned them. See:

source: https://cucumber.io/blog/bdd/example-mapping-introduction/

I’m typically using it during modelling sessions to:

And hot spots and notes, as known from EventStorming, are super helpful here. Read also more in The Underestimated Power of Hot Spots and Notes in EventStorming.

What’s more, if you look at the Given/When/Then pattern, you may notice that it works nicely with Behaviour-Driven Design. I already wrote that Behaviour-Driven Design is more than tests. How to do it? Check here.

I’ll also expand on it in the next articles. I’m doing the extreme Example Mapping with events, so stay tuned, the more will come.

For now, check also those materials:

And most importantly, try it. Take one feature from your system, try to crunch it, or start your design session with this technique.

Most of the teams I’m working with are enjoying this technique, as it’s a fun way to get quick, actionable outcomes.

Cheers!

Oskar

p.s. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, putting pressure on your local government or companies. You can also support Ukraine by donating e.g. to Red Cross, Ukraine humanitarian organisation or donate Ambulances for Ukraine.

Read the whole story
alvinashcraft
28 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

WorkDrive 6.0: Advancing toward intelligent enterprise content management (Phase 1)

1 Share
Artificial intelligence is redefining how enterprises process data. Large language models can understand context, generate insights, and trigger multi-step actions across systems—but only when they are grounded in structured, accessible, and governed enterprise content. Without that foundation, even the most advanced models operate in...

Read the whole story
alvinashcraft
28 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Innovative Design and Collaboration at Game On.

1 Share
Innovative Design and Collaboration at Game On.

In the world of experiential entertainment, few concepts have captured the imagination quite like escape rooms. But James Hopkin and Eric Mittler, the creative minds behind Game On in Berkeley, California, are pushing the boundaries of what these immersive environments can be. Rather than static, one-time experiences, Game On offers a cooperative challenge center that thrives on evolution, iteration, and the liberating power of failure.

The post Innovative Design and Collaboration at Game On. appeared first on Make: DIY Projects and Ideas for Makers.

Read the whole story
alvinashcraft
28 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

python-1.0.0rc6

1 Share

[1.0.0rc6] - 2026-03-30

Important

For any breaking changes & updates, please view this migration guide.

Added

  • agent-framework-openai: New package extracted from core for OpenAI and Azure OpenAI provider support (#4818)
  • agent-framework-foundry: New package for Azure AI Foundry integration (#4818)
  • agent-framework-core: Support structuredContent in MCP tool results and fix sampling options type (#4763)
  • agent-framework-core: Include reasoning messages in MESSAGES_SNAPSHOT events (#4844)
  • agent-framework-core: [BREAKING] Add context mode to AgentExecutor (#4668)

Changed

  • agent-framework-core: [BREAKING] Remove deprecated kwargs compatibility paths (#4858)
  • agent-framework-core: [BREAKING] Reduce core dependencies and simplify optional integrations (#4904)
  • agent-framework-openai: [BREAKING] Provider-leading client design & OpenAI package extraction (#4818)
  • agent-framework-openai: [BREAKING] Fix OpenAI Azure routing and provider samples (#4925)
  • agent-framework-azure-ai: Deprecate Azure AI v1 (Persistent Agents API) helper methods (#4804)
  • agent-framework-core: Avoid duplicate agent response telemetry (#4685)
  • agent-framework-devui: Bump flatted from 3.3.3 to 3.4.2 in frontend (#4805)
  • samples: Move ag_ui_workflow_handoff demo from demos/ to 05-end-to-end/ (#4900)

Fixed

  • agent-framework-core: Fix streaming path to emit mcp_server_tool_result on output_item.done instead of output_item.added (#4821)
  • agent-framework-a2a: Fix A2AAgent to surface message content from in-progress TaskStatusUpdateEvents (#4798)
  • agent-framework-core: Fix PydanticSchemaGenerationError when using from __future__ import annotations with @tool (#4822)
  • samples: Fix broken samples for GitHub Copilot, declarative, and Responses API (#4915)
  • repo: Fix: update PyRIT repository link from Azure/PyRIT to microsoft/PyRIT (#4960)
Read the whole story
alvinashcraft
29 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Azure.Identity_1.20.0

1 Share

1.20.0 (2026-03-30)

Features Added

  • Added a JSON schema segment to the NuGet package that provides IntelliSense and validation for Azure.Identity credential configuration in appsettings.json.

Breaking Changes

  • AddAzureClient, AddKeyedAzureClient, and WithAzureCredential return type changed from IHostApplicationBuilder to IClientBuilder to align with the IClientBuilder composition change in System.ClientModel.
Read the whole story
alvinashcraft
29 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Microsoft Plans To Build 100% Native Apps For Windows 11

1 Share
Microsoft is reportedly shifting Windows 11 app development back toward fully native apps. Rudy Huyn, a Partner Architect at Microsoft working on the Store and File Explorer, said in a post on X that he is building a new team to work on Windows apps. "You don't need prior experience with the platform.. what matters most is strong product thinking and a deep focus on the customer," he wrote. "If you've built great apps on any platform and care about crafting meaningful user experiences, I'd love to hear from you." Huyn later said in a reply on X that the new Windows 11 apps will be "100% native." TechSpot reports: The description stands out at a time when many of Microsoft's built-in tools, including Clipchamp and Copilot, rely on web technologies and Progressive Web App architectures. The company's commitment to native performance suggests that some long-standing frustrations around responsiveness, memory use, and interface consistency could finally be addressed. For Windows developers, Huyn's comments hint at a change in direction. Microsoft's recent development priorities have leaned heavily on web-based approaches, with Progressive Web Apps (PWAs) replacing or supplementing many native programs. [...] Exactly which applications will be rebuilt, or how strictly "100% native" will be enforced, remains unclear. Some current Microsoft apps classified as native still depend on WebView for specific features. But the renewed emphasis already has developers paying attention.

Read more of this story at Slashdot.

Read the whole story
alvinashcraft
1 hour ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories