Pinned Tweet
Random reminder that I have a YouTube channel where I post videos about software architecture and design. Usually in the 10 min range trying be concise as possible. If you enjoy please share. Have suggestions? Please let me know.
youtube.com/@codeopinion
Derek Comartin retweeted
It's such a strange time to be a programmer. In a two-minute span it's "DDD and domain modeling generally are more important than ever" then "reading code is a waste of time, just let the agents manage it" then "classical software design principles are what matter." Please help.
Derek Comartin retweeted
So…are you updating data or performing an action? codeopinion.com/crud-vs-task…
Derek Comartin retweeted
CRUD vs Task Driven - codeopinion.com/crud-vs-task…
Stop Modeling Everything as CRUD. Task-Driven isn't always the answer either. Ask: What is the user trying to accomplish?
"design patterns don't matter because AI writes code" is like saying "architectural blueprints don't matter because power tools cut wood faster."
Ex: architectural (distributed, messaging) patterns like say a claim check or cache aside, do you need them? Depends on the context. But you can't say you do or don't unless you know what they are and the trade-offs. Otherwise you're just offloading decisions.
A recent example of this was pulling some metrics for a dashboard. The query made sense but was it efficient? Depends on the DB, amount of data, indexes, etc. Cache aside could be useful for partial values of the data set for historical data with a short expiry. But a cache would be more moving parts and complexity. Did the agent just magically decide it should use a partial cache or not? Are we deferring that answer to it without even any of that understanding? The answer can be yes, but it sure better have all the context to make that decision. But who is accountable?
Derek Comartin retweeted
Multi-Tenant Best Practices can Backfire - codeopinion.com/multi-tenant… @codeopinion
Derek Comartin retweeted
Replying to @raimeyuu
Ask a model to build out a public http API. It will be horrific to you. Why? Because is doing what it's told. You need to tell it how to handle your resource model, conventions, consistency, rate limiting, etc. None of this is "best practice" or a default, it's specific to your context that you need to define. And if you don't to ask you're left with, for example, a resource model that leaks your data model, that you can't change.
Derek Comartin retweeted
Alan K. said what was important: the messages in between the objects; that always been the tricky part ...
The older I get, the less I care about algorithms, data structures, and programming languages. Ai accelerated that.
Most algorithms, data structures, and programming languages are render trivial given that you understand the data, information and messaging between your components.
That is also why, sometimes, it is better to hire somebody with the domain knowledge than somebody that is purely very good at programming.
One of them is too expensive to get it wrong, and I testify this by the only failure in my entire career that I attribute to myself alone, and, it was not a problem of hard programming skills, but the fact I was not fast enough to discover all edge cases around the data.
The wisdom to avoid dead ends, and what NOT to do, comes from the understanding of the data in most contexts.
Multi-Tenant "Best Practices" often hide trade-offs. Where complexity really goes when using tenant context, shared databases, filtering, and feature flags.
Derek Comartin retweeted
Avoid API Breaking Changes - codeopinion.com/avoid-api-br… @codeopinion
A lot of software architecture and design is really just about where you want the coupling to live and the trade-offs around it. Yet I seemingly almost never hear people explicitly saying that's what's going on. I genuinely think that if people acknowledged that, the decisions would be much easier to make.
Derek Comartin retweeted
Good integration events don't just announce that data changed. They communicate a meaningful business event to other systems. Integration events are part of your public API. Design them deliberately. codeopinion.com/domain-event…
Derek Comartin retweeted
Domain Events are NOT your Public API - codeopinion.com/domain-event… @codeopinion
I keep seeing this take. The "abstraction is going up a layer" is a weak argument because an abstraction layer gives you a _stable_ contract. AI can let you operate with less detail locally (which is awesome), but calling it a new abstraction layer, as if it were a compiler, when it's a non-deterministic collaborator... no.
Replying to @android_I_AM
“If you don’t know assembly and machine code, why should you be hired to maintain C?”
We’re on a new abstraction layer now.
But I’m not even saying I don’t know the underlying language, I do. And if I need to drill down on something, the AI can walk me through it on the spot.
Brain dump:
Tests and evals can only validate the things you thought to test. Not what you didn't. I’m skeptical that we can stop reviewing code and just evaluate outcomes.
Looking at the implementation can reveal things you never thought to write an eval for: bad assumptions, unintended behavior, coupling... all could pass but still be "not good".
Reviewing the code is one way you discover what you didn’t know.
Again, just a brain dump...
Don't expose internal domain events across service boundaries. When you treat domain events as your public integration contracts, you couple consumers to your internal domain model and workflows, leading to breaking changes and a fragile system that's hard to change.
Derek Comartin retweeted
If you’re using event driven architecture and asynchronous messaging, you need to be clear about what you’re actually doing. You’re not necessarily decoupled just because you removed direct synchronous calls. codeopinion.com/event-driven…
Derek Comartin retweeted
Event-driven architecture promises loose coupling, but are you actually decoupled? @codeopinion on the hidden temporal, semantic, and behavioral coupling that survives even after you add a message bus. #eventdriven #distributedsystems codeopinion.com/event-driven…
Derek Comartin retweeted
Are you just shipping a CRUD API over pub/sub messaging and calling yourself "event-driven"?
@codeopinion has a good post about modeling events around business concepts and behaviors.
codeopinion.com/event-driven…









