Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We have a small but growing team at work, and are thinking of doing things differently. We develop websites from scratch and do HTML/CSS/Javascript/PHP/MySQL coding. Currently, we all work on things as they come, and everybody could do either of those things. So everybody in the team has currently several projects assigned, and they could be doing different things, so for one project somebody takes care of the front-end things - mostly Javascript/CSS, and for another site it's the back-end part with mostly PHP/MySQL. The issue is that most in the team have a decent basic understanding of things but are still learning the details. And it seems to take its toll in terms of productivity. I think we could improve this by assigning everybody to just specific tasks (only CSS / Javascript / PHP / MySQL... just one thing at a time). This way:

  • Tasks are clearer for everybody
  • Everybody can better learn one particular thing and not get overwhelmed
  • When mastering one skillset, one can upgrade to the next level
  • Productivity should go up

What do you think?


migration rejected from Jul 14 '15 at 6:18

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by durron597, enderland, MichaelT, Snowman, Ixrec Jul 14 '15 at 6:18

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

Henry Ford would agree. – Till Jun 4 '11 at 1:27
It's the exact same and totally valid basic principle i was talking about and i wasn't being judgmental. But your vanity concerns are duly noted. :) – Till Jun 4 '11 at 1:42

There are tradeoffs.

Team of Specialists: Benefits

  • Faster solutions - Specialists tend to solve problems (in their domain) faster
  • Better solutions - Specialists tend to make better solutions

Team of Specialists: Costs

  • Resource allocation - You may have alot of work for one specialist, and none for the others.
  • Bus factor - You may end up delaying or canceling a project if a specialist with necessary information leaves, gets sick, etc.
  • Information Concentration - Only one person may be able to answer questions regarding a solution/domain.
  • Communication - Communication can suffer when everyone is working on their own problem.

Other Observations

  • Ownership - Teams of specialists tend to lean towards individual ownership. Generalists tend to lean towards group ownership.

Mitigating the Cost of a Generalist Team

  • Consult the specialist - have the specialists consult on the problem
  • Reviews - have the specialist review the solutions
  • Communicate - encourage more communication within the team
There's also the cost of developers not looking beyond their little claim. If you split between SQL and PHP (for example), you'll get PHP developers that use the SQL backend as key/value store, instead of offloading queries to the database. – Patrick Georgi Jun 4 '11 at 7:06