Привет! Сегодня в нашем блоге мы проводим уже традиционную секцию вопросов и ответов Ask Me Anything. (До этого были АМА по бэкенду и по android-разработке). Продолжаем хорошую традицию. На этот раз речь пойдёт о разработке под iOS в целом и об особенностях приложения Авито в частности.
Как работается с приложением самого популярного сайта объявлений в России? Спросите у нас! Мы ответим на все комментарии первого уровня, которые появятся здесь до полудня 6 июня по московскому времени. Под катом я представляю семь моих коллег, которые будут с вами на связи, рассказываю немного об iOS-разработке в Авито и о возможных темах диалога.
UPD: Официально мы закрываем АМА, но по возможности обещаем отвечать на комментарии. Спасибо всем за участие!
Участники АМА
Евгений Суворов kokax
«Руководитель команды мобильной архитектуры, которая отвечает за техническое качество продукта, удовлетворенность разработчиков разработкой и развитием/поддержкой внутренних инструментов разработчиков. В разработке под iOS с 2011 года, в Авито стал первым мобильным разработчиком в 2014».
Алексей Шпирко truealex
«Руководитель команды, занимающейся ускорением релизов мобильных приложений, построением CI/CD в мобильных приложениях, разработкой инструментов для UI-тестов. В Авито с 2014 года. Про то, чем я занимаюсь, можно подробнее узнать, посмотрев мой доклад для Mobius 2018 по ссылке».
Иван Бондарь ivanbondar
«Руководитель группы разработки мобильных приложений, занимаюсь разработкой под iOS с 2012 года, присоединился к команде Авито 2,5 года назад. Совмещаю роли iOS-разработчика, скрам-мастера и руководителя небольшой кросс-функциональной команды. Помимо iOS немного пишу backend, помогаю другим командам».
Артем Разинов artyom-razinov
«iOS-разработчик, в iOS с 2011 года, в Авито чуть более трёх лет. Занимался всем, в последнее время на 100% погружен в UI-автотестирование — инструменты, CI/CD и все такое. Мои хобби и увлечения: автотестирование, диплинкинг, гибкое API, кодогенерация, хаки, трюки и обманы».
Алексей Кудрявцев WEStor
«iOS-разработчик юнита Мессенджер, мейнтейнер проекта SwiftyVK, звукарь подкаста Podlodka. В Авито с января 2017 года. За это время успел поработать над разными частями iOS-приложения в нескольких юнитах. До Авито работал в небольших стартапах, делал pet-project’ы под iOS и MacOS. Помимо разработки люблю в свободное время побегать, покатать на велосипеде или что-нибудь почитать».
Тимур Юсипов fizmatchel
«iOS-разработчик юнита Mobile Architecture. Разрабатываю под iOS с 2012 года. В Avito почти 3 года. Занимался за это время много чем, прошел путь от фичовой разработки до платформенной.
В последнее время занимаюсь:
- модуляризацией монолита (разбили таргет с 2000+файлами на 40+ модулей),
- оптимизацией сборки путем упрощения графа зависимостей между модулями,
- созданием и сопровождением переиспользуемых разработчиками утилит: обертки над UICollectionView, инструмента для навигации, инструмента для диплинкинга, своих правил Swiftlint, Xcode-шаблонами для быстроты написания нового кода и прочей инфраструктурой,
- автоматизацией замеров различных технических характеристик (скорость запуска, скорость чистой сборки, утилизация CPU на чистой сборке, размеры модулей, количество контрибьюторов модулей, …).
Увлекаюсь футболом, коньками и роликами, пляжным волейболом, велосипедом, палаточными походами».
Вадим Смаль vadimsmal
«iOS-разработчик юнита Mobile Architecture. Разрабатываю под MacOS / iOS с 2012 года. В Авито уже 1.5 года. Занимаюсь разработкой решений для увеличения скорости разработки и поддержания качества приложения: toggle, DI, система отправки аналитики, автоматизированные замеры метрик, различные проверки состояния проекта и прочее.
Интересуюсь изучением новых технологий, таких, как Machine learning и blockchain. Изучаю новые платформы, подходы и языки, например, микросервисы на Go».
Немного фактов про iOS-разработку в Avito
- Мы в Avito уделяем много внимания мобильным приложениям. И планируем сохранять этот тренд.
- Команда iOS-разработчиков использует Swift. Он заменил Objective-C в наших продуктах.
- Мы инвестируем в развитие и продвижение инженерных практик — CI, CD, Code Review, автоматизация тестирования.
- Важная особенность iOS-разработки в Avito — модульная архитектура, позволяющая нескольким группам разработчиков развивать крупный проект без коллизий и оперативно реагировать на нужды пользователей.
Возможные вопросы и темы для обсуждения
- Как устроено наше приложение.
- Как мы ведём разработку нашего iOS-приложения большой командой.
- Монорепозиторий для кода: «боли» и профиты
- Рабочие процессы: код-ревью, пулл реквесты, запуск тестов, проверки.
- CI/CD.
- Автоматизированное тестирование.
- Легаси: как мы с этим боремся.
- Внутренние решения для разработки: навигация, кодогенерация, feature-toggle, networking, решение для построения списков, DI, аналитика, deep links.
- Замеры и оптимизация метрик: время сборки/запуска, размер приложения, количество зависимостей, утилизация CPU на сборке.
- Продуктовая разработка, кросс-функциональность, A/B тестирование.
Материалы о разработке под iOS с участием сотрудников Avito
- Релизы мобильных приложений в Avito
- Работа с дизайном в Avito — Артём Разинов и Инесса Воронина
- Back-end driven UI — Алексей Шпирко
- Егор Толстой — May the Code Review be with you
- Marshroute: удобный и расширяемый роутинг в iOS-приложении — Тимур Юсипов
- Media Picker — to infinity and beyond — Андрей Юткин
DeepLink’и в Avito — Артём Разинов - Mach-O, lldb, dSYM на практике — Владислав Алексеев
- Метрики всему голова — Вадим Смаль
- Мессенджер наизнанку, или Как сегодня сделать мессенджер в мобильном iOS-приложении — Максим Соколов
- Paparazzo. Мощный, стильный, свой. Часть I
- Paparazzo. Мощный, стильный, свой. Часть II
- Куда пойти, что читать, с кем общаться на профессиональные темы: дорожная карта для iOS-разработчика
Ждём ваших вопросов в комментариях!