«Строить картину мира и преодолевать невидимые стены»
Андрей Бородин вёл бизнес с друзьями в Екатеринбурге, работал охранником, продавцом и разработчиком, подменял преподавателей на лекциях в университете, а потом пошёл в аспирантуру и остался учить студентов на родной кафедре. Лекции и семинары в вузе и практика в индустрии помогли ему систематизировать опыт и превратить его в курс по алгоритмам в ШАДе. А случайное опоздание на самолёт обернулось работой в Яндексе. Об этом и о том, как сделать любимое дело профессией и почему не нужно уезжать из родного города, мы поговорили с Андреем, преподавателем УрФУ и ШАДа и руководителем подразделения по разработке открытых реляционных баз данных в Yandex. Cloud.
Что общего в карьере охранника, продавца и разработчика
Жизнь во время учёбы в УрФУ была насыщенной. Я занимался алгоритмами сжатия данных в компании EnerSoft, параллельно подрабатывал в отряде охраны правопорядка в Екатеринбурге, а в оставшееся время торговал компьютерными комплектующими. Закупал их оптом и продавал в розницу. Разницы в перспективах для охранника, продавца и разработчика заметно не было. Продажа «железа» была самым прибыльным, но и нервным делом, как-то мы ошиблись с ценой и выручку предыдущего месяца отдали поставщикам в качестве штрафа.
На пары я ходил редко, но когда на лекциях слышал, что преподаватели говорят что-то не то, вскакивал и начинал их поправлять
Они относились к этому хорошо и давали мне слово. Прочитать спонтанную лекцию, будучи студентом, весело и интересно.
В середине двухтысячных мы с друзьями открыли бизнес по разработке софта — компанию Octonica. Создавать свои системы — это тоже весело и интересно, но не всегда просто расставлять приоритеты, выбирая между интересными задачами и необходимостью «делать дело», зарабатывать деньги.
У меня в семье много кандидатов наук, а докторов почему-то мало. Чтобы это исправить, я пошёл в аспирантуру. А ещё хотел сделать мир лучше. Идея может и сомнительная, но она до сих пор жива. План был такой: пять дней в неделю я зарабатываю деньги, один день — узнаю новое, делаю что-то полезное для людей вокруг. Так и получилось: пять дней в неделю я решал бизнес-задачи, писал код, создавал системы, проверял, как они эксплуатируются, а один день проводил со студентами. Не всегда основная работа шла так, как хотелось. А когда приходил в университет, это ощущение менялось. Во-первых, всегда была возможность выговориться. Во-вторых, я понимал, что студенты знают ещё меньше, чем я. У них ещё ничего не получается, но они такие весёлые и жизнерадостные. Кажется, всё у них будет хорошо. Наверное, у меня тоже.
Стоит ли уезжать из родного города
Дух студенчества заряжает. Поэтому, когда в 2010 году ребята стали подрастать, я стал приглашать их к нам на работу. Не все, правда, оставались надолго. Тогда я понял, что не просто в воздух говорю или научные статьи пишу, а делаю мир немного лучше. Наука, безусловно, нужна, нужна ради вечности. Но когда ты объясняешь сложные вещи очень простыми словами и видишь, что человек начинает их использовать, случается магия. А потом твой ученик ещё и начинает учить кого-то другого. Я стал замечать, что всё больше людей в моём городе становятся умнее. Мне всегда нравилось думать, что я вроде бы как формирую среду.
Мне нравится общаться с умными людьми, и я радуюсь, если понимаю, что помогаю им становиться умнее
Вообще, я очень хорошо отношусь к путешествиям. Когда в 2019 году я заполнял анкету на канадскую визу, в бланке еле хватило строк для стран, которые я посетил за последние пять лет. Но когда мои студенты спрашивают, нужно ли уезжать из Екатеринбурга, чтобы учиться в московском или питерском ШАДе, я отвечаю так: ехать стоит только ради людей, любые другие цели эфемерны. Ну и программа ШАДа такая сложная, что решение бытовых задач в новом городе будет отвлекать. Дома с этим проще. Если дома хорошо думается, то лучше остаться. Преподаватели в мониторе по большей части те же самые. Пока в Екатеринбурге очно проходят всего два курса.
Конечно, надо поступать в вузы и участвовать в конференциях в других городах и странах. Это помогает не вариться в собственном соку. Первый раз я приехал в Москву в 2004 году на втором курсе, меня пригласили на Всероссийскую олимпиаду по физике. Это красивый город, в котором много умных людей и много возможностей, чтобы узнавать и исследовать что-то новое. Но эти возможности есть и в Екатеринбурге. Наш мир довольно небольшой, если куда-то и ехать — то ехать к людям. Но ведь думать несколькими головами можно и на расстоянии.
Как из лекций в университете сделать спецкурс в ШАДе
Чтобы кому-то хотя бы раз рассказать что-то хорошо, ты должен сам во всём разобраться. Например, в Яндексе мы сейчас развиваем систему сжатия в базах данных, это помогает нам экономить трафик и диски. Основы этой идеи возникли у меня ещё в 2010 году, когда один из преподавателей кафедры Григорий Иванович Панов пошел на пенсию и меня попросили вести курс про каналы передачи данных вместо него. А ещё в 2004 году я работал в компании, которая разрабатывала алгоритмы сжатия данных. Получается, что в вузе я систематизировал свой коммерческий опыт, полученный в индустрии, а систематизированный опыт применил опять в индустрии.
В 2014–2015 годах мне уже предложили читать студентам лекции на темы, которые я знаю хорошо и люблю (это программирование), а спецкурсы отдали более молодым ребятам. Мне досталась группа, которая уже сдала математический анализ, но код писать не умела и вообще не знала, что это такое.
Через три года преподавания я понял: хочу, чтобы студенты, которые ко мне пришли, хотели учиться. И я стал в начале семестра об этом говорить и говорю до сих пор. «Посмотрите налево, посмотрите направо. Вы пришли в среду, которая направлена на то, чтобы вам стать лучше, стать умнее. Чтобы сделать свою жизнь лучше. Рядом с вами безумно талантливые люди. Вы пришли к ним, вы пришли не ко мне. Я помогу вам учиться, но получится, только если вы сами захотите».
В 2013 году я ходил на курс «Информационный поиск» к преподавателю из ШАДа и руководителю екатеринбургского филиала Яндекса Павлу Браславскому. Ходил неофициально, нигде и не числился, сделал несколько домашних работ. Ещё слушал лекции по алгоритмам. В это же время у меня в компании был проект по информационному поиску, было интересно и полезно. А в 2015 году я случайно встретил в кафе Сашу Букина из Яндекса, он тогда занимался образовательной платформой AnyTask. Мы были знакомы и раньше, его брат учился со мной на радиофаке. Мы с Сашей стали обсуждать какие-то алгоритмы, потому что алгоритмы — это прикольно. А через три месяца он позвонил и спросил, хочу ли я преподавать алгоритмы в ШАДе. Я быстро согласился, потом опешил и стал расспрашивать.
Уже на встрече в Яндексе Саша Букин и Ваня Бибилов (он тогда был куратором ШАДа) рассказали мне, как живёт ШАД в Екатеринбурге. Я посмотрел программу курса, решил несколько домашних заданий, мне понравилось, даже захотелось сдать их самому себе. Потом оказалось, что некоторые задачи оптимально решаются совсем не так, как я думал. Это мне рассказали сами студенты на одном из семинаров. Среди них были преподаватели и выпускники мехмата, олимпиадники и даже какое-то количество кандидатов наук. И там я понял, что люди вокруг стремятся к совершенствованию на 100% и именно этим надо заниматься. С тех пор я преподаю в ШАДе курс по алгоритмам. Мы смотрим видеолекции московского отделения, добавляем свои темы и разбираем их, решаем задачки.
Что делать с невидимыми стенами
Мне кажется, каждый семинар должен проходить в формате обсуждения — например, домашних заданий. Так каждый сможет рассказать о проблемах, с которыми столкнулся, и мы вместе придём к правильному решению. Потому что понимание — это не то, что к тебе приходит снаружи и остаётся в голове. Понимание появляется, прорастает в голове, а уже потом рвётся наружу. Поэтому большую часть семинара говорю не я, а студенты. Они в каждом задании должны открыть новый путь и понять, что этот путь ими был придуман. Даже если кто-то из великих решил эту задачу давно, они тоже сделали это, хоть и только сейчас.
Бывает непонятно, как найти решение. Словно головой в стену упираешься. Эти невидимые стены не описать другим людям, потому что сложно объяснить то, чего сам не понимаешь. И сложно понять проблему со стороны, потому что это чужая невидимая стена. Когда происходит диалог и каждый по очереди рассказывает, как он решал задачу, можно почувствовать контуры этих невидимых стен, преодолённые когнитивные барьеры. Это самое классное.
Задача преподавателя — помочь или направить студента так, чтобы он нашёл своё, авторское решение, не застряв в невидимой стене
Мне кажется, информационные технологии активно воздействуют на нашу способность анализировать. Мы словно создаём фильтр, стараясь защититься от избытка информации. Если преподаватель хочет сейчас построить картину мира в голове у студента, с разбега пробить дыру в этом фильтре не получится. Не получится и заставить, например задавить авторитетом, пригрозить будущим призывом в армию. Нужно сделать так, чтобы студент сам захотел изучать программирование. И дальше возникают новые стены: остаться на первом уровне и зарабатывать деньги или перейти на следующий уровень и начать получать удовольствие от знаний. Строить картину мира и преодолевать невидимые стены — интересная для меня задача.
В XX веке конкурентным преимуществом могли быть, например, грузовые автомобили, которые вы производите для собственной компании. Это ваше ноу-хау, ваша технологическая основа бизнеса. Сейчас выбор между автомобильными брендами важен операционно, но не критичен для бизнеса. В английском языке есть подходящее слово — commodity — «товар с полки в магазине, производимый множеством поставщиков». Примерно то же самое с базовыми инфраструктурными технологиями, операционными системами, компиляторами, базами данных. Бренд не особо важен, выгодно делать их вместе со всем миром. Открытые технологии чаще бесплатные, их проще и дешевле развивать, чем покупать. Очень дорогие проприетарные базы данных плавно уступили место бесплатным открытым аналогам.
Выбирая платформу для операционных данных, лучше обратить внимание на ту, которую будут использовать все мировые игроки. Она должна быть популярной среди разработчиков, но не должна являться основой бизнеса и составлять коммерческую тайну.
И здесь сходятся интересы исследователя, инженера, разработчика, который ищет сложные задачи, и интересы бизнеса. Инженер может получить самый новый исходный код в любое время. А ещё участвовать в большом интернациональном сообществе, показывать направления state-of-the-art исследований студентам. А бизнесу надо, чтобы инженер делал это не только в свободное время в субботу, а ещё и в другие дни.
Иногда говорят о том, что сообщество программистов расслаивается на каких-то космических топовых разработчиков и простых копателей, делающих рутинную работу. Если думать о будущем, я не верю в бинарный мир. Я верю, что всегда будет весь спектр. Каким бы ты ни был, всегда есть возможность приложить усилия и стать на ε лучше, полезнее, счастливее, понятливее, оказаться ближе к своей цели. И я верю, что это очень инкрементальная штука: между ε и 2ε всегда найдётся бесконечно много уровней, континуум профессиональности.
Как попасть в Яндекс и превратить хобби в профессию
В 2016 году я занимался развитием базы PostgreSQL. Такую базу пишет сообщество разработчиков со всего мира, а общаются они в так называемом Mailing List, это что-то вроде рассылки по базе. В списке этой рассылки присутствовал Володя Бородин из Яндекса. Мы были заочно знакомы, он часто задавал вопросы на ту или иную тему, а я писал про адаптацию моей кандидатской к исследовательской задаче — индексу GiST. Такой индекс используется в базе данных PostgreSQL, например, для того, чтобы найти объекты в пространстве относительно точки на карте.
Для курса по базам данных мне не хватало информации, я обратился к Володе и Лёше Миловидову, тоже яндексоиду. С последним мы договорились увидеться на выпускном ШАДа. Он почему-то позвал Володю с собой. Мы встретились и стали обсуждать, кто чем занимается. От ребят я узнал о задаче по написанию FDW между PostgreSQL и ClickHouse. Она оказалась такой интересной, что даже в аэропорту я продолжал думать над решением. Писал код в наушниках и пропустил посадку в самолёт, опоздал всего на минуту.
Когда я прибежал к стойке регистрации за новым билетом, там стоял ещё один человек. Как оказалось, он тоже опоздал на этот рейс, и мы вместе пытались попасть на следующий. Сели на соседние места, разговорились. Выяснилось, что его зовут Гриша Назаров, он разработчик. Летит домой в Екатеринбург с собеседования в Яндексе. Я сразу стал расспрашивать о вакансии, задачках и встрече, мы проговорили весь полёт. Ну и, в общем, получилось так, что чуть позже я уже обсуждал задачи Yandex. Cloud, разработку открытых баз данных. Это как раз те задачи, которыми мне хотелось заниматься в свободное время. Так я оказался в Яндексе.
Спустя три года появилось целое подразделение по разработке открытых баз данных, которым я теперь руковожу. Большая череда случайностей привела к тому, что я занимаюсь тем, что мне интересно.