In the 60s and 70s, Harlan Mills of IBM promoted the idea of Lead Programmer teams, which he compared to a surgical team -- a highly trained and talented individual as the person who was actually "hands on the patient" and who was, in turn, supported by others who provided him or her with tools and routine procedures. He contrasted this structure with the more common non-hierarchical structure in which everyone was assumed to be more-or-less equal in talent and duties (his loaded metaphor for the latter structure was a "hog-butchering team").
The Lead Programmer structure seems to rest on the belief that there is a great disparity in the potential contribution of team members and that the benefits of restricting the influence of relatively inexperienced or untried developers outweighed the potential benefits of what we'd now call collective code ownership.
Lead Programmer teams were studied, a little, and didn't seem to show clear benefit. They fell out of favor and today "Lead Programmer" generally just indicates seniority, not structural responsibilities. Today, with a culture more attuned to the Agile Manifesto, the very idea of a structural hierarchy within the development team is probably distasteful to many. On the other hand, the development industry is far more heterogeneous than it was in the early 1970s and I think that there may well be a greater gap in potential contribution between team members, especially when working with distributed teams or teams involving both part-time and full-time workers.
Have you worked on a team with a Lead Programmer-style hierarchy? If so, was it effective?
While this question obviously relates to general questions of how talent is distributed and whether meritocracies are good or bad, I'm hoping to hear experiences, whether good or bad, with those who've actually tried the Lead Programmer structure.