Architecture – Code ownership with multiple Scrum teams

Architecturecode-qualityconfiguration-managementscrum

If two Scrum teams use the same software component, who is responsible for providing a clear architectural vision of that component and maintain/develop this vision as the code base evolves? In Scrum you are supposed to have a collective code ownership, so how to make sure that development done by Team A doesn't interfere with development done by Team B?

Best Answer

I am not a Scrum expert, but AFAIK "collective code ownership" is meant to be per team and per product (and I think your question is not specific to Scrum, it could be applied to any "shared code" development process).

If you have two teams A, B, two products A, B and a shared component C, there are different possible scenarios. Maybe the shared component belongs primarily to product A (and is just reused, but not evolved, by the team for product B). In this situation team A is clearly responsible for the architectural vision. Or vice versa: it belongs clearly to product B - so the responsibility is there. If team A is responsible, team B might use a fork of the component to allow urgent bugfixes (there should also be a way to reintegrate them into the main line of C), but B should avoid doing any bigger evolvement of the component.

However, if both products A and B have a lot of "driving requirements" for C, you should manage C as a completely separate product, with own versioning, release management, change management, unit tests etc, and an separate team which has the responsibility for that component. That team could be just a "virtual team", consisting of separate devs from team A, B or both. This team has the "shared code ownership" for C, and the responsibility for the "architectural vision". Just think of C beeing a component delivered by a third-party vendor.

Related Topic