Merit vs. Credit

Domain Driven Design (DDD) advocates for a ubiquitous language. This is more than just a fancy way of saying that developers and domain experts should use the same words. It's more than a glossary or a dictionary.

I've fallen victim to the hubris of making up my own language that is "better" than the business'. It's a personality flaw that I fight constantly. The worst example occurred when I designed a frequent diner program for a prior employer. The business called points earned "credit". I insisted that the correct term was "merit". "Credit" is for accounting systems (like our gift card program). "Merit" is something you accrue for which you are eventually rewarded.

I debated the issue at length with the business analyst. She understood my position, but informed me that our users use the term "credit". She performed an experiment in which some potential customers were shown specs with "credit" and others with "merit". The "credit" group had fewer misunderstandings than the "merit" group. Even in the face of scientific evidence, I stood my ground. "Merit" was right, and they just needed to be educated.

The debate continued. People lined up behind The Architect claiming that "merit" was technically correct and semantically concise. Other people lined up behind The Business Analyst claiming that "credit" made more sense and did not conflict with other definitions in other contexts.

In the end, we resolved that all of the functional specifications and end user documentation would use the term "credit", while all of the technical documentation and code would use "merit". The user interface code was a mess, since it had to display "credit" but read the value from the "merit" property. For years afterward, I received questions from new developers about what was "merit" and what was "credit" and what they had to do with each other.

In this, I was wrong. My continued insistence on imposing my own language added no value. I created a situation which only bred confusion. I was correct only in proposing a new term and in soliciting additional feedback. But once the term "credit" was corroborated by our customers, I should have ended my crusade for the sake of ubiquitous language.

Leave a Reply

You must be logged in to post a comment.