architectureproject-management

Structuring a software development team - by specialization or by task?


As a software developer for 6 years, I've had a range of experiences with different teams, from negative to positive.

One of the best experiences I had was in a certain project team at a financial organization.

There were a number of factors that made the project successful, but I think the team structure was a key aspect of it.

To summarize:

I think this worked well because:

Is there a formal term for this kind of team structure? Does it sound like an Agile/SCRUM arrangement?

(It didn't seem entirely planned at the time.)

Any thoughts?


Solution

  • I don't think there is a formal name for that kind of team - other than sensible ! :) To this end I certainly agree with Robert Harvey.

    Every solution will (usually) cover general areas such as UI, BL, Data; you'll also usually cover cross-cutting concerns like logging, deployment packaging, etc; and all of this will be using certain technologies. So, for a team to be appropriate for the project it will need to cover all of those things well - as a start.

    That's the "horizontal"view taken care of, the vertical view (implementing slices of functionality) is where those people need to interact - and that's where XP practices like peer-programming come in, and where cross-training can really start to happen.

    As a contrast to this, you might be interested by the "Surgical Team" approach, as outlined by Frederick Brooks in his famous book "The Mythical Man-Month".

    There's also a link on that page to "Organization and Team Patterns", which might be of interest.