Domain Driven Design – Part 1: Shared (Ubiquitous) Language – This Seems Familiar

On the recommendation of my manager, I starting digging into the on-line version of the book Domain Driven Design Quickly. I found it a bit hard at first, not to read, but rather to stomach, for about the first 30 pages or so I felt a little bit… talked down to. While some of the terms being used, such as ‘Ubiquitous Language’, might have been new, the concepts behind them were anything but. I realized that these concepts were not just ‘not new’ to me, but that they were old, old enough to pre-date my time as a Java programmer. Back in the heydays of the dot-com boom, I had made my start in technology not programming Java, but rather creating workflow applications in Lotus Notes, and as part of that work I had to practice much of what is being described in this book.

Like using a shared language.

Specifically what I did in that time was mostly consulting work involving supplanting existing paper-based systems with Lotus Notes-based ones. That kind of work requires domain knowledge, in fact, it was almost nothing but domain knowledge combined with what by my modern measure would be only a small bit of programming. In every case, job #1 was not the code, but to get a hold on what the clients were doing in their real world processes. Once that was achieved, then the job was to find a way to recreate it, as faithfully as possible, in the digital realm, and maybe, if we were lucky and had time, see what ways we could optimize our new (old) system to make it more efficient. I learned very quickly that without the domain knowledge, you were never going to get the design right.

Now of course, the people I was working with to get the domain knowledge were not programmers (if they were, they wouldn’t have needed me) so that’s where the shared (or ubiquitous, if you want to waste three syllables of your time) language came in: it was my job to learn their language. More importantly, it was my job to get the concepts present in their language into my head and then translate those into a digital form that retained those concepts. This way, even though the end product was something new, it remained familiar to them and therefore as easy (hopefully easier) to use as the original paper version.

Of course, that’s not nearly all there is in the book, but that’s the first main bit. Know Your Domain. Luckily, it’s something I got introduced to very early.