A developers job is really complex, he has to juggle multiple frameworks, keep in mind a collection of classes and functions and then find out why the darn value is being saved in reverse order with every third letter capitalised. Also this bug is a showstopper and has to be fixed by the end of the day or there will be wailing and gnashing of teeth.
Add to this constant interruptions of open plan offices that are currently in vogue, your dog who is currently sick and that thing you’ve been meaning to do but just haven’t had time and I can understand why developers often don’t want to put in the effort to understand another complex system (the business domain).
I used to be like that, I didn’t care if we were selling widgets or providing cute clothes for puppies to wear on cold nights. I focused purely on the code and the problems I was trying to fix. However one day it changed. I always thought of the business domain as something complex and something to only be approached only when absolutely necessary. Until I was sitting having coffee and I heard two people discussing a part of the business that I was writing code for. I was struggling with implementation because it didn’t quiet make sense to me. What I was being asked to do seemed almost counter intuitive. By a complete fluke I was at the right place at the right time and listened intently. After the two analyst finished speaking it was like a globe went of in my head. I knew immediately what I had to do and was done in less than half a day.
Business domains are not that complex. Well they are but only if we want to study the whole thing in fine detail. This is where I think the major breakdown happens. We don’t need to understand every complex scenario inside the business, only the high level and who to ask when we required greater details. Business people often like talking about the business so finding someone willing shouldn’t be to difficult.
If we are working with messages for example you would want to know as much as you can about MDBs, Queues and Topics. However going a step further actually knowing about what the messages represent in real life, what the users of your system will be expecting and where it fits in to the whole scheme of things will make things so much easier when the difficult implementation details come to pass.
Understand how users will interact with your system even if you don’t work on front end code. This will help you see a bigger picture and help you understand what you are solving.
Don’t hobble yourself, business domains are pretty easy to understand on a high level and not a lot of effort when you compare to the large payoff.