очень просто.
допустим большой проект разбит на кучу модулей и в каждом модуле есть своя команда.
там есть ПМ, аналитики, тестировщики, дизайнеры и девелоперы.
допустим по 2 человека на ios, android, back...
итого получается скажем 12-15 команд и оставшииеся разработчики - это кор команда, которая отвечает за общую архитектуру, такая дрим-тим.
и вот в каждой команде есть набор задач, допустим надо сделать какие-то экраны и ты как разработчик ждешь когда родят дизайнеры, аналитики, потом будет готов бек... в это время ты фиксишь баги и занимаешься какими-то смежными тех задачами спущенными с уровня кор команды для твоего стрима и все такое.
потом ты пилишь уже свои задачи, ждешь когда они дойдут до теста, если все ок - то есть порядок релизов, регрессов и прочая дребедень в ходе кототрой лезут баги если ты их наговнокодил или кто-то зашел со смежного стрима и тебе все испортил своими правками...
и да, после какого-то стартапа или самостоятельной разработки или разработки в мелкой конторе - это все выглядит крайне медленно и тягомотно.
в такой системе тебя тупо к репозиторию могут две недели подключать и это типа нормальная тема.
короче, пока ты сам изнутри в такой системы не взглянешь - действительно не очень понятно как вообще так может быть.