Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Взрослая жизнь iOS-разработчика

CocoaHeads
April 26, 2018
88

Взрослая жизнь iOS-разработчика

CocoaHeads

April 26, 2018
Tweet

More Decks by CocoaHeads

Transcript

  1. О нас 350m Сообщений в день 370m Зарегистрированных пользователей 60m

    Ежемесячная аудитория 300k Регистраций в день 3
  2. • Человек != машина • Legacy • Новые бизнес-требования •

    Новый дизайн • Новые люди • Ещё раз legacy • … Проблемы? 6
  3. Команда Взаимодействие • Slack/HipChat/Telegram • Email • Skype/Discord/Личное общение Контроль

    задач • Trello • Asana • Jira Накопление знаний • Email/Google Docs/Dropbox • Confluence 10
  4. Команда Взаимодействие • Slack/HipChat/Telegram • Email • Skype/Discord/Личное общение Контроль

    задач • Trello • Asana • Jira Накопление знаний • Email/Google Docs/Dropbox • Confluence 11
  5. PRD 14 • Что нужно сделать? • Какие предпосылки? •

    Какие ожидания? • Дизайн • Аналитика
  6. Внутри iOS-команды Что было 6 месяцев назад Планирование Баг фиксинг

    Ретро Спринт 2 недели Разработка Разработка … Демо Тестирование Тестирование … 15
  7. • Можно “подсчитать” производительность команды • Детерминированный релизный цикл Чем

    хорошо Чем плохо • При росте команды оценка производительности не имеет смысла • Привязанность сроков к спринту • Медленно 16
  8. Внутри iOS-команды Сейчас Планирование Баг фиксинг Ретро Разработка Демо Тестирование

    Планирование Баг фиксинг Разработка Тестирование Планирование Баг фиксинг Разработка Тестирование Ретро Ретро 17
  9. Было Стало Оценка сложности Сторипоинт Конкретная дата Планирование Общее “Личное”

    Ретро Общее “Личное” и общее Баг-фиксинг Несколько человек на спринт Все разработчики 19
  10. • Количество людей в команде не влияет на процесс •

    Каждый разработчик может работать в своем темпе • Быстро • Новые возможности для сборки билдов Чем хорошо Чем плохо • Большая ответственность на разработчиках • Тяжело контролировать 20
  11. • Формализовать разработку • Не бояться “серьезных” инструментов • Экспериментируйте

    с процессами разработки Рецепт • Игорь Кашкута — От идеи до результата • What is Agile? Ресурсы 21
  12. Жизненный цикл задачи In progress Open In review In QA

    In dev In integration In master Release branch Pending On Live 23
  13. AIDA Эксперт в git Git и не только • Создание/Удаление

    веток • Управление доступом • Запуск тестов • Создание билдов Но: • Не умеет разрешать конфликты (пока) 25
  14. Скрипты Работа с рутиной • Обновить Protobuf • Обновить Pods

    • Обновить файлы локализации Качество • Swiftlint, clang • Поиск неиспользованных исходных файлов • Поиск неиспользованных/дубликатов ассетов Стабильность • Visual Snapshot Testing • Кодогенерация 27
  15. Тестирование Кода Более 1300 тестов как замена интеграционному тестированию Пишем

    тесты на новый код, иногда пытаемся покрывать легаси Automation Unit тесты Отслеживаем трудноуловимые баги интерфейса VST 29
  16. Тестирование Продукта Тестируем на пользователях всё что можно! Сравнить разные

    flow приложения в разных локализациях, клиентах и версиях. A/B тесты Liveshots 30
  17. • Не забывайте о тестах • Интеграционное тестирование – дорого,

    но важно • Экспериментируйте с продуктом Рецепт • Calabash • Unit Interface Testing • TDD • AB tests Ресурсы 32
  18. Зачем? Поддержка нескольких приложений Мы должны следовать принципу DRY. Базовые

    компоненты – работа с сетью, авторизация и прочие – вынесены в отдельные фреймворки. Ускорение скорости компиляции Отдельные компоненты, которые могут быть переиспользованы, также выносятся в фреймворки, что частично приводит к улучшению скорости компиляции основного проекта. Синхронизация с командой дизайна Новая для нас тема, которая сейчас находится на этапе развития. Синхронизация дизайна между платформами – важная задача для поддержания клиентов в актуальном виде. 34
  19. • Задаёт правила для дизайнеров • Задаёт стили для клиентов

    • Объявляет базовые символы для Sketch • Генерирует готовые компоненты на React Native В далеком и прекрасном будущем: • Автоматическое обновление стилей на клиентах Cosmos 35
  20. Cosmos На клиенте BadooUIKit Основные компоненты приложения, такие как кнопки,

    баннеры, аватарки и прочее. Любое изменение ведет к визуальному изменению в основном клиенте. Badoo Gallery Отдельное приложение с компонентами из BadooUIKit во всевозможных конфигурациях. Значительно ускоряет процесс разработки визуальных компонентов. 37
  21. • Chatto (open sourced!) • Photo Upload • Discovery •

    Networking/etc ..только начало! Компоненты 38
  22. • У каждого приложения свои репозитории • За синхронизацию с

    основным кодом отвечали команды • Из-за частоты синхронизации количество изменений может быть очень большим • Отсутствие обмена опытом между командами Repos Было пару месяцев назад 39
  23. • Общий репозиторий • master всегда готов к релизу •

    Ветки интеграции каждый день • Ветка релиза раз в неделю • Разработчики в курсе, что происходит между командами • Если что-то ломается, то это предотвращается при мердже в dev Monorepo Сейчас 40
  24. Monorepo Обмениваемся опытом и следим друг за другом Доступность Избегаем

    дублирование кода (пытаемся) Делаем столько интеграций, сколько захотим Практичность Гибкость 41
  25. • Выносить UI в отдельный проект – удобно • Выпуск

    приложения заслуживает отдельного рассмотрения Рецепт • Clean code • Pragmatic Programmer • Monorepo Ресурсы 42
  26. • Документация – удобный способ передачи требований между разными командами

    • Правильного подхода в разработке не существует. Нужно балансировать на грани желаемого и возможного • Автоматизация – правильный шаг в ускорении и повышении безопасности процессов • Модуляризация открывает большие возможности (и не только в разработке) Что в итоге? 44