Microservices were a mistake. Not the concept itself, which has legitimate uses at genuine scale. The mistake was convincing an entire generation of developers that their CRUD app needed to be split into 47 independently deployable services communicating over a message bus designed by someone who watched one too many conference talks.
I said what I said. Come at me.
Netflix ruined everything This is Netflix’s fault. Not intentionally. They shared how they solved their genuinely massive scale problems, and the rest of the industry collectively lost its mind.
I have lived through a few waves of tooling changes. If you write software long enough you get comfortable with the ground moving under your feet. The latest shift is vibecoding: pointing a capable model in roughly the right direction and steering it with context, examples, and taste. Tools like Claude Code, Codex CLI, and Gemini Code make that feel effortless. This post is less about what the tools are doing and more about how to use them without losing your engineering brain.
I write code for a living, but more and more I feel like my job is designing systems. Some of those systems include code I type. Some include services, models and tools that I orchestrate. The biggest shift is mental: stop thinking in files and start thinking in flows, boundaries, feedback and failure. If you have solid fundamentals, this moment can multiply your impact. If you treat every new tool like magic, it will waste your time and your client’s money.