Code is collectively owned. Any developer can change any module at any time.
Benefits
- Improved Team Unity: Eliminates factions and hierarchy.
- Reduces Duplication: Shared logic between different modules in the project through shared access.
- Balancing Specialization & Generalization: While specialization increases productivity in a specific area, generalization fosters growth in technical knowledge and team support. Aim for a balance between the two.
Example
A backend specialist may be responsible for a story that requires both frontend and backend changes. Ideally, the backend specialist will have enough general knowledge to solve the task on his own, but if not, he should be paired with a frontend specialist to solve the problem and expand his frontend knowledge. If the task is still too complex or difficult, the next options might be to reassign the task to another developer or get help from the team, and this decision should be made transparently and collaboratively by the team.