Member-only story
We’re Paid to Keep Software Simple. We’re Hired for Knowing Complicated Things.
Resume-driven development is easy to criticise. The incentives behind overengineering are harder to ignore.
Try putting “decided we didn’t need Kafka” on your résumé.
You might have made exactly the right call. The existing database handled the workload. The team avoided another system to deploy, monitor and understand. The feature shipped, and nobody had to spend the following month debugging message delivery.
Now compare that with “designed an event-driven architecture using Kafka.”
One gives you a recognisable technology and a substantial-sounding project. The other needs a conversation before anyone understands what you contributed.
That bothers me. We tell developers that good software engineering is about choosing the simplest solution that meets the requirements. Then we ask them to demonstrate experience with increasingly elaborate systems when they want their next job.
And when those incentives influence what they build, we call it overengineering.
The simple solution has to explain itself
Consider a small application maintained by a few developers. It needs authentication, a database, a handful of…








