Skip to content
José da Cruz

Enterprise Architect, and Life Thinker

José da Cruz

Enterprise Architect, and Life Thinker

architecture

Normalization of Deviance: How ‘It Worked Last Time’ Becomes Your Next Outage

josedacruz, August 11, 2026August 11, 2026

TL;DR: Normalization of deviance is what happens when a team skips a safety step, nothing bad happens, and the skip quietly becomes “how we do things” until it eventually causes a real outage. This is a practical playbook for catching that drift early — name shortcuts out loud, track near…

Continue Reading
architecture

Goodhart’s Law: Why Your Engineering Metrics Stop Working the Moment You Target Them

josedacruz, August 9, 2026August 9, 2026

TL;DR: Any metric you turn into a target stops being a reliable measure, because people (reasonably) start optimizing for the number instead of the thing it was supposed to represent. This is called Goodhart’s Law, and it quietly wrecks engineering metrics all the time. The fix isn’t to stop measuring…

Continue Reading
architecture

How ‘Seen’ Receipts Actually Work: Avoiding the Write Amplification Trap

josedacruz, August 9, 2026August 9, 2026

TL;DR: A “seen” checkmark looks like the simplest feature in a chat app, but the naive way to build it — storing a read flag for every message and every recipient — creates a database write explosion that gets worse as your group chats grow. The fix most real apps…

Continue Reading
architecture

Chesterton’s Fence in Code Reviews: Why You Should Never Delete What You Don’t Understand

josedacruz, August 7, 2026August 7, 2026

TL;DR: When you find a weird piece of code and you don’t know why it’s there, resist the urge to delete it right away. Chesterton’s Fence is a simple rule of thumb: don’t tear down a fence until you understand why someone put it up. In code review, that means…

Continue Reading
architecture

The Meeting Before the Meeting: How Real Architecture Decisions Actually Get Made

josedacruz, August 7, 2026August 7, 2026

TL;DR: Most architecture decisions aren’t actually made in the meeting where they get announced — they’re made in smaller conversations that happen before it. If you only prepare for the official meeting, you’re showing up after the real work is already done. These five rules help you work with that…

Continue Reading
architecture

The Circuit Breaker Pattern: How to Stop One Failing Service from Taking Down Everything Else

josedacruz, August 6, 2026August 6, 2026

TL;DR: A circuit breaker stops your system from calling a service that’s already struggling, so one slow dependency doesn’t drag down everything connected to it. It works by watching for failures, “tripping” to block calls once things get bad, and then carefully testing whether the dependency has recovered before letting…

Continue Reading
architecture

How Distributed Locks Actually Work (And Why They’re Harder Than They Look)

josedacruz, August 5, 2026August 5, 2026

TL;DR: A distributed lock stops two servers from doing the same risky thing at the same time, like selling the last concert ticket twice. The tricky part isn’t getting the lock — it’s what happens if the worker holding it crashes, freezes, or runs slower than expected. Get the timeout…

Continue Reading
architecture

Why Nobody Wants to Own the Shared Library (And What It Costs You)

josedacruz, August 4, 2026August 4, 2026

TL;DR: Shared libraries usually start with good intentions: one team pulls duplicate code into a common package so everyone benefits. The problem is nobody assigns a permanent owner, so when the original team moves on, the library keeps running but nobody is responsible for fixing it. This piece walks through…

Continue Reading
architecture

The Rule of Three: A Practical Heuristic for When to Actually Build That Abstraction

josedacruz, August 3, 2026August 3, 2026

Every developer has felt this itch: you copy a chunk of code for the second time, and something in your brain screams “this is wrong, I should make this reusable.” So you stop, build a shared function or class, and wire everything to use it. Sometimes that’s a great move….

Continue Reading
architecture

Reinforcing vs. Balancing Feedback Loops: Why Retries Can Make an Outage Worse

josedacruz, August 3, 2026August 3, 2026

You get paged at 2am. A payment service is running slow. You watch the dashboard, and something strange happens: the more you look at it, the worse it gets. Error rates climb. Latency climbs. Then, ten minutes after the first alert, the whole checkout system goes down — not because…

Continue Reading
  • Previous
  • 1
  • …
  • 3
  • 4
  • 5
  • …
  • 25
  • Next
  • architecture (156)
  • artificial-intelligence (6)
  • books (2)
  • courses (4)
  • decision-frameworks (4)
  • finances (1)
  • java (8)
  • life-improvement (20)
  • metrics (3)
  • observability (2)
  • puzzles and challenges (3)
  • reviews (1)
  • security (8)
  • spring-boot (36)
  • Systems Thinking (3)
  • Essential Reading: Domain-Driven Design — Taming Complexity With a Shared Language
  • GitHub Weekly: 10 Rising Stars You Haven’t Heard Of Yet (October 5 – October 11, 2026)
  • GitHub Weekly: MCP Tools Trending Right Now (September 28 – October 4, 2026)
  • The Bulkhead Pattern: Why One Slow Dependency Shouldn’t Sink the Whole Ship
  • Essential Reading: A Philosophy of Software Design — Fighting Complexity One Module at a Time
©2026 José da Cruz | WordPress Theme by SuperbThemes