Коллективное владение кодом
Коллективное владение кодом поощряет вклад каждого участника на всех участках кода. Любой разработчик может изменить любую часть кода для добавления функционала, исправления ошибок или рефакторинга. «Фактор автобуса» сводится к нулю, а при планировании нагрузка может распределяться равномернее.
Отсутствие ведущего архитектора, отвечающего за проектирование решений, может показаться невозможным. Но зачастую, если задать такому архитектору вопрос о работе системы, можно получить неверный ответ. Это не его вина: ни одна нетривиальная система не может уместиться в голове одного человека. Помимо этого разработчики часто вносят изменения, не опираясь на видение архитектора. Проектирование решений уже распределено между участниками команды, поэтому, помимо ответственности, следует наделить их полномочиями.
Для реализации такого процесса разработчики должны покрывать свой код unit-тестами по мере его разработки. Любые изменения, включая новый функционал, исправление ошибок и рефакторинг, проходят существующий набор тестов перед релизом.
Таким образом, любой разработчик при необходимости может внести изменения в любой метод любого класса и интегрировать эти изменения.
Коллективное владение кодом более надёжно, чем назначение отдельных ответственных за отдельные участки кода, особенно с учётом того, что такой ответственный может покинуть проект в любой момент.