People here are arguing the semantics of what you mean by “smart”, for no reason, because I know exactly the type of person you are talking about and they likely do as well. I call them “twitchy smart”, and I think they’re the worst to work with. In my experience, there’s no hope working with people like this because there is usually a strong case of stubbornness and unwillingness to see things from the other side. I have literally had to write code that automated cleaning up a person’s, who was like this, code because they were incapable of slowing down and doing it themselves.
My thoughts are that they need strong management to exert a lot of control and to come up with various ways of slowing them down and automated systems to gate check their code as much as possible (style guides, linting, static code analysis, tests and test coverage, auto-formatters, etc.). Otherwise, I think most people like this are just not worth having on a team because they aren’t interested in being part of a team and just want to solve problems they think are important. They will go off inventing all sorts of stuff, leaving a massive wake for the rest of the team. I also call them “wake makers”.
My thoughts are that they need strong management to exert a lot of control and to come up with various ways of slowing them down and automated systems to gate check their code as much as possible (style guides, linting, static code analysis, tests and test coverage, auto-formatters, etc.). Otherwise, I think most people like this are just not worth having on a team because they aren’t interested in being part of a team and just want to solve problems they think are important. They will go off inventing all sorts of stuff, leaving a massive wake for the rest of the team. I also call them “wake makers”.