Almost a month ago, I did this amazing course at SkillsMatter: "Eric Evans Domain Driven Design Immersion Workshop". The course was very intensive and provided me with the opportunity to reinforce a lot of concepts I already knew as well as learn a few more.
One of this concepts was Ubiquitous Language. The first time I heard it from our coach Alberto Brandolini, I must confess I understood "Ambiguous Language". The term "Ubiquitous" it's not a simple one, especially for a non-native English speaker like myself. While I was listening to the coach explaining all of this concepts around the "Ubiquitous Language", another one did make its way through: "Bounded Context". Martin Fowler has a really nice post where he defines it like this:
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships.
One thing that Alberto told us was that we should always consider our bounded context when talking to the business expert: in the same company, different concepts may be used for the same term, whether you are talking to a sales expert or an accounting expert. So it's up to us, developers, to define in which context we are currently working.
The videos that they showed to us during the course were very helpful: I definitely saw myself in previous clients doing the same mistakes and not understanding what was going on. The good thing is that now I know how to address it, and even did it twice in my current client.
So the next time that you hear a business expert using a different word from the ones that you're using, go and talk to them. Make sure the words you are using are the correct ones, and if there's a new one then you should integrate it into your model. After all, they are the ones who know the business!
Software is our passion.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.