Чтобы дать вам небольшую предысторию: я работаю в компании с примерно двенадцатью разработчиками Ruby on Rails (+/- стажеры). Удаленная работа является распространенным явлением. Наш продукт состоит из двух частей: довольно толстое ядро и рассчитано на крупные клиентские проекты, основанные на нем. Заказчики обычно расширяют ядро. Перезаписи ключевых функций не происходит. Я мог бы добавить, что ядро имеет несколько довольно плохих частей, которые нуждаются в срочной реорганизации. Есть спецификации, но в основном для клиентских проектов. Худшая часть ядра не проверена (не так, как должно быть ...).
Разработчики разделены на две команды, работающие с одним или двумя ПО для каждого спринта. Обычно один клиентский проект строго связан с одной из команд и ПО.
Теперь наша проблема: довольно часто мы ломаем вещи друг друга. Кто-то из команды A расширяет или реорганизует основную функцию Y, вызывая непредвиденные ошибки в одном из клиентских проектов команды B. В основном, изменения не объявляются по командам, поэтому ошибки появляются почти всегда неожиданно. Команда B, включая ПО, считала функцию Y стабильной и не тестировала ее перед выпуском, не подозревая об изменениях.
Как избавиться от этих проблем? Какую «технику объявления» вы можете мне порекомендовать?