I get to deal with a lot of developers and a lot of different teams being an architect (yeah, I just run around like a headless chicken). There is one thing that I have been noticing over the years and that’s what this is about.

Great teams and good developers create what is required for a task/story and nothing more. That doesn’t mean they just put some random shit together. No, they create simple thing with high quality.
Creating simple solutions to difficult problems is what developers who has confidence and skill do. It takes cojones to pick apart something complex and make it into simple and elegant solutions.

Now, teams and developers who are less sure of them selves and doubt their own ability (or who are less competent) tends to create complex, over engineered stuff. They produce it with an insane amount of code with low quality. These solutions tends to be hard to maintain and impossible to extend. Which leads to the team rewriting from scratch if you need to extend or change anything.