В этом году продажи айфонов впервые перестали расти, мобильный рынок в целом тоже не хвастается прежним бурным ростом, а новые смартфоны и новые версии их ОС уже не поражают воображение. Не означает ли это, что в мобильной разработке настаёт время застоя? Не начнут ли доклады о ней полностью повторять то, что говорили в предыдущие годы на тех же самых конференциях?

Прошедшая в Петербурге конференция Mobius позволила получить ответ и на этот вопрос, и на многие другие. Под катом — подробный рассказ о том, что там было.





Конференция стала частью «Летнего фестиваля разработчиков»: днём раньше неё состоялся DotNext, днём позже — HolyJS. Получалась возможность сравнить три разных вселенных: в .NET-мире за масштабные изменения сейчас отвечает .NET Core, JavaScript-мир вообще известен постоянными потрясениями, а может ли противопоставить этому что-то громкое мир мобильной разработки?

У открывающего keynote от Вибе Элсинга была заявлена тема #UXmatters, и можно было подумать, что зрителей ожидает сплошное «капитанство»: ну да, UX важен, кто же с этим спорит-то? Однако среди приведённых примеров «плохого user experience» встречались и неочевидные, и даже холиварные. Спикер смело атаковал гигантов, например, критикуя Uber за перебарщивание с анимацией при запуске: «Я говорил с человеком, сделавшим это, и он объяснял, что надо чем-то развлечь пользователя, пока в фоне подгружаются данные. Но когда ты в аэропорту, борясь с джет-лагом, пытаешься вызвать такси через плохое интернет-соединение, анимация совсем не в тему».



Более того, гордое звание Google Developer Expert не помешало Вибе критиковать свежий редизайн от самой компании Google. Недавно в приложении «Google Фото» помимо «гамбургера», по которому выезжает меню слева, появилась ещё и панель внизу с выбором из трёх основных разделов. По мнению спикера, одновременное присутствие того и другого запутывает пользователя: поначалу все бегают глазами, не понимая, куда нажимать.



Даже с конструктивным предложением спикера «изучать отзывы на свой продукт в магазинах приложений» вряд ли все однозначно согласятся. Многие считают, что такие отзывы пишут не самые умные пользователи, а самые крикливые, так что не стоит обращать особого внимания. Но, по мнению Вибе, противоречия здесь нет: «да, отзывы могут быть глупыми, но полезную информацию из них все равно можно извлечь».

Затем другой Google Developer Expert, Денис Неклюдов, рассказывал о представленном в мае на Google I/O, где он лично побывал. В самом начале доклада спикер прямо сказал «Если вы следили за новостями с I/O, можете идти в другой зал», но его выступление не было заученным повторением чужих слов.



В Google знают, что keynote I/O будут смотреть по всему миру, и стараются впечатлить рядовых пользователей, а у Дениса речь шла о важном для разработчиков. Поэтому о громко представленном Google Assistant он говорить вообще не стал (у него нет SDK), по темам вроде VR-платформы Daydream пробежался бегло (до её расцвета ещё дожить надо), зато быстро завёл речь про Instant Apps (запуск Android-приложений без установки). Упомянуто оказалось и то, о чём Google вообще умолчал на keynote: возможность запускать Android-приложения в ChromeOS, в одночасье делающая мобильных разработчиков ещё и десктопными.

А самыми интересными для разработчиков стали новости о Firebase (как было написано на слайде Неклюдова, «на самом деле вся мякотка тут»). Комментируя многочисленные нововведения платформы, он приводил такие юзкейсы, до которых в самом Google могли бы и не додуматься: «С помощью Remote Config теперь можно удалённо управлять внешним видом приложения для отдельных категорий пользователей. Например, сделать так, чтобы на 8 марта у женщин ваше приложение стало розовым». В общем, тут в мобильной разработке происходят ощутимые изменения — пусть даже обычные пользователи, смотревшие YouTube-трансляцию I/O, этого и не заметили.



Затем Кирилл Попов (Одноклассники) рассказывал о том, как библиотека Fresco помогает при работе с изображениями в Android. Кому-то может показаться, что тема выеденного яйца не стоит: если нужно просто показывать картинки, о чём тут разговаривать час? Но Попов на примере приложения Одноклассников наглядно объяснил, как в реальном проекте «простая задача» превращается в очень непростую:

