Do you know any software craftsmanship practitioners who got fascinated by DDD? By its cleaniness, simplicity or completeness? People who have found the way proposed by Evans their missing tool for describing complex domains in a simple way? I know quite a few & I believe you do as well.
Where are these DDDers?
But how many of those people do actually apply these practices of DDD on the daily basis? I mean really do apply, not "just adapt some elements we've found possible in our case". Surprisingly few in my case. In yours as well? I'm not shocked, even if we keep in mind that we're actually speaking about technology-agnostic method that has quite a few "hard" restrictions & limitations (in theory, but let's not get ahead of ourselves ...)
Small number of real & factual DDD practitioners is not a big surprise & we tend to blame the usual suspects:
- legacy we're building upon (in all brownfield-ish scenarios)
- written requirements we get, instead of an opportunity to directly collaborate with domain experts
- business peeps who prefer to think with solutions ("I want a button here ...") instead of business value to be gained / business-related problems to be solved
And to be honest - these are valid excuses. I'm not saying that nothing can be done (oh, it's far from truth), but it's not that easy to overcome these show-stoppers. However, I've got bad news - once you do overcome them, there are several more trapdoors ahead on your path. I have one particular on my mind - I've already had an intention to elaborate on it some time ago, but somehow I had a problem with expressing it in a clear enough, concise form. Fortunately, Cyrille Martraire did it for me (& you) in such a striking way (quoted here by A. Brandolini):
Tattoo that. #DDDEU @cyriux pic.twitter.com/sCgISGadrw
— Alberto Brandolini (@ziobrando) January 29, 2016
I couldn't state it better. Bulls-eye.
Core Domain ... doesn't matter?
Imagine approaching an expert you finally are going to have face-time with. A legend across whole (client) company. Dude(ess) that knows everything (domain-wise) you need. Great Definer. As omniscient as elusive (until now). All of that effort just to find out that ...
- all this person knows is how to parameterize / operate legacy domain-related application(s)
- this person's value is based on uniqueness of this knowledge (applications are that ancient that there's no support, manuals, etc.)
- for whole company all the domain knowledge is equivalent to the the way an application operates ... (& it's very, very hard to convince them that it's the harness they've put voluntarily on themselves)
Sadly it's the case in many, many large enterprises. It's barely a problem if it applies for generic / auxiliary domain, but what if it does for core domain?
Then you're screwed (as an ambitious IT person).
Quite likely this company doesn't succeed because it has better ideas / understands its core domain better. Nor because it's able to learn from experiments & evolve faster. It isn't more reflexive, neither has a better understanding of the market. None of those things - it's just better at operations (execution) & current market situation may be favoring them. This company doesn't care much about being awesome in its domain - there are far easier means to stay ahead of the competition:
- clients are prone to basic marketing tricks, their overall education level / product awareness is low
- market saturation is still relatively low (there's space to grow)
- competition has proved itself being decrepit, incompetent and / or unimaginative
- etc.
This domain doesn't need IT excellence to succeed - yes, it could (quite likely) improve tangible results a lot, but it'd be far too expensive, risky and it requires a lot of focus / skills / investments up-front (without any guarantee of success). Just look around - making the real difference & getting ahead of competition thanks to IT services is still very, very uncommon ;/ In many, many, more conservative industries, like financial services (banking, insurance), transport or even (to some degree) retail.
It may look different once you have to create something from scratch, but let's be honest - in well established Enterprise it doesn't happen every second day. And if it happens, it's usually for some auxiliary domain (so quite likely it should be rather bought off the shelf).
Sport for unicorns
That's the real reason why IT-driven start-ups are so alluring, attractive & ... tempting. They are meant to be disruptive - they don't want to make the same business the usual way, but to introduce something new & breakthrough-ish. To make users feel cool about they way they use their service / product. In their cases - Domain REALLY MATTERS, they want to suck it dry as much as possible, because due to starting at low (zero?) altitude they fight for survival by differentiating themselves.
Sorry for all you corporate dudes ;/ Sorry for myself as well ;//
Pic: © Sergey Nivens - Fotolia.com