I have worked with many programmers through several projects. These projects vary from school projects to projects abroad, or projects within companies. Through all these different groups and teams, I found the "programmer" easiest to identify by type. I think when starting up teams as a producer, its essential to know the different "types" you are working with, especially programmers, since they are doing a very important job. No disrespect to game designers, audio guys or artists, but programmers are like the drummer of a band. The engine of the team. If they stop working, well what do we have? Nothing.
I think I found four types to roughly label each programmer. I will also tell you what type I prefer to work with, and why that is.
The Lazy Jackass
This type is useless. These programmers do not have great knowledge about programming or have the motivation or energy to do something about that. I can be short about this type. Usually these programmers will end up being kicked out of a team, or are leeching on programmers that do know their way around code. Above all they will block the project flow.
The Laborious Struggler
Programmers like this are really useful. Just not as an individual (Lead Programmer). These programmers are willing to do everything and spend as much time they can. They are just not skilled enough to execute everything. Its great to work with them on small parts of the game. Stuff that is not too complex. They are also eager to learn so they work best with other programmers beside them.
The Stubborn Genius
I think a lot programmers wear this label. These stubborn creatures are hard to work with in teams. They know exactly how stuff is done and don't want to change anything about that. This type feeds on facts and conviction. You can not just walk by and drop a task on their desk. They will set-up a fierce fight against you. As a producer, you have to be armed with a lot of patience. Eventually when the convincing part is over and you get them to work for you, they will create the most astonishing things. It would take a great man to convince them doing something they do not agree on. You can compare this to an act of god, figurally speaking.
The Peaceful Pro
This is my favorite type. Its a rare type of programmer. You won't find much of these programmers, at least I didn't. This programmer is a great listener and knows its way around code better than anyone. If they do not agree on something, they will give constructive feedback, something I as a producer can do a lot with. The process with these programmers is immense. I never finished a product with other programmers this fast. Also the products accuracy compared to the concept is mind blowing. If you find someone like this, cherish them! Or send them straight to me.
In short, identifying types beforehand is greatly advised. Every programmer besides the "Lazy Jackass" is useful in a team. As a producer you have to fit them in a position where they are most useful and keep them there. Some of them need to be kept on a short leash and some of them can move more freely in the process. You could say that a team of Peaceful Pro's would be ideal, but having a Stubborn type on board can be an eyeopener on certain aspects, for example it prevents "one direction thinking", and it doesn't get boring.
To end my story with a point of advise to the Lazy Jackasses:
"Stop what you are doing, your talent lies somewhere else"