«Вот аватара пользователя. Нам нужно запросить картинку, проверить кэш, скачать картинку, положить её в кэш. При этом мы показываем аватары не квадратными, а кадрируем с помощью кривой Безье со специальными коэффициентами. Значит, нужно ещё модифицировать изображение, опять положить в кэш, и тогда отобразить. Но за это время пользователь уже может успеть что-то увидеть, так что ещё нужен плейсхолдер. Теперь посмотрим на задний фон: он ведь тоже сделан из аватары, но в этом случае не кадрированной, а размытой (при этом мы не хотим делать новый запрос на сервер, так как эту аватарку уже качали). А дальше при скроллинге надо быстро подгружать новые картинки, и всё это может быть открыто на устройстве с маленьким количеством памяти...»



Неудивительно, что возникла потребность в мощном инструменте, и Fresco оказался единственным, в котором нашлось сразу всё требовавшееся: оптимальное использование памяти, работа с прогрессивными jpeg, многоуровневое кэширование, постобработка изображений, гибкость в использовании. Впрочем, как признал Кирилл, для маленьких проектов всё это изобилие может оказаться ситуацией «из пушки по воробьям». Кому-то будет достаточно на порядок более простого Glide, и сложность в освоении Fresco превысит выгоду от его использования.

В перерывах конференции, как это обычно бывает, многие решали задачки со стендов компаний, и набор задач от EPAM особенно привлекал внимание. Вместо знания специфики там требовалось умение алгоритмически мыслить, так что над этим с одинаковым азартом ломали головы зрители с самым разным опытом разработки. Вот в качестве примера:



Вариант «расположить инфицированные клетки по диагонали» приходил всем в голову быстро, поэтому ответ «n» напрашивался. Но даже написав его под задачей, люди продолжали терзаться вопросом «точно ли нельзя уменьшить это число, и как это доказать». Можно было заметить, как кто-то пытается решить одну из подобных задач, сидя на докладе, и услышать, как их обсуждают за обедом.

А не за обедом услышать можно было Матвея Малькова (Nexters) с докладом «Искусство реактивного программирования». Он уже во вступлении начал легко троллить аудиторию: «Мобильным разработчикам приходится думать о фрагментации устройств. К счастью, теперь и в iOS тоже с этим страдают!» В основной части тоже хватало сарказма, но не заменяющего собой серьёзные тезисы, а делающего их более хлёсткими. Например, среди слайдов про составляющие RxJava был такой:

Subjects
— соединение императивного и реактивного мира
— использовать, когда невозможно сделать по-другому
— это ваш случай? НЕТ!



О реактивном программировании речь шла ещё и в докладе Евгения Ртищева (Сбертех) «Реактивный MVVM». И в результате возникала перекличка между всеми конференциями «Летнего фестиваля разработчиков»: о «реактивщине» вспоминали на DotNext, и было ясно, что на HolyJS без неё тоже не обойдётся.

А сразу в трёх других докладах речь заходила о языках, посягающих на привычный статус-кво «на Android — Java, на iOS — Objective-C».

Ян Жуланов (JetBrains) объяснял, почему Kotlin актуален для Android-разработчиков. Android известен тем, как неторопливо появляется там поддержка новых возможностей Java, так что этот слайд наверняка бил многим по больному:



Тот же Матвей Мальков и вовсе делился своим опытом разработки Android-приложения на Scala. Впрочем, как он сам признавал, доклад получился «холиварным», так что при перечисленных им достоинствах Scala («безопасность», «разделение и переиспользование», «хорошая архитектура», «лёгкое построение DSL и работа с UI») кто-то наверняка остался совершенно не убеждённым.

А вот доклад Максима Соколова (Avito) про использование дженериков в Swift аудитория дружно одобрила: он не только собрал много хвалебных отзывов, но и возглавил топ-10 выступлений Mobius по оценкам зрителей.

  1. Максим Соколов — Advanced Swift Generics — перейдем на <T>
  2. Кирилл Попов — O Fresco и как его готовить, а также о картинках в Android в целом
  3. Евгений Мацюк — Пишем тестируемый код
  4. Александр Коршак — Опыт разработки Cardboard приложения для 3D-реконструкции медицинских данных
  5. Ирина Дягилева — Типографика в iOS
  6. Ян Жуланов — Android-приложения на Kotlin: почему это хорошо
  7. Матвей Мальков — Scala для Android: миф или реальность?
  8. Матвей Мальков — The Art of Rx
  9. Денис Неклюдов — Горячие новости с Google I/O 2016
  10. Евгений Ртищев — Реактивный MVVM




И если посмотреть на этот топ-10, становится очевидно, что о застое говорить не приходится. Доклады о смене привычного языка программирования на более актуальный, о молодой библиотеке (Fresco меньше полутора лет), о разработке для Cardboard, о «реактивщине», один доклад и вовсе целиком из новостей — в общем, сплошные тренды. Ещё год назад докладов о Swift на Mobius не было, а теперь именно такой оказался наиболее тепло принятым. Неудивительно: за прошедший год язык дошёл от «перспективно, но пока рано» до активного использования в iOS-разработке, и дальше его роль явно продолжит расти.

