At Shape, Domain Driven Design underpins how we think about building software. It’s more than an approach to building software, though. It’s a way of thinking about complex systems. That’s why when you meet with us to discuss your app ideas, long before we start talking about colour schemes and fonts, we need to understand the domain – the problem space which your app is going to serve.
This includes everything from understanding what the problem is that you need to solve, all the way to the component parts and the rules that govern them. For example, you want an app that helps you manage your restaurant efficiently. The domain is going to include menus, orders,tables, reservations and staff, along with the rules that tie them all together. Orders can only be placed for items on the menu, a table can only be reserved if it’s free at a particular time, thekitchen can only accept so many orders at once, etc. These rules aren’t just technical details, they’re fundamental to how your business operates.
Learning how all the parts of your business interact is how we develop an understanding of what you need out of your software, making sure the software supports your business, rather than forcing the business to change around the software.
If you talk to us in terms of “tables”, “reservations”, and “bookings”, those ideas need to exist in the code we write, and we need to be able to understand them. When we speak a commonlanguage – the language of your business, it keeps confusion down, and makes everything we do more productive. Because the software is built around the concepts that you and your business understand, you don’t need to translate ideas and concepts into “developer speak”. Our job is to understand you. You tell us what your business needs, and we’ll take it from there.
Getting a thorough understanding of the domain helps us avoid a very common issue in development: building features that look impressive, but just don’t solve the right problem. No amount of elegant design or optimised performance will help you keep track of your orders withthe local fishmonger. By keeping the design grounded in how your business operates day-to-day, we’ll make sure that your app stays focused and relevant to you.
Like all good businesses, your restaurant is only going to grow, and your app needs to need to grow with it. New rules, exceptions and workflows develop naturally over time. Without a solid foundation, your app can become fragile, and increasingly difficult to change or extend, until eventually you find yourself working around it, rather than it working for you.
Domain Driven Design helps us build that growth in naturally from the ground up. Instead of making additions feel bolted on, new features can be added without the worry of breaking existing functionality, because the core business ideas are already clearly defined.
In the long run, Domain Driven Design keeps your software adaptable. Prices change, regulations shift, and your customers’ expectations grow. Adapting to these changes quickly is crucial for your business, and software that was built around a clear understanding of yourdomain makes that possible.
Ultimately, domain driven design helps us help you, by building software that fits your business, speaks your language, and grows with you. So, why not book a chat with us, and ask us what we can do for your business?