Posts Tagged ‘domain driven design’

Designing Applications in a Vacuum (don’t do it)

Throughout my career as a software engineer/consultant, I’ve run across many passionate arguments for software development methodologies. I can’t count the times I’ve been in a room with very loud discussions about placing business logic in code or in stored procedures. I think it’s safe to say that the coders won this argument and I don’t hear these discussions anymore.

There have been others….Java vs. .NET, Fat Client vs. Web, SQL Server vs. MySQL, OO vs. Procedural and so on.

There is one I’ve hear recently that’s relatively old (10 years) that has some traction, but I don’t think it’s by any means a standard. This is Eric Evans’ Domain Driven Design philosophy (there’s a book on it). Admittedly, I’ve built many systems starting from the data model and more recently looked at API First. I’ve often developer object models and domain models as a part of my process, but I never really focused on that aspect as a required first step.

With the prevalence of web applications and specifically REST, Web API, and AJAX oriented implementations, I think I’ve come to a working conclusion. None of these are starting points (API, Domain, Data). They are deliverables.

You may work between each of these deliverables as you design an application, but you will learn something different and come up with different questions when you touch each area of design.

When you touch the domain, you’ll be asking resource and behavior questions. When you touch the API, you’ll be asking extensibility and shared service questions. When you touch the data model, you’ll be asking questions about reporting, atomic transactions, and performance.

These are all very important questions and by starting at a single point, you could potentially ignore important questions and thus, important design decisions.