Расти большой: топ-10 докладов Mobius 2018 Moscow

a7nlu1gsxgvrma94--v76oztila.jpeg

В 2018-м App Store и Google Play исполнилось 10 лет. За это десятилетие некоторые приложения, начинавшиеся как маленькие стартапы, разрослись в гигантские проекты —, а по пути преодолели множество трансформаций, набили множество шишек и извлекли множество уроков.

Мы открыли видеозаписи Mobius 2018 Moscow, и публикуем на Хабре 10 лучших (согласно зрительским оценкам). И в некоторых из них спикеры, работающие в крупных компаниях, описывают как раз изменения, связанные с ростом. Другие темы тоже есть: например, часто ли в случае с видео вы спускаетесь на уровень кодеков и сокетов?
Доклады в списке идут по возрастанию рейтинга — так что самые полюбившиеся зрителям будут в самом конце текста. А для тех, кого интересуют и не вошедшие в десятку доклады, даём также ссылку на плейлист.


Монорепо: путешествие обратно. История модуляризации в Badoo


Платформа: iOS
Спикер: Антон Щукин
Презентация доклада

На 10-м месте — как раз «история роста и приходящего с ним опыта». В Badoo
занимаются iOS-разработкой уже девять лет, а за это время изменилась не только компания, но и вся индустрия (сложно представить, но когда-то человечество существовало без CocoaPods).

Неудивительно, что подход к структуре репозиториев и проектов в Badoo тоже существенно менялся, и это было не линейным движением из точки А в точку Б — начав с одного репозитория, можно в итоге прийти снова к нему же, но уже на другом уровне. Каким получился маршрут, и какие были причины для изменений в каждом конкретном случае?


Как кэшировать информацию в Android-приложении и не стрелять себе в ногу


Платформа: Android
Спикер: Дмитрий Васильев
Презентация доклада

Казалось бы, задача кэширования (в том числе на Android) не нова —, но менее актуальной она от этого не становится, а ошибки в ней совершать не перестают, так что и доклады остаются полезными. Ну, недаром из двух главных проблем computer science одна связана с кэшированием!

Виды кэширования, фигурирующие в докладе:

  • Lazy cache
  • Synchronized cache
  • Write-through cache
  • LRU cache.


Мобильная архитектура в большой команде


Платформа: Android/iOS
Спикер: Александр Михайлов
Презентация доклада

Uber — возможно, самый известный в мире пример «большой мобильной команды», их сотни разработчиков стали притчей во языцех. Неудивительно, что компания сталкивается со сложностями, которые маленькие команды не затрагивают. При этом она, как и Badoo, пришла в мобильную разработку как стартап, так что путь к нынешнему состоянию был долгим и извилистым. Каким именно, к каким сложностям пришли, и как с ними борются?

Количество практической пользы, которую вы можете получить от доклада, отчасти коррелирует с размером вашей команды — если вы работаете в маленькой, вам это может не пригодиться в ваших непосредственных задачах. Но в любом случае интересно же, что там у гигантов!


Архитектурный подход к обработке ошибок


Платформа: Android/iOS
Спикер: Дмитрий Михайлов
Презентация доклада

Кому хочется иметь дело с обработкой ошибок? Хочется делать стройные замки новых систем, а не возиться со случаями, где что-то пошло не так. В итоге важная тема часто остаётся обделённой вниманием.

Но этот доклад, объединяющий её с архитектурными вопросами, может заставить посмотреть на проблему по-новому: чтобы обрабатывать ошибки как следует, надо как раз выстроить стройную систему, правильно подходящую к каждому из слоёв.


Как приготовить хорошо прожаренный MVI под Android


Платформа: Android
Спикер: Сергей Рябов
Презентация доклада

От доклада, где в названии архитектура, кто-то может ожидать сплошных UML-диаграмм. Не тут-то было: здесь на слайдах много конкретного кода. Настолько, что некоторые зрители даже жаловались — воспринимать столько подряд живьём сложновато. Но при просмотре видеозаписи есть кнопка паузы, так что можно употреблять «хорошо прожаренный MVI» по частям и смаковать, а не давиться.


