Обычно увеличение размеров объективно — приложения действительно становятся сложнее, появляются новые сценарии, модули, надстройки. Но значительная доля роста связана с тем, как именно сегодня ведётся разработка.
Большинство продуктов развиваются методом наслоения: новые модули добавляются поверх старых. Масштабные архитектурные пересборки ради снижения веса или упрощения структуры почти не происходят. Рефакторинги запускаются, как правило, только тогда, когда возникают критические сбои. Если система работает, её могут не трогать годами.
Дополняет картину организационная модель разработки. В больших продуктах:
- разные команды отвечают за отдельные экраны, функции и элементы;
- каждая оптимизирует свою часть, но не продукт в целом, в результате чего одна оптимизация может накладываться на другую;
- микросервисы постепенно превращаются в тяжёлые, слабо связанные модули.
В итоге общий размер приложения растёт даже тогда, когда все команды действуют рационально в рамках своей зоны ответственности.