Dahlia Bock

6Aug/092

Why I think layer teams are a bad idea

So what exactly do I mean by 'layer teams'? I mean structuring your software development team in such a way that you have a group of developers for each layer (or more), e.g. UI, services, database, etc. So a UI developer is only concerned about one specific part of the application, namely the UI, obviously, and the Services developer with the services, and so on and so forth.

Problems that I've seen surfacing from such a setup:

  1. There's an enormous amount of overhead time spent going back and forth between the different groups when defining interfaces. Maybe it's the nature of the teams I've worked with in the past but IMHO this extra time could be spent writing tests that iron out the interactions between the layers.
  2. Then there's another chunk of time spent putting those pieces together and making sure they work correctly, i.e. integration.
  3. This causes silos in the development team where only some people know about the UI, others about the back-end services, etc. This discourages developers to step outside their comfort zone to learn another person's 'trade'.
  4. Update >>> Introducing specialized teams also increases the amount of distrust between the teams. One example is the database management team holding on to the schema and data for dear life and believing that no developer should have access to change it. Maybe this is common situation across a lot of projects regardless of team setup, but separating the team does decrease their level of trust for each other.

What I think is better is to have every developer comfortable with every part of the application, even if it means taking a productivity hit - as I've heard it being said. Let's say I have a story on the wall that says: "Add item to shopping cart". Ideally, a pair of developers would start first by working with the QA to define acceptance criteria and writing the acceptance tests for that feature. (This is a side note to a session at Agile 2009 that I'm very interested in: Where Does Developer Testing End and Tester Testing Begin?. I wish I was able to go.) Then they would implement what is needed to be able to click through on the application to add an item to the shopping cart which eventually ends up in the database.

Comments (2) Trackbacks (3)
  1. And another problem I see is that people in their own silos might develop the “I don’t care” behaviour which is bad for the project team morale. Not every ‘sub’ team share the project pain.

  2. Here at Locaweb (Brazilian Web Hosting company), we use the term Feature Team (FT) and decided to go one step further. Not only developers should take care of entire development cycle but, in the same FT we have people from operations and from customer care, so developers are constantly aware of the consequences of what they put in production environment.

    Our inspiration came from Larman Vodde’s Feature Team chapter featured at infoq.com:

    http://www.infoq.com/resource/articles/scaling-lean-agile-feature-teams/en/resources/Larman%20Vodde%20Feature%20Teams%20-%20InfoQ.pdf

    “In lean thinking, minimizing the wastes of handoff, waiting, WIP, information scatter, and underutilized people is critical; cross-functional cross-component feature teams are a powerful lean solution to
    reduce these wastes.”


Leave a comment

(required)