Kotlin Puzzlers vol. 2


Платформа: Android
Спикер: Антон Кекс

Что будет, если в Kotlin попробовать передать в Int-параметр значение -2_147_483_648.inc ()? А почему? Антон показывает случаи, когда Kotlin ведёт себя неочевидно, и предлагает сначала угадать правильный вариант, а затем объясняет, что происходит.

Это уже второй его доклад о неочевидном поведении языка, а мы для обоих этих докладов делали на Хабре текстовые версии — так что тут можно не только посмотреть, но прочитать:


Стриминг и воспроизведение видео поверх голых сокетов и кодеков


Платформа: Android/iOS
Спикеры: Александр Тоболь и Иван Григорьев

Потребление видеоконтента в ОК гигантское, а с появлением OK Live к нему добавился ещё и стриминг. Неудивительно, что в мобильной разработке там подходят к соответствующим вопросам куда глубже, чем «возьмём стандартный плеер и выведем», и в докладе делятся своей экспертизой. Чем эппловская технология HLS уступает DASH? Какие три приоритета в стриминге оказываются недостижимы одновременно, и в пользу какого из них предрасположен WebRTC? В каких случаях вместо стандартных решений стоит делать собственное?

Доклад разделён на две части, о простой передаче с воспроизведением (когда пользователь только потребляет видео) и о мобильном стриминге (где создают его сами пользователи в прямом эфире) — и если вторая для вас неактуальна, полезно посмотреть хотя бы первую.


Compilers. Dalvik. ART. And everything in between


Платформа: Android
Спикер: Йонатан Левин

Кто-то помнит Йонатана по шоу-кейноутам, но здесь вместо костюмированных выступлений он полез вглубь: что такое D8 и R8, зачем они понадобились, и что о внутренностях Android надо знать, чтобы это понять? И получился хороший баланс серьёзного и увлекательного: тема вполне себе серьёзная, но благодаря Йонатану всё не превращается в монотонную лекцию, а подано очень живо.

В отличие от «Kotlin Puzzlers», этот доклад мы не расшифровывали, но Йонатан по его следам сам сделал блог-пост — так что и здесь, если вам удобнее читать, есть такой вариант.


Крайности тестирования: хитрости из темных уголков мобильных интерфейсов


Платформа: Android/iOS
Спикер: Виталий Фридман

Если пользователи в среднем проводят 169 минут в день в мобильных приложениях, а 11 минут в мобильном браузере, какой вывод напрашивается для любой конкретной компании? «Приложение в 15 раз важнее мобильного сайта, сосредоточимся на нём». Но если всмотреться, выяснится, что почти все эти 169 минут у пользователя приходятся на несколько любимых приложений —, а там обосновались всякие фейсбуки, составить им конкуренцию крайне затруднительно. И в таком случае расклад сил становится куда менее однозначен.

Это один из любопытных фактов, озвученных Виталием Фридманом. В отличие от докладов с обилием кода, здесь кейноут, в котором не учат какой-то конкретике — зато сообщают много интересных общих вещей, помогающих понять, какую конкретику вообще правильнее воплощать.


Android builds at Lyft


Платформа: Android
Спикер: Артём Зиннатуллин

Наконец, лидер рейтинга. Число модулей в Android-приложении Lyft превышает 800, что сказывается на сборке. Тут кто-то может подумать «если мы в жизни до такого не доберёмся, то к чему нам это слушать» —, но оценки зрителей показывают, что доклад получился интересным не для гигантов, а для всех.

Среди прочего в докладе звучит заявление «Bazel — это будущее», и на тот момент оно казалось очень смелым. Но вот свежая новость: в документации Android Q заметили пример Bazel-конфигурации. Кажется, будущее настаёт, а доклад теперь стоит посмотреть, чтобы к нему приготовиться.

Как можете видеть, на декабрьском Mobius было много интересного. Если хочется подобных докладов, но ещё и с возможностью лично поспрашивать спикера — обратите внимание, что 22–23 мая в Петербурге состоится следующий Mobius, и на сайте уже есть описания большинства докладов. Текущая цена на билеты действует до конца марта, дальше они подорожают.

© Habrahabr.ru