Конференція Highload fwdays'19 — Autoscale, MySQL 8.0, Neo4j, Kafka and AWS Lambda | 05.10 | Київ

Из зоны комфорта на европейскую конференцию: как я подготовился за 28 дней и выступил впервые

Привет, меня зовут Глеб, я работаю в Django Stars на позиции Senior Software Developer. Семь лет назад один хороший парень (привет, Niko Skrypnik!) привел меня в мир Python, и с тех пор я работаю в сфере web, пройдя путь от создания сайтов для баптистов из Огайо и эзотериков из Таиланда до разработки fintech/CRM/real estate продуктов.

Публичные выступления никогда не были моим коньком, но так вышло, что в апреле 2019 года я рассказал о том, как и зачем использовать SQLAlchemy Core в проектах на Django. И сразу со сцены главной конференции для Django community в Европе — DjangoCon Europe 2019.

Выступление на конференции

Как я решился выступить на конференции

Хочу сразу отметить, что я — не тот человек, который может с легкостью говорить ртом, концентрировать на себе внимание окружающих и уж тем более толкать публичные речи.

В интернетах пишут, что это называется глоссофобией или страхом сцены, в моем случае в гармоничном сочетании с интровертностью как таковой. Весь мой опыт в области вещания сводится к очень давним и единичным случаям: защита диплома, случайное пятиминутное выступление на lightning talk в Днепре о Zope framework и один внутренний доклад в компании аля sharing experience по окончании одного интересного проекта. Собственно, и все. Поэтому это событие мне чем-то напоминало ситуацию, когда вывозят на середину реки и сбрасывают в воду, чтобы научить плавать. Так и тут, вместо постепенной тренировки на небольших локальных митапах — сразу на европейскую конференцию.

Тема доклада и заявка на выступление

Вся история с выступлением на DjangoCon Europe 2019 на самом деле началась за полтора года до самого мероприятия, когда к нам в компанию зашел проект, связанный с анализом данных из EMR-систем (electronic medical record). Если кратко, это агрегация и построение графиков эффективности отделений разных клиник, на основании которых менеджеры и владельцы сетей поликлиник и больниц могут оценивать эффективность и оптимизировать свой healthcare-бизнес.

На этапе выбора технологий мы пришли к выводу, что Django ORM по ряду причин не подходит для этой задачи, поэтому начали смотреть в сторону SQLAlchemy. В то же время от самого Django нам не хотелось отказываться, потому что он из коробки покрывал все остальные задачи, связанные с работой web-приложения (админка, юзеры, пермишены, переводы и т. д). Так и появилась идея сделать связку Django + SQLAlchemy Core. Оказалось, что на эту тему информации и гайдов почти не было, разве что пара пакетов на GitHub о Django + SQLAlchemy ORM. Ощущая себя первооткрывателем, я с удовольствием принялся за работу.

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

Так родилась небольшая статья на эту тему «Merging Django ORM with SQLAlchemy for Easier Data Analysis» — она и стала первым шагом к подготовке полноценного доклада.

В феврале за неделю до закрытия call for proposal на DjangoCon Europe от нашей компании поступило предложение всем желающим или раздумывающим подать заявки на участие. В итоге решились на такое три человека, включая меня. Ровно через месяц всем нам пришел отказ, мы выдохнули и расслабились.

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

«Dear Gleb,
After some late modifications to our programme, we are happy to announce that your submission was accepted to DjangoCon Europe 2019».

После этого уснуть я уже не мог и начал считать дни до начала конференции. 28 дней. Всего 28 дней, а из материала у меня небольшая статья, в которой лишь 1/10 того, о чем планировал рассказать. Отсчет пошел.

Подготовка к выступлению: что и зачем

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

Почитав статьи по сторителлингу и послушав советы от опытной на этом поприще сотрудницы Насти Марушевской (которая как раз эту тему поднимает на своем курсе для копирайтеров в Projector), я начал задумываться о структуре выступления.

Первым делом нужно ответить себе на единственный вопрос, от которого все берет начало: Какую мысль я хочу донести до людей в своем выступлении? Запомните ответ. Он будет надежным компасом и опорой на многих этапах, даже когда вы будете подниматься на сцену к трибуне спикера. Для меня было важно рассказать людям, что Django ORM — не панацея, что и есть другой удобный инструмент, которого не нужно бояться и, как минимум, стоит рассмотреть перед началом разработки определенного типа проектов.

Следующий шаг — сделать план доклада, который следует сразу озвучить аудитории. Для себя я решил его сделать таким:

  1. Зачем это нужно и в каких случаях эти знания можно применить с пользой (чтобы заинтересовать интересующихся и сомневающихся).
  2. Почему стоит отойти от привычных правил/инструментов и рассмотреть альтернативу (SQLAlchemy Core).
  3. Как происходит интеграция такого решения на примерах.
  4. Плюсы и недостатки: о чем важно знать и помнить.

Что было самым сложным

Во время подготовки презентации было два взаимозависимых вида трудностей.

Первая трудность — контент.

Необходимой мне информации нигде не было. Нужна была сильная аргументация того, почему Django ORM не подходит: какие запросы не может построить, какие строит неоптимально и какие нельзя оптимизировать (не спускаясь до уровня raw SQL), что неудобно/трудно/нечитаемо. Без сильной аргументации выступать с докладом не имело никакого смысла.

Львиная доля времени ушла именно на этот этап — искал интересные SQL-запросы в интернетах и пытался реализовать их на Django ORM, спрашивал о нетривиальных случаях у коллег на соседних проектах (и искал в своих). Потом, взглянув со стороны, понимал, что примеры недостаточно хороши либо неожиданно находил решения — приходилось все выкидывать и начинать исследовательскую деятельность заново. А часики-то тикают. Закончить эту часть удалось лишь за неделю до начала конференции.