Так что на Mobius, как и на DotNext, нашлось место большим переменам. А чем на это ответил JavaScript-мир? Скоро станет известно из текста о HolyJS.

Поделиться с друзьями
-->

Комментарии (8)


  1. kelebro63
    21.06.2016 11:36

    а есть ссылка на видео докладов?


    1. phillennium
      21.06.2016 12:40

      Видеозаписи сначала появляются для оставивших фидбэк участников, а в открытом доступе спустя несколько месяцев.

      Но сейчас уже доступны в PDF презентации докладчиков.


  1. storoj
    21.06.2016 15:39
    +1

    Доклады были в основном хреновые. На конференции больше всего мне понравилась головоломка Qubidoo на стенде Epam.
    «Видеозаписи сначала появляются для оставивших фидбэк участников» – как так можно-то? Это конференция для разработчиков или просто коммерческое мероприятие?


    1. 23derevo
      21.06.2016 16:12

      1. По поводу хреновых докладов — ради бога, это ваше мнение. Судя по отзывам, у нас было 9 отличных докладов, 7 хороших, 6 слабых и 1 очень слабый. Некоторые доклады были отстойными — да, это проблема, но мы постоянно над этим работаем. В частности, собираем отзывы участников и делаем выводы. Я согласен, что могло быть и лучше — но, уверяю вас, это уже большое достижение. Я не знаю ни одной конференции по мобильной разработке такого уровня.

      2. По поводу видеозаписей — я вообще не понял проблемы. Оставили отзыв (который нам нужен для того, чтобы сделать следующую конференцию лучше) — получили видео. Не оставили — не получили видео. Не вижу тут связи ни с разработкой ни с коммерцией.


      1. storoj
        21.06.2016 16:17

        1. значит и отзывы тоже хреновые
        2. при цене 7500 за вход наверное можно было и без отзывов обойтись

        «такого уровня» – а в чём уровень? никому задаром не нужны качественные записи хреновых докладов


        1. 23derevo
          21.06.2016 17:54

          1. Отзывы такие, какие есть. Кто-то пишет восторженные отзывы, а кто-то критикует. Люди разные.

          2. я в упор не понимаю, при чем тут цена и сбор фидбэков. Где связь?

          3. У нас было 23 доклада, и некоторые из них, действительно, не получились. Связано это с разными ситуациями — замена спикера в последний момент, форс-мажор у спикера, интересная тема, но все боятся рассказывать и т.п.
          Мы сделали за последние годы два десятка конференций. Всегда есть лидеры и есть аутсайдеры. Лидеры задают тренд, аутсайдеры показывают, где дно. В любом рейтинге есть топ, есть середина и есть аутсайдеры — это же очевидно. И чем сильнее лидер, тем слабее на его фоне смотрятся все остальные.

          4. По поводу видео — ну так не смотрите видео тех докладов, которые «хреновые».


          1. storoj
            21.06.2016 18:02

            2. Когда я прихожу на конференцию, а особенно платную – я ожидаю больше получать, чем делать какую-то работу. Я уже и так свою часть выполнил, заплатив за билет. Когда вы говорите «для получения видео заполните отзыв, кто не заполнил – видео не получит» то лично у меня возникает чувство образа, «развода», и отторжения. Сделайте билет за 8000, но пусть все материалы конференции будут доступны её участникам без дополнительных телодвижений.

            1. Заодно легко заподозрить негативное влияние п.2 на п.1. Те, кому просто нужны видео будут готовы написать лубую чушь типа «Класс! Супер! Отлично!» и получить наконец свою чертову ссылку. Я сразу же вспоминаю Uber – часто пользуюсь, мне не всё нравится, но когда перед вызовом машины меня просят «оставить отзыв» – я просто нажимаю на пять звёзд и не парюсь.
            Хорошие отзывы приятны, но бесполезны. Даже вредны, по-моему. Нужны плохие, злые отзывы.


            1. 23derevo
              21.06.2016 18:12

              2. нам важен высокий feedback rate (процент отзывов). Пока трюк с participant-only видео нам помогает эту задачу решать, мы будем продолжать его использовать. Сейчас процент отзывов колеблется в районе 70%. Если человеку лень оставлять отзыв — мы с таким человеком работать не готовы.

              1. Опыт показывает, что описанное вами происходит очень редко (2-3 процента отзывов).