Ответ
Состав команд варьировался в зависимости от проекта:
-
В стартапе над fintech-продуктом на Node.js мы были небольшой, но универсальной командой: 2 backend-разработчика (включая меня), 1 фронтенд и тимлид, который также писал код. Мы оба занимались всем циклом: проектированием API на Express/Nest.js, работой с PostgreSQL, интеграцией внешних сервисов (платежи, KYC), написанием тестов и деплоем в Docker-контейнерах на AWS. Такая модель требовала от нас широкой экспертизы и тесной коммуникации.
-
В более крупной продуктовой компании над монолитом, который постепенно дробили на микросервисы на Node.js, команда backend'а состояла из 5 человек. У нас было разделение по функциональным областям (доменам): 2 человека отвечали за сервис аутентификации и пользовательских данных, 2 — за бизнес-логику основного продукта, и 1 — за инфраструктуру и общие утилиты (логирование, мониторинг, шаблоны). Мы работали по Scrum, проводили регулярные code review и архитектурные воркшопы для согласования контрактов между сервисами (в основном gRPC).
Независимо от размера, ключевым для эффективности было четкое определение зон ответственности, согласованные code style и практики (например, обязательные тесты для нового функционала), и использование инструментов вроде Jira/Confluence и Git (с enforced pull request процессами).
Ответ 18+ 🔞
Слушай, а вот насчёт состава команд — это вообще отдельная песня, блядь. Как будто в двух разных вселенных поработал, ёпта.
Вот в этом стартапе, fintech-проект на Node.js... Ну это был просто ёперный театр, я тебе скажу. Команда — меня, ещё один бэкендер, один фронтенд и тимлид, который тоже в код лез. И мы с тем другим бэкендером были как эти... манды с ушами, которые везде успевают. На тебя сваливается всё: проектирование API на Express или Nest.js, потом ковыряние в PostgreSQL, потом интеграция каких-то левых сервисов — платежи там, верификация пользователей... А потом ещё и тесты писать, и это всё в Docker-контейнеры запихивать и на AWS выкатывать. Экспертиза нужна была, блядь, просто овердохуища, и общаться приходилось так тесно, что уже подозрение ёбать чувствую — не пора ли границы личные определять. Но зато, чувак, скучно не было ни секунды.
А потом попал в более крупную продуктовую контору. Там уже монолит на Node.js, который потихоньку на микросервисы резали. И команда бэкенда — уже пять человек, не два. И тут уже, блядь, началось нормальное разделение, не эта всеядность. Сидели по доменам, как крысы по норам: двое пасли сервис аутентификации и пользователей, ещё двое — основную бизнес-логику, а один чувак был царь и бог инфраструктуры — логи, мониторинг, шаблоны всякие. Работали по Scrum, с этими стендапами, ревью кода обязательными... А ещё эти архитектурные воркшопы, чтобы контракты между сервисами через gRPC согласовать — волнение ёбать, каждый раз как на экзамене.
Но вообще, если без мата, то вывод-то простой. Неважно, команда из трёх человек или из десяти. Главное — чтобы было чётко понятно, кто за что отвечает, чтобы все код в одном стиле писали, чтобы на новый функционал тесты были не «как-нибудь потом», а сразу. И чтобы инструменты нормальные были: Jira с Confluence для задач, Git с обязательными пул-реквестами — без этого просто пиздец, а не разработка. Без этого — терпения ноль, ёбать, и доверия тоже.