Привет, меня зовут Виталий, я Android разработчик компании Tinkoff.ru, работаю в Санкт-Петербургском офисе и в этом году я впервые посетил международную конференцию Droidcon Berlin, поэтом кратко хотел рассказать о своих впечатлениях.
Данная статья не содержит большого количества технической информации, но если вам интересно, то видео всех докладов организаторы со временем выложат на YouTube.
![](https://habrastorage.org/webt/hp/lr/b9/hplrb9briulx0tdzpboi8rgjmmm.gif)
Droidcon — одна из популярнейших конференций, посвященных Android разработке, она проводится в 25 городах и на 4 континентах (Евразия, Африка, Северная Америка и Австралия). А если Европу и Азию считать отдельно, то количество континентов существенно увеличивается до пугающей цифры — 5.
В этом году у нас собралась очень большая команда из двух человек, которая поехала покорять немецкую столицу прямо во время чемпионата мира по футболу.
Пару слов про про даты конференции, они плавающие и меняются год от года. В 2017 году Droidcon Berlin проходил с 3 по 5 сентября, в 2018 — с 25 по 27 июня, а в 2019 будет проходить с 27 по 29 мая.
Из хорошего можно отметить, что конференция проводится с понедельника по среду, то есть если приехать немного заранее, например в субботу, то в запасе появляются целых 2 дня, чтобы насладиться красотами дождливого Берлина.
Как попасть на конференцию
Как говорится, каждый петербуржец должен носить с собой зонтик и солнцезащитные очки, а также загранпаспорт с финским шенгеном, поэтому единственное, что было нужно — это просто купить билет на конференцию. Покупка билета на эту конференцию ничем не отличается от покупки билетов на любые другие: чем раньше купишь, тем меньше стоимость. Мне билет обошелся в 200 евро, а моему коллеге — в 150.
Насколько мне известно, место проведения Droidcon Berlin не меняется — это CityCube Berlin. Данный выставочный комплекс расположен всего в километре от города и в 200 метрах от ближайшей станции S-Bahn.
Берлин — современный город с достаточно развитой транспортной структурой, и поэтому совершенно необязательно снимать жилье в непосредственной близости от места проведения. До него можно добраться одним из следующих способов.
- Пешком
- На поезде S-Bahn до станции S-Messe-Süd
- На велосипеде
- На арендованном велосипеде (mobike, nextbike)
Последний пункт я бы хотел описать чуть подробнее. Берлин не Амстердам, но велосипедное движение в немецкой столице организовано на достойном уровне, поэтому в Берлине очень популярен байкшеринг. Существует несколько компаний, которые оказывают соответствующие услуги (немецкая NextBike и китайская Mobike).
Немецкий байкшеринг очень похож на российский каршеринг тем, что велосипеды можно оставлять абсолютно в любом месте в границах города. Поэтому можно, например, вечером приехать домой на велике, а утром уехать на нем же. Но будьте внимательны: CityCube Berlin располагается за чертой города и велосипед придется оставить на велосипедной станции около станции S-Bahn — Messe Nord ICC.
По дороге к месту проведения конференции стоят доброжелательные волонтеры, которые в первый день помогали сориентироваться. Также вдоль дороги были расставлены указатели, поэтому потеряться было очень сложно.
![](https://habrastorage.org/webt/pi/56/ae/pi56aechngrgqn3lovduvd3n42g.jpeg)
Указатель по дороге
![](https://habrastorage.org/webt/gi/zo/nh/gizonhotmmxegzvhdoif5vtflx0.jpeg)
Указатель около входа
Как обычно на конференциях во время регистрации необходимо получить бейдж, чтобы и себя показать, и на других посмотреть. Не знаю как было до этого, но в этот раз организаторы решили оптимизировать процесс регистрации и разделили очередь по первой букве имени.
![](https://habrastorage.org/webt/hq/wz/oc/hqwzocwr3axjbeium2nhgrmmeeq.jpeg)
В общем я понял, что быть Виталием в данной ситуации совсем не выгодно, расстроился и пошел в 4-ю очередь.
Спонсоры
Как обычно на конференциях присутствуют спонсоры, они раздают всякие ништячки, рекламируют себя и даже иногда зазывают на работу.
В этому году спонсоров было довольно много, каждый мог либо подарить прикольную безделушку, либо рассказать интересную историю о своей работе и о своих проектах.
- Huawei — производитель телефонов, представлял свой фреймворк для дополненной реальности и автомобиль совместного производства с Porsche. Скорее всего разрабатывали развлекательную систему
- Here — бывшая часть Nokia, компания которая в основном базируется в Германии и США. Разрабатывают картографические решения (бывший NAVTEQ). Рассказывали про сеть партнеров, которые поставляют им карты для сложных регионов, таких как Китай, Северная Корея и других, а также про сам механизм выдачи различных версий карт в зависимости от вашего расположения, языка и других вещей (необходимо для решения вопроса о спорных территориях)
- Amazon — в представлении не нуждаются, рассказывали, что в Германии разрабатывают в основном операционку для своих планшетов
- Ebay — в Германии в основном занимаются разработкой аналога Avito (Ebay Kleinanzeigen, не могу произнести это)
- Zebra — разработка программно аппаратных комплексов по сканированию штрих кодов, базируются в США и Великобритании
- GDG
- eDreams ODIGEO — конгломерат сервисов по поиску авиабилетов и отелей и тому подобных (eDreams, GO Voyages, Opodo, TravelLink, Liligo, и других не очень известных в России сервисов). Разработка в Барселона и Мадриде
- N26 — онлайн банк без отделений. Говорят работают по принципу Тинькофф, но имеющий всего лишь 1 млн клиентов (против 6 млн у ТФ) по всей европе. Доступен в 17 странах. Центр разработки располагается в Берлине, недавно открыли новый офис в Барселоне. Используют ViewModel и LiveData.
Конференция
Перейдем непосредственно к конференции, в этом году она длилась 3 дня:
- Интерактивный день (День №0)
- День №1 (Keynote Jake Wharton — Blurring the line between native and web)
- День №2 (Keynote Job van der Voort — The best apps are built in pyjama-pants)
Далее подробнее рассмотрим ключевые моменты каждого дня.
Интерактивный день
Интерактивный день — специальный день для знакомства с другими участниками конференции. Много свободного времени, свободных залов. Поэтому каждый мог предложить тему для дискуссий или доклада. Предлагали темы:
- Как писать DSL на Kotlin
Похожий доклад был на JPoint, поэтому ничего нового там не было - Для чего нужна Google Paging Library
- Как грамотно организовать мульти-модульное взаимодействие
В этом докладе был рассмотрен Android проект, состоящий из нескольких модулей. Было рассказано что данный модуль инкапсулирует взаимодействие с сервером или БД. Основная его идея доклада была в том, чтобы такие зависимости как Room, Retrofit вынести в отдельный модуль и скрыть их.
Я тоже решил воспользоваться данной возможностью и рассказал доклад с Петербургского Kotlin митапа.
![](https://habrastorage.org/webt/nq/vj/ns/nqvjnsfmv_qs31qmufflvyzf3ik.jpeg)
Я рассказывал в зале Lollipop
Также были панельные дискуссии, в обсуждении которых участвовало от 4 до 6 человек:
- Rx must die
Основной посыл был в том, что Rx это просто библиотека, которая должна быть легко заменяема, однако от нее очень сложно избавиться, так как она распространяется на все уровни приложения.
Rx очень часто делает код непонятным, если разработчики создают длинные цепочки.
Если вы используете Single, Completable или Maybe, то Rx вам не нужен, Kotlin Coroutines будет достаточно.
Как обычно они замалчивают обработку ошибок, отмену выполнения и Rx операторы. - Кроссплатформенность на Android
- Women in Tech
В конце дня был турнир по Mario Cart.
![](https://habrastorage.org/webt/w1/ak/ae/w1akaexdcxlpk0d1w7nhu_wwg5a.jpeg)
Теперь немного про организацию интерактивного дня.
- Это не мобиус. Никакого бесплатного кофе, чая и печенюшек. Одна точка по продаже кофе и сладостей, между докладами к ней большая очередь.
Хочешь кофе — пропускай доклад, хотя в первый день их можно было спокойно пропустить. - Это не мобиус. Никакой горячей еды — только сэндвичи, вкусные, но официально только по одному в руки.
- Это не мобиус. Тут не так сильно хантят)
И последним пунктом на повестке дня была неофициальная вечеринка, организованная немецким Android сообществом BerlinDroid. Она была в расписании конференции, но про нее толком никто ничего не знал. Проходила в клубе-баре c-base, где было оплачено порядка 200-300 бутылок пива. Бар расположен на берегу реки, поэтому мы сидели на улице и общались на различные темы с другими Android разработчиками.
Первый день
Как я уже было отмечено, первый день начался с доклада Джейка Уортона “Blurring the line between native and web”, который немного порассуждал на тему кроссплатформенности, выбора языка и о некоторых других вещах. Основной вывод — скоро можно будет писать все на Kotlin, основная фишка — прикольные скриншоты про Kotlin.
![](https://habrastorage.org/webt/uq/vo/h6/uqvoh6mk-ddk_7npuo1ektwhthg.jpeg)
![](https://habrastorage.org/webt/r7/ny/uc/r7nyuc3crwpdrccqiwforbnzava.jpeg)
Фотографии с доклада Джейка
В первый день был очень неплохой доклад Ханнеса Дорфмана (Hannes Dorfmann) про MVI, другие разработчики его очень хвалили, однако я не смог его посетить, поэтому планирую посмотреть его, когда появится запись.
Интересным оказался доклад про Dependency Hell от Эрика Дерра (Erik Derr). В начале доклада он рассказал, что вы используете зависимости в проекте, у вас все хорошо, все структурировано. Но когда библиотека попадает в собранную APK, то она получает доступ ко всему, к чему имеет доступ само приложение.
Затем он плавно перешел на обсуждение безопасности загружаемых библиотек и почему для разработчика важно знать, что зависимость не содержит уязвимостей и не ворует пользовательские данные.
После этого он анализировал использование SDK Facebook, в частности, он анализировал, какие версии SDK наиболее часто используются в других приложениях, и заметил, что в достаточном количестве проектов используются уязвимая версия Facebook SDK, и почему-то ее часто не обновляют.
В заключении доклада он презентовал расширение для Android Studio Up2Dep, которое подсказывает последнюю совместимую версию расширения (наверно на уровне интерфейсов).
![](https://habrastorage.org/webt/4z/my/-f/4zmy-fttcfcya_beh_ds-8adm-o.png)
Пример работы плагина
В докладе про навигацию от Энтони Эгби (Anthony Agby) было проанализировано, как раньше работали с гео-локацией на Android, как теперь используется FusedLocationManager, что и делать, если пользователь живет в Китае.
Затем я пошел на доклад Рикардо Леджа (Ricardo Lage) про миграцию с AutoValue на Kotlin Data Class. Половину доклада он рассказывал, что такое AutoValue, для чего это нужно, как они еще генерировали сериализаторы. Он акцентировал внимание на том, как классно использовать Data Class, и как они написали плагин, который старый код конвертирует в Data Class. Но даже с data class они используют свой плагин для генерация кода сериализатора, так как Kotlin Serialization им не понравился.
А в это время мой коллега сходил на доклад Сакета Нараяна (Saket Narayan) “Persistence as the single source of truth”, который произвел на него большое впечатление, поэтому я тоже хочу его посмотреть когда появятся видео.
Виталий Засадный (Vitaliy Zasadnyy) сделал презентацию про DeepLink. Если докладчик очень стильно одет: в рубашке, жилетке и улыбается до ушей, то это менеджерский доклад (это оказалось правдой). Если попытаться выделить самую суть, то нужно юзать Google Referer API, если мы хотим передать дополнительную информацию сразу после скачивания приложения.
Затем был доклад Нишанта Сривастава (Nishant Srivastava) про ProcessLifecycle, который является пересказом его статьи.
![](https://habrastorage.org/webt/hf/kf/nt/hfkfnt3uofsojny1dndsbjhsqmg.jpeg)
В конце первого дня сфотографировался с Ханнесом Дорфманом.
Второй день
Второй день открывал Джоб ван дер Вурт (Job van der Voort) с докладом “The best apps are built in pyjama-pants”. Джоб работает в GitLab и его рассказ был о том, как они все работают дома и какие от этого плюсы, ему например удается работать и следить за тем, как растет его дочка. Исходя из успешного опыта, он делает вывод, что офисы необязательны.
![](https://habrastorage.org/webt/q2/_c/mi/q2_cmi1qa2lq0hbwrgkbodjgrd8.jpeg)
Фотография с доклада Джоба
Отдельное внимание он уделил парадигме OpenSource, согласно которой код всех их продуктов, даже тех, которые они продают, лежит в открытом доступе, то есть любой пользователь может скачать исходный код, собрать его и использовать без всяких проблем.
Но самым интересным был рассказ про созданное ими комьюнити. Оказывается, многие компании-клиенты создают новые фичи, которые полезны не только им, но и другим покупателям. Несмотря на это компании все еще покупают продукты у GitLab, хотя они часто сами создают требуемый для себя функционал в продуктах GitLab.
Затем мы послушали доклад про увеличение скорости сборки проекта от Никиты Козлова и Бориса Фарбера (Nikita Kozlov, Boris Farber) в зависимости от версии grale, kotlin и т.д… В частности, они измерили скорость сборки на маках 15 и 17 годов. Если подытожить, ребята захотели новые маки и им нужно было как-то аргументировать, почему им нужны более мощные компьютеры.
![](https://habrastorage.org/webt/w5/ky/cw/w5kycwohq7ycitgxasfipi-feum.jpeg)
Список параметров которые учитывали докладчики
К своему удивлению, из довольно стандартного доклада Абдельмунайма Бельгалема (Abdelmounaïm Belghalem) про батарею я узнал, что 3G жрет больше чем LTE.
Далее шло выступление Василия Жуканова (Vasiliy Zukanov) “Activities and Fragments are not MVX views”. Было показано, что активити и фрагменты очень много на себя берут, поэтому логично какой-то повторяющий функционал выносить в дополнительные классы.
Денни Преслер (Danny Preussler) рассказал про внедрение зависимостей на котлине с помощью Koin и Kodein. Он сделал вывод о том, что Dagger достаточно неплохая библиотека, но если использовать Koin и Kodein, то можно инжектить зависимости через делегированные свойства и это гораздо удобнее.
И последний доклад рассказывал Пас Падженкар (Parth Padgaonkar). В докладе рассматривался способ преобразования синхронного кода в Rx код. В частности был проанализирован код RxBindings (написанный Джейком) и создание кастомного Observable с помощью метода Observable.create. Оказывается, что многие забывают написать строку выделенную жирным и поэтому при создании Observable возможны утечки памяти.
![](https://habrastorage.org/webt/yw/px/t8/ywpxt8-z7rurtnvqrviylz3hiok.jpeg)
Но последние доклады привлекли не так много слушателей, так как 27 июня в среду сборная Германии играла финальный матч группового этапа со сборной Кореи.
![](https://habrastorage.org/webt/-k/t8/nn/-kt8nnxfmkefri9wjx1pzjp8fxe.jpeg)
![](https://habrastorage.org/webt/_k/be/xl/_kbexlrw3pivntsfe_jdou14de0.jpeg)
![](https://habrastorage.org/webt/qt/9z/sl/qt9zslndq2tkd24g0zeolzyrer0.jpeg)
Позже мне удалось встретится и поболтать с Дмитрием Виноградовым. Это создатель сайта startandroid.ru, информация, размещенная на котором очень полезна начинающим и не только Android разработчикам.
![](https://habrastorage.org/webt/6z/38/gx/6z38gxwlqad6d2i2nvi_xcr2e34.jpeg)
Краткие выводы:
- Уровень докладов в целом чуть ниже, чем на Петербургском Мобиусе, но выше чем на Московском
- Очень классная идея с первым интерактивным днем, так как было время чтобы познакомиться с другими участниками конференции
- Проблемы с закусками и едой в первый день
- Небольшие перерывы между докладами, не хватает времени обсудить доклады, выпить кофе, поболтать со спонсорами
- Никто не следит за регламентом, поэтому ты не только не успеваешь ничего сделать в перерыв, но и опаздываешь на следующий доклад
- Хорошее афтепати после интерактивного дня
- Можно было в свободное время поиграть в кикер, игровые автоматы, дженгу и другие штуки
- Если нет денег на билет, можно записаться волонтером на конференцию, причем не обязательно помогать с организацией целых 3 дня.
Интересные факты одной строкой
- Поболтал и познакомился с огромным количеством людей из разных стран
- Тренды этой конференции: Flutter и кроссплатформенность
- Поболтал с основателем сайта StartAndroid также с ним сфоткался, узнал как он переехал в Германию
- Сфоткался с Ханнесом Дорфманном
- Сказал Джейку Уортану, что я его русский фанат
- Узнал, что в европейский аутсорс конторах нет QA отдела. Тестировщики только со стороны заказчика
- Разработчики-европейцы часто переезжают в более дешевые страны и более дешевые города (например из Шотландии не в Лондон, а в Берлин)
- Разработка и жизнь в Берлине дешевле, чем в других немецких городах (Мюнхен и Кельн)
- В Берлине проблемы оплатой по карте, вам понадобится наличка
- Амстердамцы не отличают запах травы от запаха сигарет