My company has adopted scrum two years ago, and I think we have been fairly successful using it. I am currently facing the task of trying to restructure part of our development organization, and I wanted to get some input.
We currently have 3 product teams which are developing web-based, client facing applications. We also have an API team that develops an internal API which the other teams are using. In the coming 2-3 months, the API team's backlog is going to become ever shorter since the team has delivered most of the features required by the product teams. Product teams work is going to continue beyond that point.
Someone will need to continue and support the internal API. This work would include:
- Bug fixes
- Performance enhancements
- New features (only a few are expected)
We are considering a few options of how to restructure the teams to better support this:
- Reduce the size of the API team to match backlog size and needed velocity, and have it continue to support the API as it did before.
- Disband the API team, and embed it's members in the product teams. The API would become a shared resource and all teams would add features and fix bugs as they see fit.
- Leave only a core API team, and embed the other members in the product teams. Product teams would add new features and fix some bugs they care about. Core API team members would implement platform features like performance, instrumentation, etc. They would also do code reviews for product teams, and shepherd any changes made to the API.
I would love to hear any other suggestions we might be missing, and also get some insight based on experience anyone might have had using any of the methods above (good or bad). My goal is to create a structure that reduces cross-team dependencies (and blocks), while still providing some supervision for the API.
Any links to additional reading I should do on this subject is also greatly appreciated.