Complexity (2 blogmarks)
← BlogmarksNobody Gets Promoted for Simplicity
https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/Incredible opening quote from Dijkstra:
Simplicity is a great virtue, but it requires hard work to achieve and education to appreciate. And to make matters worse, complexity sells better. --Edsger Dijkstra
It's easier to make a compelling narrative about a complexly architected, "robust" system that is super scalable. It's harder to have much to say about unrealized complexity avoided by a simpler solution.
Her work was better. But it’s invisible because of how simple she made it look. You can’t write a compelling narrative about the thing you didn’t build. Nobody gets promoted for the complexity they avoided.
Complexity is unavoidable at times. A frequent dichotomy I see is inherent versus accidental complexity. The author gets at a different distinction -- unearned complexity.
The issue isn’t complexity itself. It’s unearned complexity. There’s a difference between “we’re hitting database limits and need to shard” and “we might hit database limits in three years, so let’s shard now.”
Part of the solution here is to be careful about rewarding complexity institutionally as well as publicly and socially:
One more thing: pay attention to what you celebrate publicly. If every shout-out in your team channel is for the big, complex project, that’s what people will optimize for. Start recognizing the engineer who deleted code. The one who said “we don’t need this yet” and was right.
Squeeze the hell out of the system you have, by Dan Slimmon
https://blog.danslimmon.com/2023/08/11/squeeze-the-hell-out-of-the-system-you-have/This article is great because it gets at the higher-level thinking that engineering leads and CTOs need to bring to the table when your team is making high-impact technical decisions.
Anyone who has been in the industry a bit can throw around the pithy phrases we use to sway approval toward the decision we're pitching, e.g. "micro-services allow us to use the right tool for the job".
That can be a compelling argument alone if the stakes are low or we're not paying attention.
The higher-level thinking that needs to come in looks beyond the lists of Pros that we can make for any reasonable item that is put forward.
We have to have an understanding of tradeoffs and a more holistic sense of the costs.
But don’t just consider the implementation cost. The real cost of increased complexity – often the much larger cost – is attention.
The attention cost is an ongoing cost.
[Clever solution that adds complexity] complicates every subsequent technical decision.
Squeeze what you can out of the system, buying time, until you have to make a concession to complexity.
When complexity leaps are on the table, there’s usually also an opportunity to squeeze some extra juice out of the system you have.
because we squeezed first, we get to keep working with the most boring system possible.