> It is not done by those programmers who struggle to get anything done
I've had a different experience. When I see programmers over-engineering, it is often because they would struggle to work on something that mattered.
Instead of taking on the next big feature that would make a difference to the company, they try to redesign some schema, because they've redesigned schemas before. What's more, if someone asks them what they're doing, they can hand-wave and make it sound complicated and important, and the poor non-technical managers have no choice but to believe them and let them go on not doing anything important that might challenge them.
I've had a different experience. When I see programmers over-engineering, it is often because they would struggle to work on something that mattered.
Instead of taking on the next big feature that would make a difference to the company, they try to redesign some schema, because they've redesigned schemas before. What's more, if someone asks them what they're doing, they can hand-wave and make it sound complicated and important, and the poor non-technical managers have no choice but to believe them and let them go on not doing anything important that might challenge them.