Domain Driven Design makes you think about the business
At Domain Driven Design training we’ve been given an exercise to model domains of Allegro (more on what’s that later) and try to mark which ones belong to Core Domain. The modeling phase went quite smooth, but we’ve faced a problem when it came to choose Core Domain of the business. My colleagues and I argued and could not came to conclusion. In hindsight the reason is obvious, but first let me tell you a story.
The biggest alternative on the market is a spinoff made by the same company called OLX with slightly different target. Currently OLX is an actual auction platform where people put their no longer needed stuff for sale. On the other hand Allegro transitioned into a platform for shops and professional merchants and became more of a Internet price comparison engine. Which gets us to the point of Core Domain disagreement we’ve faced during the exercise.
My imagination of modern Allegro was the shopping mall, where convenience and variety of choice is the most important factor. In this case the easiness of finding the right goods, UX of checkout and payment are top priority and Core Domain. My colleagues thought of old school auction platform (that Allegro used to be) where user trust is top priority, so comments and ranks belong to core. The trainer said that we’ve spotted business shift , which results in Core Domain transition as well.
Understanding such business changes its very important, because it changes the system dynamics. In case os such big shift of Core Domain the whole company is affected actually. Personally I wonder how it is reflected in the development and system architecture. I can only guess that new Core Domain becomes the new shiny thing where best people work, starting from scratch and integration with legacy code is done using Anti Corruption Layer.
Overall the DDD training was a great experience. It was well prepared and held, modeling and coding exercises were cool too. The biggest benefit though was how Domain Driven Design approach enabled us, developers, to think in business terms, not technical. That seems to be the biggest advantage of DDD.