You want to know your domain, talk to the business people they know all the ins and outs” – I’ve always seen this as a holy grail. I always dreamt, if only I could talk to business folks then my code, my designs would be a breeze. Because after all they know the business and that’s the only piece I’m missing from my perfect code, they will tell me what is what and how to split it and where. Well…
Business is logical and clean
As you may think, It’s never as pretty as it is in the slides on a conference. Let’s imagine you finally convinced some people to talk to you about how your company makes money, and how your code can help. You think that this is “THE” conversation that will solve all problems and answer all your questions. You start talking, and they explain all the business process rationale and why, and who and why. And you take diligent notes of this, and what you see in those notes is a horrible mess.
All processes and rules and responsibilities are mixed up in their heads, all tangled together. That’s how they see this business, that’s how they operate. And its nothing like your clean sliced domains or contexts you saw on slides. So you got your desired meeting and it created more problems than solutions.
Domain experts vocabulary to the rescue
For instance, most likely when you start talking with business of an e-commerce store they may not even say the word “basket”! For them it may be order, that is placed, then changed, then paid than sent. And where are your subdomains now ? Nowhere! Exactly!
It’s not the responsibility of a business people to create clean separate models for you. It’s your responsibility to analyze and propose models that will be evaluated with business folks. Sorry to break it to you, but that’s how it is, and trust me, most of them won’t be happy with you creating some new “non-existing” concepts, like basket, wish list and so on. They understand how business works, they don’t need new things, you do.
Everybody needs a model
The truth about the need for those new things is that, they need them more than developers do. At some level of complexity problem and solution is too large for humans to handle, errors will start creeping in. We have compilers to guard our messed up understanding of problem and solution. Big ball of mud or not, you can always make it “work”. But business people don’t have any formal guarding. They may have documents at best.
Your job is very important. You need to help them manage the complexity of their own business, by breaking it into smaller more manageable pieces. And how do you do this? The same way you do with software, by creating abstractions and limiting meaning and behavior of those abstractions. That’s why you have a basket that is editable. That’s why you can create a wish list that cannot be paid for, but can be transformed into multiple baskets for instance and more.
You need to get all the patience and soft skills you can find to do this. Not everybody is comfortable being wrong the same way we developers are. Your ideas won’t always be good. Your ideas, even if good won’t always be welcomed by your business folks. And even if they are, remember one thing: this is just a MODEL and as such it can be usable or not. It can help or not. There is no right or wrong answers.
Summary
This was a revelation for me. And a very liberating one. I thought the problem is with business I’m in but not. The truth is the problem is us, we need to be responsible for our job, and nod expect for it to be done by somebody else.

