Некоторые вещи изначально спроектированы так, что их потом невозможно переделать. При этом они на долгой дистанции всё более отрицательно влияют на продукт или на разработку. А невозможно это переделать либо потому что в голову никому не приходит (процессов не было и нет), либо потому что технически уже невозможно.
Самая очевидная из таких вещей - аналитика. Нет такого, что задачи добавить отправку событий на новые фичи у нас есть, а о задаче удалять ненужные никто никогда не задумывается? И приложение у нас посылает сотни запросов, обычно ещё и к нескольким сервисам аналитики на всякий случай, даже для тех событий которые можно было давно удалить.
Удалённые конфиги. Например динамическая мапа со строками на бэкенде или фича-тогглы от фаербейса. Тоже самое. Вы в момент бизнесовой необходимости добавляете новый пункт в конфиг, на стороне приложения появляется захардкоженный ключ. И всё. Вам теперь после релиза придётся этот ключ в конфиге держать очень долго, потому что иначе у юзеров что-то сломается на этих старых версиях. И эти конфиги на тысячи key-value пар потом ходят к юзерам.
Или диплинки. Их кто-то когда-то заводит, но никто не удаляет. Потому что хрен ты знаешь какие из них условная команда маркетинга захочет в следующих рассылках применить. Доходит до смешного, когда единственный способ попасть на какие-то забытые экраны - это забытые диплинки.
А суть проблемы как будто бы в том, что у таких "динамических" вещей почти никогда нет понятных хозяев, как и нет единого источника правды. Логикой владеют условные продакты и аналитики, кодом владеют разработчики. Сущности созданы на обеих сторонах, а используют вообще непредсказуемо на третьей. Добавление сущности исходит от задачи и чаще всего это достаточно дешёвая с точки зрения ресурсов задача. А кто должен инициировать удаление комплексности непонятно, разработчики должны эскалировать? А дальше что? Кто будет этот клубок зависимостей распутывать? Обычно никто, потому что минор. 🖕
Впрочем, даже если мы это и сделаем, то поддерживать всё удалённое какое-то время всё равно придётся пока все юзеры не обновятся. В самом красивом сценарии это дроп пользователей со старыми версиями, если их осталось достаточно мало.
Абсолютно уверен, что несколько десятков тысяч строк кода, суммарно гигабайты траффика, часы ожидания юзерами - всё это можно ликвидировать просто вспомнив про то, что кто-то когда-то добавил, а теперь оно никому не нужно. Никто из текущих сотрудников уже, возможно, даже и не знает что такое есть. Уверен, что в каждом первом приложении так.