At my job I get to work with a lot of developers, each with their own unique personality. Ignoring the obvious differences between front-end and back-end, one grouping I tend to make is that of 'stage-ness', for lack of a better word. There's three of them:
- Startup-ninjas: these guys kick ass at rapid prototyping and getting something up and running in almost no time at all. If you get one of these at the start of a project then you're guaranteed to get funded (or get your project approved). But their useful ends quickly as they tend to make code quality worse on any project that has already been established.
- Masters of structure: they cannot tolerate an imperfect architecture or a solution that has not been refactored to its utmost perfection. Comes with unit tests, integration tests and browser tests of course. A person of this category will make your code better beyond what you could do yourself, but he will also take all the speed out of the project. You'd better be well into maintenance mode before you start considering one of these guys.
- The average joe: completes the picture. Brings speed to structured projects, or structure to a prematurely launched mess. These are the ones you want. Never too slow, never too chaotic. Scales with skill/experience, of course.
As for myself, I'm definitely in the average category. I've taken over startup-y projects that needed structure, and I've stayed on long enough on one project to see myself become villian, eg. to see a structured master take over and add structure beyond what I thought was needed at the time. It's difficult to accept someone else's way over your own, but the least you can do is keep an open mind :)
tl;dr: bringing structure to a project is like doing the dishes; we've all got different tolerance levels.