Рубрика:
Разработка /
Вектор роста
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Александр Коротков: «Open Source с хорошим сообществом, даже если это работа на энтузиазме, стоит того, чтобы инвестировать в него свое время»
Александр рассказал «Системному администратору» о том, с чего начинался его путь в PostgreSQL, какие мотивы им двигали, каким требованиям должен отвечать молодой ИТ-специалист, чем привлекательна карьера в Open Source итрудно ли совмещать ведущему разработчику профессиональную деятельность и увлечения
|
Александр Коротков, сооснователь и руководитель разработки компании Postgres Professional. Один из трех российских разработчиков PostgreSQL в статусе Major Contributor. Окончил МИФИ с красным дипломом, защитил кандидатскую диссертацию по алгоритмам для пространственного поиска и нечеткого поиска строк, вошедшим в состав PostgreSQL. Также является автором инфраструктуры расширяемости индексных методов доступа, многочисленных улучшений дляGiST и GIN-индексов, оптимизаций для многоядерных архитектур и многих других улучшений PostgreSQL |
– Александр, каким было начало вашего пути разработчика PostgreSQL?
– Я познакомился с «Постгресом» еще в студенческие годы, тогда использовал его в учебно-исследовательских работах и для разработки веб-приложений. Уже на том этапе он мне понравился своей строгостью, следованием стандартам, расширяемостью и гибкими возможностями индексирования. Начал разрабатывать «Постгрес» я достаточно спонтанно, когда обнаружил недоработку, связанную с некорректным вычислением расстояния Левенштейна для строк вмультибайтовых кодировках. Например, в utf-8 русские символы представлены двумя байтами, и, соответственно, это расстояние уже вычислялось неправильно. В то время я учился в аспирантуре и мне были интересны различные способы нечеткого поиска строк. Я увидел, что мне вполне по силам поправить эту недоработку и сделал свой первый патч.
– Но в то время еще не было документации на русском языке по «Постгресу», не было обучающих курсов.
– Материалов по всегда было достаточно, если учитывать англоязычные ресурсы. А программисту без технического английского двигаться невозможно. Поскольку я интересовался «Постгресом», то следил за всем, что появляется винтернете на эту тему, и мое внимание привлек блог Олега Бартунова (генеральный директор Postgres Professional). Мы познакомились с ним в 2010 году, когда у меня уже были приняты первые патчи в «Постгрес».
Я с ним списался, приехал в ГАИШ (Государственный Астрономический Институт имени П.К. Штернберга), мы начали обсуждать различные интересные задачи и тогда же решили, что мне стоит участвовать в программе Google Summer of Code. Тогда же я познакомился с Федором Сигаевым (технический директор Postgres Professional Разработка). Общение с Олегом и Федором мне очень помогло, особенно на начальном этапе.
Например, что касается Google Summer of Code, именно благодаря Олегу я понял, что это вполне реально – просто подать заявку и участвовать в программе. До этого в интернете встречал упоминания о такой возможности, но это казалось чем-то недосягаемым, казалось, что этим занимаются какие-то небожители... Так что меня очень здорово подтолкнуло то, что я понял: если ты просто грамотно составляешь заявку, то вполне можешь пройти отбор.
– Расскажите подробнее про ваше участие в программе Google Summer of Code?
– Можно сказать, что это было моим первым знакомством с международным сообществом. Google Summer of Code – это замечательная программа Google, которая поддерживает развитие Open Source и вовлечение в разработку новых людей. А новых людей проще всего увлечь, пока они еще молодые, поэтому программа рассчитана на студентов.
Она проходит в несколько этапов. Вначале Open Source-проекты подают свои заявки в Google, где организаторы выбирают, какие проекты одобрить, и выделяют квоты мест – сколько студентов каждый из проектов сможет принять. Потом уже студенты присылают свои заявки, и потенциальные руководители выбирают, какие заявки студентов им понравились. Летом начинается непосредственная работа над выбранными проектами, за которую студенты получают стипендию.
Когда человек начинает участвовать в опенсорсном проекте с хорошим сообществом, то быстро понимает, чего ему не хватает, чтобы стать разработчиком на мировом уровне. И он практически сразу может начать над этим работать |
Я принял участие в Google Summer of Code в 2011 году с проектом по реализации алгоритма ускоренного построения GiST-индексов. Для заявки на тот момент у меня уже был неплохой задел: и принятые в «Постгрес» патчи, и публикации, и награды. На Google Summer of Code моим ментором был Хейки Линнакангас – это коммитер PostgreSQL из Финляндии, очень сильный разработчик. Он мне подсказал многие вещи, общение с ним было очень продуктивным, и мы до сих пор в хороших отношениях.
– Далее вы защитили кандидатскую диссертацию?
– Да, защитил диссертацию, и ее предмет как раз связан с моим вкладом в «Постгрес». Это усовершенствования по нечеткому поиску строк и по пространственному поиску, который, в том числе, применяется в геоинформационных системах. Научным руководителем работы был Панферов Виктор Васильевич, доцент, заведующий кафедрой информационных систем и технологий МИФИ.
В 2012 году я первый раз попал на конференцию разработчиков «Постгреса» PgCon, которая проходит в Канаде, в городе Оттава. Там рассказал про свою работу, связанную с индексным поиском по регулярным выражениям. Это было довольно необычно, потому что PgCon – это чисто техническая конференция разработчиков и пользователей PostgreSQL, а я там выступил с работой, которая, помимо практической реализации, содержала научную новизну. Но сообщество отреагировало благосклонно, выступление вызвало большой интерес, было много вопросов. После окончания конференции состоялось не слишком долгое обсуждение работы в mailing list, после чего мой патч был принят.
– Во время работы были ли у вас трудности и как вы их преодолевали?
– Исследовательская работа в принципе достаточно трудоемкая. В ней есть определенные циклы, когда задачи обдумываются, предлагаются варианты решения, потом проверяются, что-то не получается, приходится начинать заново... Впринципе в этом нет ничего особенного, но для меня было чем-то неожиданным столкновение с высокими требованиями к качеству кода в сообществе постгресистов.
Так, мой первый патч, по сути, был очень маленьким, но, тем не менее, мне пришлось неожиданно много над ним потрудиться. Ревю моего патча тогда делал довольно придирчивый член сообщества – Роберт Хаас, сейчас он уже коммитер. Но я тогда даже не мог себе представить, что в отношении новых каких-то десяти строк кода можно сделать так много замечаний… Плюс потребовалось исследование производительности, чтобы исправление ошибки не приводило к ееухудшению в тех случаях, когда старый код работал корректно. Таким образом, этот патч перерабатывался множество раз.
– Оглядываясь назад, сейчас вы бы рекомендовали молодым ребятам, студентам идти в опенсорсный проект?
– Я бы рекомендовал им участвовать в опенсорсных проектах, особенно в проектах с развитым и зрелым сообществом, таких как «Постгрес». Потому что это отличный шанс поднять свой уровень.
Мне было бы интересно заниматься с молодежью, проводить занятия с людьми, которые только открывают для себя путь разработчика. Потому что это возможность на базовом уровне заложить в них правильное понимание, верный взгляд на вещи – и это бесценно |
Когда человек учится в образовательном учреждении, зачастую он это делает без должного осознания, зачем это нужно, как грамотно оформить результаты, как потом представить свою работу и т.д. То есть практической цели не чувствует. И потом, когда начинающий специалист приходит на работу, вначале ему не дадут ничего ответственного, он станет занимать младшие позиции, так что будет достаточно сложно вырасти и начать делать что-то большое. Находясь на вторых и третьих ролях, бывает трудно даже осознать, к чему надо стремиться.
А когда человек начинает участвовать в опенсорсном проекте с хорошим сообществом, то быстро понимает, чего ему не хватает, чтобы стать разработчиком на мировом уровне. И он практически сразу может начать над этим работать. Онвидит свои недостатки.
Новичок сначала не может объяснить, что он хочет сделать. Не может грамотно сформулировать свои мысли, не говоря уже о том, чтобы изложить их по-английски. Не может предложить архитектуру решения и ее обосновать, написать качественный код, в котором и с наименованием переменных, и с форматированием все будет в порядке. Потом задокументировать его, написать хорошие и понятные комментарии. Провести исследование производительности, написать автотесты. Пока студент сдает зачеты и экзамены, немного для себя программирует или подрабатывает, он не замечает в себе этих недостатков и не понимает, что ему надо над ними работать. Поэтому Open Source с хорошим сообществом, даже если это работа на энтузиазме, стоит того, чтобы инвестировать в него свое время. Такого расширения кругозора нигде больше не получить, ни в институте, ни на специальных курсах. Это приобретается с большим опытом, но в Open Source это можно сделать гораздо быстрее.
– В 2015 году вы стали сооснователем и руководителем разработки компании Postgres Professional. Над чем вы сейчас работаете?
– Так или иначе я задействован во всех проектах разработки в нашей компании. С разработчиками мы вместе обсуждаем задачи, зачастую мне необходимо обратить внимание на неочевидные вещи, от которых будет зависеть дальнейшее направление работы.
Нашей компании уже два года, и она вышла на такой этап, когда ряд направлений развивается самими сотрудниками, и нет необходимости подсказывать каждый шаг, что, безусловно, меня радует.
Также я работаю над in-memory-движком, который должен стать первым примером подключаемого хранилища для PostgreSQL. На его примере будет создано API, которое мы будем использовать при разработке других типов хранилищ.
У меня еще есть несколько сравнительно небольших патчей, которые тоже требуют моего внимания, например инкрементальная сортировка. Кроме этого, я занимаюсь ревью патчей других разработчиков и веду работу с сообществом.
– Остается ли у вас время на увлечения, например путешествия?
– Да, и очень здорово, что путешествия часто удается совмещать с работой. Например, в течение года проходит много конференций, которые мне, как ведущему разработчику, нужно посетить. Иногда есть возможность взять с собой супругу и остаться на выходные. Так что получается одновременно и работа, и мини-путешествие. В свободное время стараюсь заниматься спортом.
– Насколько я понимаю, вы готовы передавать свой опыт и уже три раза становились ментором в программе Google Summer of Code. А поддерживаете ли вы контакты со своей кафедрой в университете?
– С кафедрой я долгое время поддерживал отношения, вплоть до середины 2016 года преподавал как совместитель, на четверть ставки доцента. Но, когда пошел процесс реорганизации в университете, кафедра пережила слияние с другим подразделением и оттуда ушли практически все люди, которых я знал и с которыми работал. Поэтому моя привязанность к кафедре сама собой пропала, к тому же выросла нагрузка на основном месте работы, и на текущий момент я вМИФИ не работаю.
Но в принципе направление преподавания мне очень интересно. Мне было бы интересно заниматься с молодежью, проводить занятия с людьми, которые только открывают для себя путь разработчика. Потому что это возможность набазовом уровне заложить в них правильное понимание, правильный взгляд на вещи – и это бесценно.
Подготовила Наталья Пискунова
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|