| Путь разработчика PostgreSQL

Руководитель разработки Postgres Professional Александр Коротков рассказал журналу «Системный администратор» о том, с чего начинался его путь в PostgreSQL, какие мотивы им двигали, каким требованиям должен отвечать молодой ИТ-специалист, чем привлекательна карьера в Open Source и трудно ли совмещать ведущему разработчику профессиональную деятельность и увлечения.

Александр Коротков. «Путь разработчика PostgreSQL»
• скачать в формате pdf


Путь разработчика PostgreSQL

«Open Source с хорошим сообществом,
даже если это работа на энтузиазме,
стоит того, чтобы инвестировать
в него свое время»

Александр Коротков — сооснователь и руководитель разработки компании Postgres Professional. Один из трех российских разработчиков PostgreSQL в статусе Major Contributor. Окончил МИФИ с красным дипломом, защитил кандидатскую диссертацию по алгоритмам для пространственного поиска и нечёткого поиска строк, вошедшим в состав PostgreSQL. Также является автором инфраструктуры расширяемости индексных методов доступа, многочисленных улучшений для GiST и GIN индексов, оптимизаций для многоядерных архитектур и многих других улучшений PostgreSQL.


На конференции PGConf.RU 2016 в Москве

 

Сегодня мы поговорим о том, с чего начинался его путь в PostgreSQL, какие мотивы им двигали, какую роль сыграло сообщество в поддержке его начинаний, каким требованиям должен отвечать молодой IT-специалист, чем привлекательна карьера в опенсорсе и трудно ли совмещать ведущему разработчику профессиональную деятельность и увлечения.

— Александр, каким было начало Вашего пути разработчика PostgreSQL?

— Я познакомился с Постгресом ещё в студенческие годы, тогда я использовал его в учебно-исследовательских работах и для разработки веб-приложений. Уже на том этапе он мне понравился своей строгостью, следованию стандартам, расширяемостью и гибкими возможностями индексирования. А начал разрабатывать Постгрес я достаточно спонтанно, когда обнаружил недоработку, связанную с некорректным вычислением расстояния Левенштейна для строк в мультибайтовых кодировках. Например, в utf-8 русские символы представлены двумя байтами, и, соответственно, это расстояние уже вычислялось неправильно. В то время я учился в аспирантуре и мне были интересны различные способы нечеткого поиска строк. Я увидел, что мне вполне по силам поправить эту недоработку в Постгресе, и сделал свой первый патч.

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

— Материалов по Постгресу всегда было достаточно, если учитывать англоязычные ресурсы. А программисту без технического английского двигаться невозможно. Поскольку я интересовался Постгресом, то следил за всем, что появляется в интернете на эту тему, и мое внимание привлек блог Олега Бартунова. Мы познакомились с ним в 2010 году, когда у меня уже были приняты первые патчи в Постгрес. Я с ним списался, приехал в ГАИШ, мы начали обсуждать различные интересные задачи и тогда же решили, что мне стоит участвовать в программе Google Summer of Code. Тогда же я познакомился с Федором Сигаевым. Общение с Олегом и Федором мне очень помогло, особенно на начальном этапе. Например, что касается Google Summer of Code, именно благодаря Олегу я понял, что это вполне реально – просто подать заявку и участвовать в программе. До этого в интернете я встречал упоминания о такой возможности, но это казалось чем-то недосягаемым, казалось, что этим занимаются какие-то небожители... Так что меня очень здорово подтолкнуло то, что я понял — если ты просто грамотно составляешь заявку, то вполне можешь пройти отбор.


На конференции Postgres Vision 2016 в Сан-Франциско


— Расскажите подробнее про Ваше участие в программе Google Summer of Code?

— Можно сказать, что это было моим первым знакомством с международным сообществом. Google Summer of Code — это замечательная программа Google, которая поддерживает развитие опенсорса и вовлечение в разработку новых людей. А новых людей проще всего увлечь, пока они еще молодые, поэтому программа рассчитана на студентов. Она проходит в несколько этапов. Вначале опенсорс-проекты подают свои заявки в Google, где организаторы выбирают, какие проекты одобрить, и выделяют квоты мест — сколько студентов каждый из проектов сможет принять. Потом уже студенты присылают свои заявки и потенциальные руководители выбирают, какие заявки студентов им понравились. Летом начинается непосредственная работа над выбранными проектами, за которую студенты получают стипендию.

Я принял участие в Google Summer of Code в 2011 году с проектом по реализации алгоритма ускоренного построения GiST индексов. Для заявки на тот момент у меня уже был неплохой задел: и принятые в Постгрес патчи, и публикации, и награды. На Google Summer of Code моим ментором (руководителем) был Хейки Линнакангас — это коммитер PostgreSQL из Финляндии, очень сильный разработчик. Он мне подсказал многие вещи, общение с ним было очень продуктивным, и мы до сих пор в хороших отношениях.

— В дальнейшем Вы защитили кандидатскую диссертацию по теме Постгреса?

