uuid: - value: db312e00-7a9d-492d-a6db-7298848e06b2 langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:22+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: 'Defining Ubiquitous language' created: - value: '2024-01-24T00:00:00+00:00' changed: - value: '2025-05-11T09:00:22+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2024/01/24/defining-ubiquitous-language langcode: en body: - value: |

A key takeaway from Rob Allen's Domain-Driven Design talk was defining ubiquitous language and avoiding the phrase "That's not what I meant".

Even a simple table or glossary that lists business and domain-specific terms and their agreed meaning is very helpful to ensure everyone in the discussion is on the same page and means the same thing.

Rob's example was using the words "policy" and "risk" when dealing with insurance clients.

A common issue I've seen is where people are referred to as customers by the business and users within the software.

Ideally, these should be consistent, and the code should match the business terminology.

This can be complicated further by different areas of the business, such as a marketing team that may refer to people as subscribers.

Without the ubiquitous language being defined, the requirements are more likely to be misunderstood and the wrong solution delivered, resulting in "that's not what I meant.".

This then means the work needs to be re-done and delayed, which can be expensive and time-consuming.

Another approach is to work in small batches, which is something I've written about before, and getting feedback from customers as early and often as possible so, if there is a misunderstanding, the minimum amount of time has been spent before it's realised and rectified.

Rob, of course, covered a lot more about DDD in his talk, and I'm looking forward to re-watching it once the video from the meetup is released.

format: full_html processed: |

A key takeaway from Rob Allen's Domain-Driven Design talk was defining ubiquitous language and avoiding the phrase "That's not what I meant".

Even a simple table or glossary that lists business and domain-specific terms and their agreed meaning is very helpful to ensure everyone in the discussion is on the same page and means the same thing.

Rob's example was using the words "policy" and "risk" when dealing with insurance clients.

A common issue I've seen is where people are referred to as customers by the business and users within the software.

Ideally, these should be consistent, and the code should match the business terminology.

This can be complicated further by different areas of the business, such as a marketing team that may refer to people as subscribers.

Without the ubiquitous language being defined, the requirements are more likely to be misunderstood and the wrong solution delivered, resulting in "that's not what I meant.".

This then means the work needs to be re-done and delayed, which can be expensive and time-consuming.

Another approach is to work in small batches, which is something I've written about before, and getting feedback from customers as early and often as possible so, if there is a misunderstanding, the minimum amount of time has been spent before it's realised and rectified.

Rob, of course, covered a lot more about DDD in his talk, and I'm looking forward to re-watching it once the video from the meetup is released.

summary: null field_daily_email_cta: { }