Two archetypes of engineers: architects and codeslingers.
Architects get joy from making things sound and tidy.
They get joy from taking a messy, hard to understand thing and making it tidy and easy to understand, even boring.
"Look at this clever abstraction I came up with that makes this powerful outcome easy to reason about."
The architect says "What is the most boring way I can accomplish this interesting thing."
The architect uses existing boring frameworks and patterns as much as they can.
The codeslinger gets joy out of inventing something that no one has thought of before.
The codeslinger is a cowboy.
They don't like to do things the boring way.
You need both codeslingers and architects in your codebase.
Codeslingers extend the possibility; architects metabolize the system into something understandable, creating a stable foundation to reach even further from.
If you had only codeslingers, the codebase would quickly descend into a combinatorial quagmire, impossible to maintain let alone extend.
If you had only architects, the system would never add new functionality.
Codeslingers make excellent prototypers.
But beware relying on their code as a foundation to build on.
Their code will be weird, rely on magic only they understand, and be riddled with bugs.
The more experience a codeslinger has as an architect in other contexts–in making boring, production-grade, resilient software–the more likely the code they sling can be used as a foundation.
Never let a codeslinger write a developer-facing abstraction, they'll come up with a weird thing most developers viscerally hate.