Ответ
В моем последнем проекте на Flutter мы работали в кросс-функциональной команде из 6 человек: 3 мобильных разработчика (включая меня), 2 бэкенд-разработчика на Dart (использовали aqueduct/conduit) и 1 QA-инженер. Мы придерживались методологии Scrum с двухнедельными спринтами.
Мои основные обязанности как Flutter-разработчика:
- Разработка новых фич для iOS и Android из единой codebase.
- Интеграция с бэкендом через REST API и WebSocket для real-time уведомлений.
- Настройка и поддержка CI/CD пайплайнов на Codemagic для автоматической сборки и публикации в App Store Connect и Google Play Console.
- Активное участие в планировании спринтов и ретроспективах.
- Проведение код-ревью для коллег, фокус на качестве кода, производительности рендеринга и соблюдении архитектурного паттерна BLoC/Cubit, который мы использовали.
- Менторинг junior-разработчика в команде.
Пример нашего workflow:
- Обсуждаем задачу из Jira, разбиваем на подзадачи.
- Создаю feature-ветку от
develop, реализую функциональность, пишу unit- и widget-тесты. - Открываю Pull Request в GitHub. После прохождения ревью и успешных checks CI (сборка, тесты, анализ кода) мерджим в
develop. - После окончания спринта создаем релизную ветку, проводим регрессионное тестирование и мерджим в
mainс последующим деплоем в сторы.
Работал как в офисном, так и в полностью удаленном формате, используя Slack для ежедневной коммуникации и Zoom для планирования и демо.
Ответ 18+ 🔞
Вот, представляешь, сидим мы в этой конторе, как мартышлюшки на ветке, и пилим приложение на Flutter. Команда у нас — просто ёперный театр какой-то: шесть человек, и все с прибабахом. Три мобильщика (я в их числе), два бэкендера, которые на Dart'е какую-то свою магию творили, и один QA, который нас всех бесил, но без него — никуда, хитрая жопа. Работали по Scrum, спринты по две недели — стандартная история, но весело было.
Чем я, собственно, мозги пудрил и пальцы стирал:
- Пилил фичи сразу и для айфонов, и для этих ваших андроидов из одного куска кода. Красота же, ёпта.
- Цеплял всё это дело к серверу. REST, WebSocket'ы для уведомлений — чтобы всё летало в реальном времени, а не как хуй с горы.
- Настраивал эту всю автоматическую хуйню — CI/CD пайплайны на Codemagic. Чтобы приложение само собиралось, тестировалось и летело в сторы, как только мы код замерджим. Идея-то охуенная, но когда оно ломалось, волнение ебать, терпения ноль ебать.
- Участвовал во всех этих планерках и ретро. Иногда чувствовал, будто хожу по охуенно тонкому льду, когда начинались споры про сроки.
- Делал код-ревью. Смотрел, чтобы коллеги не написали какую-нибудь пиздопроебибну, чтобы архитектура (BLoC/Cubit у нас был) не разваливалась, и приложение не тормозило.
- Ещё одного джуниора курировал. Парень был старательный, но иногда такие вопросы задавал... Сам от себя охуевал.
Как мы это всё организовывали, по шагам:
- Берём задачу из Jira, смотрим на неё. Обычно все такие: «О, ебушки-воробушки, это же на два часа!». Потом разбиваем, и оказывается, работы — овердохуища.
- Отпочковываю от
developсвою ветку, сажусь кодить. Пишу, тесты прикручиваю — unit, widget. - Когда готово, открываю Pull Request в GitHub. Тут начинается цирк: коллеги смотрят, комментируют, CI прогоняет проверки. Если всё ок — мерджим в
develop. Если нет — сиди, чини, бля буду. - В конце спринта из
developделаем релиз, всё тестируем ещё раз (наш QA тут особенно усердствует) и, если не накрылось медным тазом, пуляем вmainи в сторы.
Работали и в офисе, и из дома. Удалёнка — это отдельный вид искусства. Весь день в Slack'е трещишь, на планерки в Zoom'е заходишь, демки показываешь. Главное — чтобы интернет не отрубился в ответственный момент, а то будет вам хиросима и нигерсраки. В общем, рутина, но со своими приколами.