— Да, я защитил диссертацию и ее предмет как раз связан с моим вкладом в Постгрес. Это усовершенствования по нечеткому поиску строк и по пространственному поиску, который, в том числе, применяется в геоинформационных системах. Научным руководителем работы был Панферов Виктор Васильевич, доцент, заведующий кафедрой информационных систем и технологий МИФИ. В 2012 году я первый раз попал на конференцию разработчиков Постгреса PgCon, которая проходит в Канаде, в городе Оттава. Там я рассказал про свою работу, связанную с индексным поиском по регулярным выражениям. Это было довольно необычно, потому что PgCon — это чисто техническая конференция разработчиков и пользователей PostgreSQL, а я там выступил с работой, которая помимо практической реализации содержала научную новизну. Но сообщество Постгреса отреагировало благосклонно, выступление вызвало большой интерес, было много вопросов. После окончания конференции состоялось не слишком долгое обсуждение работы в mailing list'ах, после чего мой патч был принят в Постгрес.


Вместе с Фёдором Сигаевым и Олегом Бартуновым в офисе Антона Сушкевича на переговорах по основанию компании Postgres Professional


— Во время работы были ли у Вас трудности и как Вы их преодолевали?

— Исследовательская работа в принципе достаточно трудоемкая. В ней есть определенные циклы, когда задачи обдумываются, предлагаются варианты решения, потом проверяются, что-то не получается, приходится начинать заново... В принципе, в этом нет ничего особенного, но для меня было в чем-то неожиданным столкновение с высокими требованиями к качеству кода в сообществе постгресистов. Так, мой первый патч по сути был очень маленьким, но даже при работе над ним всплыл очень большой объем работы. Ревью моего патча тогда делал довольно придирчивый член сообщества - Роберт Хаас, сейчас он уже коммитер. Но я тогда даже не мог себе представить, что в отношении новых каких-то десяти строк кода можно сделать так много замечаний… Плюс потребовалось исследование производительности, чтобы исправление ошибки не приводило к ухудшению производительности в тех случаях, когда старый код работал корректно. Таким образом, этот патч перерабатывался множество раз.

— Оглядываясь назад, сейчас Вы бы рекомендовали молодым ребятам, студентам идти в опенсорсный проект?

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

А когда человек начинает участвовать в опенсорсном проекте с хорошим сообществом, то сразу понимает, чего ему не хватает, чтобы стать разработчиком на мировом уровне. И он практически сразу может начать над этим работать. Он видит свои недостатки. Во-первых, новичок сначала не может объяснить, что он хочет сделать. Не может грамотно сформулировать свои мысли, не говоря уже о том, чтобы изложить их по-английски. Не может предложить архитектуру решения и ее обосновать, написать качественный код, в котором и с наименованием переменных, и с форматированием все будет в порядке. Потом задокументировать его, написать хорошие и понятные комментарии. Провести исследование производительности, написать автотесты. Пока студент сдаёт зачёты и экзамены, немного для себя программирует или подрабатывает, он не замечает в себе этих недостатков и не понимает, что ему надо над ними работать. Поэтому опенсорс с хорошим сообществом, даже если это работа на энтузиазме, стоит того, чтобы инвестировать свое время. Такого расширения кругозора нигде больше не получить, ни в институте, ни на специальных курсах. Это приобретается с большим опытом, но в опенсорсе это можно сделать гораздо быстрее.


В офисе Антона Сушкевича


— Александр, Ваш путь разработчика PostgreSQL можно считать примером успеха. В 2015 году Вы стали сооснователем и руководителем разработки компании Postgres Professional. Над чем Вы сейчас работаете?

— Так или иначе я задействован во всех проектах разработки в нашей компании. С разработчиками мы вместе обсуждаем задачи, зачастую мне необходимо обратить внимание на неочевидные вещи, от которых будет зависеть дальнейшее направление работы. Нашей компании уже 2 года, и она вышла на такой этап, когда ряд направлений развивается самими сотрудниками и нет необходимости подсказывать каждый шаг, что безусловно меня радует. Также я работаю над in-memory движком, который должен стать первым примером подключаемого хранилища для PostgreSQL. На его примере будет создано API, которое мы будем использовать при разработке других типов хранилищ. У меня еще есть несколько сравнительно небольших патчей, которые тоже требуют внимания, например, инкрементальная сортировка. Кроме этого, я занимаюсь ревью патчей других разработчиков и веду работу с сообществом.

— Остается ли у Вас при такой насыщенной профессиональной деятельности время на увлечения, например, путешествия?

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


Вместе с женой Ольгой путешествуя по Италии после конференции ADASS XXVI


— Насколько я понимаю, Вы готовы передавать свой опыт и уже три раза стали ментором в программе Google Summer of Code. А поддерживаете ли Вы контакты со своей кафедрой в университете?

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

Источник: Журнал «Системный администратор»
Выпуск №7-8 (176-177)

Подготовила Наталья Пискунова


См. также:

Интервью

Источник:
Журнал «Системный администратор»