Отсюда вытекала вторая трудность — психологическая.

Мысль о том, что не с чем ехать выступать, очень давила и держала в напряжении, превращая каждый день, без лишних подробностей, в ад.

В день выступления, естественно, не спалось и был мандраж. Очень сложно далось начало выступления. Особенно сильно отпечаталась в памяти пауза, когда тебя уже объявили, зал притих, а ты еще не начал свою речь. В этот момент физически ощущается сконцентрированное внимание публики и осознание того, что ближайшие 35-40 минут единственным действующим лицом буду я. К счастью, с каждой минутой было все меньше и меньше посторонних мыслей. Знакомые слайды прямо перед глазами были надежным ориентиром на протяжении всего выступления и помогали строить речь по заранее проторенным дорожкам.

Что бы я сделал по-другому

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

Второй момент: при подаче заявки на выступление я бы выбрал 50 минут, а не 30. Изначально я и не предполагал, что окажется так много материала. В итоге пришлось некоторые моменты упускать, о чем-то говорить вскользь и очень быстро переключать слайды. Кстати, у меня их было 64, то есть нужно было идти в темпе 30 секунд на слайд. А на некоторых еще и код был... При подготовке в основном приходилось обращать внимание на то, насколько быстро я говорю, чтобы успеть в отведенный таймслот. Вследствие пострадало качество и усложнилось восприятие материала.

Выступление на конференции

Рекомендации тем, кто хотел бы выступить на конференции

Главный мой совет: найдите тему, которая цепляет и побуждает рассказывать о ней. Например, об опыте интеграции разных инструментов, о найденных best practices, об архитектурных решениях, о чем-то прикладном/новом/мотивирующем — то, что будет полезно сообществу и после чего к вам подойдут и скажут: «Спасибо, это был отличный доклад, мы как раз с этим столкнулись». Грустно и скучно смотреть на выступления, где просто пережевывают документацию.

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

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

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

В случае интернационального выступления стоит уделить внимание грамматике и произношению, рассказав доклад репетитору. Например, правильно строить предложения и использовать нужные времена, выписать и переучить слова, которые привыкли говорить неправильно. Сюда также относятся термины, названия библиотек/инструментов, акронимы — их можно подслушать у других выступающих в Youtube. Нужно убедиться, что не используется ежедневный рабочий IT-сленг, так как мы этого можем даже не замечать, а иностранцы попросту не поймут. Один из примеров — «апи пойнт», а по-хорошему должно звучать как «эйпиай эндпойнт».

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

Советы тем, кто боится выступать

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

Дополнительным двигателем должна быть тема, а именно ее полезность, желание поделиться знаниями, мотивировать, расширить кругозор, подкинуть хороших идей и показать интересный подход. Сделать свой вклад в развитие комьюнити и пополнить базу знаний отрасли.

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

Уставшие, но довольные лица. Коллега Александр Рябцев тоже дебютировал на сцене с Lightning talk

Жизнь после выступления

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

После выступления остается приятное ощущение от того, что поделился чем-то полезным и новым, что кому-то эта информация пригодится и натолкнет на правильное решение. Чувство, что сделал вклад в community и добавил больше информации в определенную нишу, в которой ее было не так уж и много. Из-за этого появляется желание продолжать делать такие вклады в сообщество.

В состоянии аффекта даже возникали мысли поехать на первый в истории Pycon Africa в Гану в августе, однако со временем настолько радикальный запал утихает. Да и цены на перелет намекают не совершать таких импульсивных поступков. Возможно, расскажу этот же доклад на PyCon Ukraine осенью. Моя следующая цель — искать темы для новых статей и докладов, чтобы они были полезные и недостаточно информационно освещены, потому что именно это добавляет энтузиазма, сил и энергии для социально полезных активностей.

Еще появилось четкое понимание того, что если хочется чего-то достигнуть, то нужно полностью этому отдаваться. Время, силы, да и себя самого. Будь-то доклад на конференции, запуск стартапа, изучение языка программирования, либо покорение фортепиано. Когда изо дня в день упорно двигаешься в намеченную сторону — обязательно будет результат. Главное — в трудные моменты не терять мотивацию и мысленно проговаривать, зачем ты это делаешь. Банально, но эту мысль мне удалось прочувствовать, и надеюсь, это поможет двигаться дальше.

Вот материалы моего выступления:


Читайте также:

Как стать докладчиком на международной конференции: пошаговая инструкция

Как побороть страх публичных выступлений: советы бизнес-тренера

LinkedIn

4 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Хороша робота! У самого подібний кейс. Я до останього не хотів міксувати дві ORM, але для проектів де є багато агрегації, графіків і т.д то набагато зручніше і швидше ніж Django ORM. Єдиний наслідок, на мою думку, це зростання порогу входу в проект, особливо для розробників у яких мало досвіду. Їм доведеться розбиратись з SQLAlchemy.

Да, согласен, сложность вхождения немного возрастает. Но для меня основным недостатком было наличие двух коннекшенов к бд, и с этим явно столкнулся во время написания тестов. Правда, недавно узнал что `aldjemy` позволяет переиспользовать коннекшн джанго, что очень облегчает жизнь. А как вы делали интеграцию на проекте, что использовали и были ли какие-то трудности?

З самого початку використали `aldjemy`. Складнощі були, якраз в зростанні порогу входу в проект. Всі звикли читати прості квері в Django. Крім того, тестів довелось багато писати, щоб покрити агрегації.

Спасибо, крутая статья! И очень своевременная в моём случае)

Подписаться на комментарии