Stop Modeling Everything as CRUD. Task-Driven isn't always the answer either. Ask: What is the user trying to accomplish?
Multi-Tenant "Best Practices" often hide trade-offs. Where complexity really goes when using tenant context, shared databases, filtering, and feature flags.
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.
Event driven architecture doesn't mean you aren't coupled. Especially when your events are really just database changes being broadcast over a message broker.
I keep reading this is "REST". This isn't going "back to REST". It's going stateless. Which REST is, but devs think of REST as JSON over HTTP and forget everything else. I feel like we're in a world that's about to reinvent a ton of shit.
Replying to @ClaudeDevs
Before, running a remote MCP server meant managing session state, which limited where you could run it.
Now that MCP is stateless, you can deploy on serverless and edge infrastructure, or scale horizontally behind any load balancer.
The worst enterprise software decisions often look like "best practices". Here are 5 architecture decisions that create complexity, coupling, and systems nobody can safely change.





