Skip to content

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


Follow @CodeOpinion

Software Design

HELP! My system is a spaghetti code mess.

If you’re frustrated working in a large spaghetti code system that’s hard to change and easy to introduce bugs, you’ve probably wanted to rewrite everything from scratch. The reality is that’s not likely going to happen. However, here’s how you can think about untangling the spaghetti code mess in smaller chunks one at a time, making it more manageable. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. Spaghetti code People often refer to a spaghetti code when It has a lot of concerns intertwined, and because… Read More »HELP! My system is a spaghetti code mess.

Aggregate (DDD) isn’t hierarchy & relationships

How do you design an aggregate in domain-driven design? An aggregate in a cluster of related objects and used to manage the complexity of business rules and data consistency. Designing aggregates often incorrectly because of the focus on the relationship between entities. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. Relationships I believe most developers designing aggregates are thinking about data, hierarchy & relationships. As an example, here’s an aggregate diagramed by its relationships. It has an entity that is the Aggregate Root which any consuming… Read More »Aggregate (DDD) isn’t hierarchy & relationships

Building a system that Junior Developers can be productive in

How do you get junior developers or someone new up and being productive within your system? Never mind domain knowledge. There is a lot of technical tribal knowledge about how you handle logging, persistence, validation, and various patterns and practices you apply within your specific systems architecture. Here’s how I think about it by creating silos. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. Coupling In a simplistic view, you might think you have a web application or HTTP API with a controller that invokes a… Read More »Building a system that Junior Developers can be productive in