Гайд по айтишному движу Петербурга. Часть 1: Хардкорные митапы
Магистрантка факультета безопасности информационных технологий Университета ИТМО Алиса Хорошавина написала в блог ITMO.NEWS о том, куда сходить айтишнику в Санкт-Петербурге.
Иногда у меня спрашивают разработчики из других городов и студенты, куда сходить айтишнику в культурной столице. За время организации митапов про Python и мир разработки вокруг в PiterPy Meetup я коллекционировала IT-ивенты, чтобы перенимать лучшие фишки и адаптировать их под целевую аудиторию. В этом обзоре систематизированы впечатления от регулярных митапов наиболее крупных IT-сообществ Петербурга: Golang Piter, Fprog, C++ User Group, SpbDotNet, PiterPy Meetup, PyLadies, Django Girls, Spb Python, Frontend Spb, PiterJS, ODS, SpBDSM, семинары в JetBrains Research, Университет ИТМО и его НИИ, CSC, РАН. Рассмотренные мероприятия бесплатны и открыты для всех, но почти везде требуется предварительная регистрация (для учета количества участников при бронировании помещения, организации кофе-брейка и закупки мерча). Почти у всех есть youtube-каналы, где можно посмотреть записи с прошлых митапов, и телеграм-чаты, где удобно отслеживать анонсы. Возможно, не менее интересно на митапах, до которых я пока не дошла. Может, кто-то захочет продолжить обзор и заполнит лакуны.
Краткое введение в IT-субкультуру
Специфика работы программиста подразумевает необходимость фокусироваться на решении узкоспециализированных задач. Но рынок меняется динамически, и экспертам по конкретным технологиям адаптироваться непросто.
К тому же, в последнее время наблюдается тенденция требовать от одного человека совмещать функционал разных специалистов. Например, от бекендеров и фронтендеров все чаще ожидают компетенций fullstack’ов, от data scientist’а требуют одновременно быть devops’ом или делать визуализации данных за программиста d3 и дизайнера. Если раньше можно было схематично выделить два пути развития разработчика: технический (senior developer, tech architect) и менеджерский (тимлид, менеджер проекта, продуктовый менеджер, CTO), то сейчас различают множество оттенков, от эксперта в определенной технологии до технического евангелиста, который должен мониторить тренды в разных областях IT, разбираться в IT-маркетинге и специфике построения коммьюнити (devrel). Появилась мода на T-shaped инженеров: вертикальный штрих в букве соответствует специализации, горизонтальный — кругозору (хотя термин «T-shaped person» был введен Дэвидом Гэстом почти 30 лет назад). Такие разработчики глубоко погружаются в свою специализацию, но периодически выныривают на поверхность и выхватывают поверхностные знания из разных областей.
Дефицита мероприятий в Петербурге нет, почти каждую неделю проходят ивенты для разработчиков разного формата. Как заметил организатор конференций JUG.ru, изначально митапы организовывались для обмена знаниями и напоминали душевные сходки для узкого круга друзей из разных компаний. Сейчас организаторы митапов смещают акцент на общение с близкими по духу и полезный нетворкинг.
Среди спикеров есть как гуру публичных выступлений, которые обкатывают доклады перед конференциями, так и неопытные спикеры. Хотя чаще всего есть что сказать именно тем занятым инженерам, которые мало ходят на митапы. Такие под заботливым присмотром организаторов на предпрогонах проходят путь Демосфена, а потом сами ловят драйв от ощущения связи с аудиторией единомышленников. Кстати, если в Москве митапы организовываются преимущественно при компаниях (хотя есть и IT-коммьюнити), то в Петербурге митапы поддерживаются сообществом на добровольных началах. В поисках общения с близкими по духу наиболее оптимально не привязываться к определенному коммьюнити, а «голосовать ногами», каждый раз выбирая митап с наиболее актуальными для вас темами докладов и самыми харизматичными спикерами.
Если на фесты и конференции в Петербурге вы раньше не заглядывали, можно посмотреть список из более чем 20 IT-сообществ на сайтах крупных фестов и meetup.com. Ради знаний более продуктивно не распыляться и сходить раз в год на крупную конференцию (желательно выбрать конференцию, организованную разработчиками для разработчиков и с логично выстроенной программой, без маркетинговых докладов и толп «эйчаров»). Если интересно, чем живут коллеги из других экосистем, можно посетить раз в год фест для разных IT-сообществ и компаний, вроде TechTrain и ITGM, которые также организуют разработчики. От околонаучных фестов от маркетологов с калейдоскопом софткорного контента (нейроинтерфейсы, лекции о полиамории, круглые столы о гендерных проблемах в IT или этике ИИ) у любителей хардкора остается впечатление, которое можно описать строчкой из песни: «и бродят в праздной суете разнообразные не те».
ХАРДКОРНЫЕ МИТАПЫ
Если хочется докладов про внутренности технологий и хайлоад, общения с любителями писать функции на ассемблере и сетевые драйвера, «гоу» на митап Go. Также там любят обсуждать архитектуру приложений, серверов и БД (несмотря на то, что сервисы на Go небольшие). Для задач, вроде «вписать в большой проект прогресс-бар 16×30 с прокруткой» нужно понимать, как код будет выполняться в системе. Сообщество существует с 2013 года, раньше проводилось по два митапа в год, сейчас по четыре. Обычно на митапе 3−4 глубоких доклада (в отличие от многих других митапов, где два доклада и хардкорный из них только один). Иногда доклады проводятся в формате live-coding сессии. Спикеры выстраивают выступления, отталкиваясь от решения конкретной проблемы и почти не используют на слайдах рассеивающие внимание мемы, зато дают много кода. С целью собрать людей, говорящих на одном языке, отсекаются доклады про devrel и мир разработки за пределами Go. Подтверждение регистрации на митап производится вручную после проверки, хотя формальных критериев отказа нет и не пускают на митапы разве что эйчаров. Между толпами, собранными методами маркетинга, и качеством аудитории организаторы выбирают второе. В отличие от остальных сообществ, гоферы игнорируют телеграм-чаты, их коммьюнити консолидируется в не располагающих к многословию Slack и Google Groups. Несмотря на отсутствие SMM, сообщество активно растет. Сейчас их мероприятия собирают более ста участников, что нетипично для хардкорных митапов. Гоферы словно по жизни следуют принципу бритвы Оккама: «Отсекай неиспользуемые импорты и переменные, иначе программа не скомпилируется и конечная цель не будет достигнута». Goal.go организаторов -- продвижение Go там, где он оказывается эффективнее привычных инструментов, но не используется либо от недостатка мотивации учить новое у разработчиков, либо от недостатка способности принимать волевые решения у менеджмента. Целевая аудитория — инженеры, которые не смотрят на машину, как на черный ящик, и имеют опыт программирования на других языках и/или хорошую математическую подготовку. Несмотря на то, что синтаксис Go можно выучить за выходные, при решении задач приходится задумываться о вещах за пределами кода: о категории типов, масштабируемости, файловых системах, предикторе на CPU и пр.
Дизайнеры Go исходили из идеи ограничить разработчика по максимуму, чтобы даже самый плохой код можно было прочитать. Противоположный подход — привить хорошие паттерны — наиболее полно реализуют создатели IDE и линтеров. Линтер может дать больше полезных советов, чем иной спикер, который хочет оставаться на слуху, не создавая и не улучшая технологии. Если интересно, какие новые идеи зарождаются в этой области, стоит заглянуть на семинары разных исследовательских лабораторий в JetBrains, где разбирают публикации про компиляторы, LLVM, предметно-ориентированные языки (DSL), векторизацию кода для линтеров, автоматический фиксинг багов, возможности ревью кода и рефакторинга методами глубокого обучения и другие. Семинар обычно включает один длинный глубокий доклад и дискуссию. На слайдах много формул и нет кода, о практической применимости результатов говорить не любят, как истинные математики. Хотя на гитхабе можно посмотреть некоторые реализации подходов, например, плагины для IDE с DL под капотом. Семинары открыты для всех, основной контингент — студенты магистратуры Университета ИТМО при JetBrains и студенты матмеха СПбГУ. Иногда встреча проходит в формате обсуждения доклада приглашенного профессора. Из интересных работ студентов можно отметить обучения модели генерировать код на Python из английского и исследование возможностей создания удобного и безопасного DSL для смарт-контрактов. В целом DSL вписываются в тренд развития языков программирования по пути абстрагирования от низкоуровневых задач и предоставления разработчику большей возможности сфокусироваться на бизнес-задаче. С одной стороны, это связано с усложнением систем. С другой стороны, менеджеры часто оказываются недостаточно компетентны, чтобы грамотно декомпозировать задачу, и разработчику приходится прорабатывать концепцию самостоятельно. Кстати, если современные IDE вы не любите и предпочитаете строить свои велосипеды из githooks, ctags, BBedit и прочее, ищите единомышленников на PiterPy Meetup (даже уже был доклад на эту тему, можно посмотреть запись на youtube-канале).
Обсудить велосипеды и DSL можно также на митапах Fprog, в формате хардкорных рассказов «мы писали сначала на Haskell, но потом подумали, что получается слишком сложно, и легче написать свой DSL». В сообществе Fprog камерная атмосфера, участников немного и нет случайных. Возраст и опыт участников позволяет им с ностальгией вспомнить, в каком языке 20 лет назад была такая же концепция returner’a, как в Хаскеле. Все — инженеры с внушительным бэкграундом в разработке на разных языках и хорошим вкусом. Они относятся к программированию как к искусству, и в функциональном программировании их привлекает смесь изящества и академизма. Доклады и обсуждения тесно переплетены. Спикер по ходу выступления прерывается на вопросы или адаптирует подробность изложения материала соответственно комментариям из аудитории. Это очень интересный формат, и реализовать его возможно только для небольшой компании давно знакомых между собой людей. Обсуждаемые темы затрагивают профилирование кода на Haskell, рецепты изящного сокрытия обработки ошибок в монадах, теорию категорий, необычные практические приложения функционального программирования, вроде компьютерной лингвистики или разработки ОС. Несмотря на то, что презентации в основном посвящены Haskell, Elixir, Erlang, Lisp и его диалектам, в кулуарах участники митапа обсуждают Java, Kotlin, TypeScript и Python. Они спорят, есть ли языки, которые можно назвать функциональными, или же это просто образ мышления. Один из постоянных участников выступает также на сходках PiterPy Meetup. Функциональщина — это как фигура и фон в гештальт-терапии: кто-то видит велосипед, кто-то наслаждается красотой инженерных решений, но все закрывают свои гештальты от недостатка творческой самореализации при работе над типовыми задачами. Перед тем, как приходить, стоит посмотреть доклады с прошлых митапов и pet-project'ы сообщества на их коллективном гитхабе.
Если хочется еще больше хардкора, вам на митапы про опыт и боль разработки на современном С++. Доклады достаточно точно характеризует слайд одного из спикеров: «Общие слова закончились. Надеюсь, было понятно». На митапах разработчиков С++ обычно один длинный доклад и общение. Сообщество придерживается Берлинского Code of Conduct. Темы в основном связаны с алгоритмами и структурами данных, шаблонами проектирования, управлением памятью, изменениями в языке (для обсуждения новостей приглашают членов Российской рабочей группы по стандартизации С++). В Петербурге встречи C++ User Group проходят примерно раз в квартал, поскольку сложно ежемесячно находить спикеров, которым действительно есть, что сказать. Разработчики, обладающие достаточной экспертизой, обычно очень загружены, а времени на подготовку длинного выступления по сложной теме уходит больше, чем на написание статьи. На слух технические детали воспринимаются сложно, поскольку аудитория не имеет возможности перечитывать или пропускать определенные абзацы.
У сишарпистов свой сишарм. Многие участники митапов DotNet пишут не только на C# и F#, но и на С/ С++ и др. языках не из стека .NET. Возраст и опыт позволяет им рассуждать о новых фреймворках по паттерну: «Все новое — хорошо забытое старое; думаю, <технология Х> повторит судьбу <технология Y>». Участникам выдают при входе «проприетарные пакеты» с полезным мерчем — хорошего качества кружки, блокноты, магниты с логотипом комьюнити. На других митапах участники обычно сами подходят к столу с мерчем и выбирают стикеры либо пытаются выиграть в розыгрыше лицензию на бесплатное пользование продуктами спонсоров. Разработчики .NET относятся к деньгам, как Microsoft, что заметно по оговоркам: «на входе любой задачи деньги», «пользователь оставляет на сайте деньги и данные». Тематика докладов охватывает широкий спектр тем от специфики Enterprise-приложений до CLR: модели памяти .NET, троллинг компилятора с помощью типа dynamic, внутренности Rider’a, статистический анализ кода, функциональный .NET, web-безопасность, CI/CD и даже Data Science средствами Azure ML или оберток на C# к библиотекам на С++. Иногда спикеры пишут небольшие приложения специально для демонстрации во время докладов. Не так давно митап проходил на английском языке, поскольку приезжал с докладом один из самых известных дотнетчиков Рихтер. У комьюнити есть совместные pet-project'ы на гитхабе, за участие в которых выдают толстовки.
В следующей части будет уделено внимание митапам с хардкорными и софткорными докладами