Ubiquitous language leaking in the wrong direction

This is a little musing on something I observed in a supermarket the other day. Over here (in the Netherlands) more and more shop payments are handled online. The employee scans the shopping, the counter sums up the amount due and the customer sweeps a card to authorize a payment from her account to the shop’s account. Behind the scenes there is a quite interesting domain with loads and loads of fodder for stories on software design. For the public quite handy and also the older generations, having used cash their entire life, are using it en masse.

The other day there was an old lady next in my counter line. Proudly she was waving her card, feeling all part of modernity. Until the employee told her “The transaction cannot be started until the first article is scanned”. To me this was a very informative piece of domain specific ubiquitous language. But the old lady felt like an alien living in a world she no longer understood and started looking for her purse.

At first it only made me realize that an ubiquitous language may be quite informative and precise for people working inside the domain but that that same jargon and strictness scares a lot of (potential) users of the domain being discussed.

Later on I realized that the employee had made an even bigger mistake. The customer herself is not a part of the domain at all. The shopping’s are a part and her card is a part. But by addressing the customer herself the assumption is made that the shopping’s and the payment are associated with one and the same person. The shop doesn’t care as long as somebody pays. The shopping’s don’t care as long they leave the shop. Who needs a customer ?

The domain does need a customer to use it. But don’t hassle her with language never intended to leak out of the domain.

My 2 e-Cents

<Post scriptum>

The comments on this make it clear there are two ways you can view the situation. Each with different implications. What the real problem was depends on the position of the lady in the story.

1. She is not a part of the domain, only an actor providing some input. Like passing in some shopping and passing in a payment. This actor (or these actors, in case somebody else is going to pay) needs some instructions. In a language which she understands. But even when the terms in the language, like transaction, article and scan are replaced with words of her choice it would be only confusing to her to expose the rules of the domain to her. It would be far better to just tell her “Please wait swiping your card until I tell you to do so”. But that doesn’t really map on the UL spoken inside the domain.

In this scenario there is just no UL which is understood by everybody. It’s just the shop employee uttering impropriate language.

2. The lady is part of the domain. In this case the interface between shopper and counter is not that good. As it exposes behavior which cannot be granted to be understood. Or at least should be expressed in a better language.

 

In both views the language is the problem. Speak in a language clearly understood by the receiver. Or just keep quiet.

</Post scriptum>

This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • jrnail23

    On the other hand, this is possibly indicative of a bad choice of language in the ubiquitous language/domain.
    “Transaction” and “article” are probably overly generic terms that sounded good to the software developers, but if non-technical people who are at least familiar with the business domain are confused by the terminology, then it’s no good. And yes, little old ladies who shop at the grocery store are at least familiar with the domain concepts here (checkout, scanning, payments, etc)

  • http://codebetter.com/members/pvanooijen/default.aspx pvanooijen

    The point I was trying to make is that the old lady is not a part of the domain. Perhaps she is familiar with some of the concepts but she doesn’t have to know all rules.

    The language which should be used to address her is a different one than the UL inside. A far more informal one.

  • Where is DSL? She was just stupid!

    She was not able to understand, but it only proves no flexibility of her brains. So use the older methods if you are not well-qualified for modern ones.

  • http://scottbellware.com ScottBellware

    Seems like an unquestioned bias getting in the way. Programmers believe that “Ubiquitous Language” is their domain. It’s not. When it is, it’s just more geek mindlessness in the product design driver’s seat rather than human factors quality assurance.

  • http://codebetter.com/members/pvanooijen/default.aspx pvanooijen

    That’s a good one. Discussion is getting ambigious, I’ll add a PS to the post to try to get the diferent point separated.

  • Jeff Santini

    Your question is how ubiquitious is ubiquitous as I read it.

    I do agree there seems to be a subtext here that UL applies to Devs first and others as necessary, which is not what Eric Evans was saying in DDD.

    But If there is a coherent group that was appropriate and benefitted from sharing the given language, then you need an Anti-Corruption Layer when talking to shoppers in the store. If the business and techies agree that their language should no apply to shoppers, they need to agree with a shopper stakeholder on a workable language for them and make sure appropriate language is used when entering the shopper domain.

  • http://codebetter.com/members/pvanooijen/default.aspx pvanooijen

    IMHO An UL loses all of it’s meaning outside of it’s domain.

    In this scenario the boundaries of the domain are not quite clear. Setting up an ACL would indeed be quite a good idea. The least it should do is make the domain’s behavior comprehensible to the user. And prevent the geek-babble from leaking out while doing that.

  • http://bartelink.com Ruben Bartelink

    I believe you should have used item instead of article (in terms of directly translating the words from Dutch to English), though using it as it is serves to emphasise the point well