Skip to content

Sponsor: Using RabbitMQ or Azure Service Bus in your .NET systems? Well, you could just use their SDKs and roll your own serialization, routing, outbox, retries, and telemetry. I mean, seriously, how hard could it be?

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

CRUD APIs are Poor Design

I’m convinced that CRUD APIs and CRUD-driven systems—meaning systems built around Create, Read, Update, and Delete operations—are, in the long run, the hardest to change and evolve. This might sound unintuitive at first, especially since many of us have read blog posts, watched videos, or taken courses on building HTTP APIs under the guise of REST. But often, what we’re really doing is just CRUD-driven development over a database record using HTTP methods and JSON. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. Beyond CRUD Ultimately,… Read More »CRUD APIs are Poor Design

DTOs & Mapping : The Good, The Bad, And The Excessive

Something that’s often overused, misunderstood, or just incorrectly applied in software development: Data Transfer Objects (DTOs). DTOs are a common pattern, but like many things in software, they tend to get used in places where they don’t actually solve the problem at hand. So, what are DTOs really for? When should you use them? And when are they just extra work with no real benefit? Let’s dig in. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. What Are Data Transfer Objects (DTOs)? First, let’s start with… Read More »DTOs & Mapping : The Good, The Bad, And The Excessive

Do you really need that abstraction or generic code? (YAGNI)

You Aren’t Gonna Need It. The essence of YAGNI is simple: don’t build something today that you assume you’ll need in the future. However, there’s a nuance here because we also don’t want to handcuff ourselves. Let’s explore how this principle applies both to features and technical implementation. YouTube Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post. The Two Sides of YAGNI First, let’s break down how people often think about YAGNI. On one hand, there’s the feature side. When developing a product, you might think you’ll… Read More »Do you really need that abstraction or generic code? (YAGNI)