best websites of the world

Павел Хаустов: «Программирование — это кунг-фу»

Опубликовано 01.09.2017 г.

Разработчик Rubius о своей работе и о том, как сделать Томск IT-городом

Когда Павел Хаустов учился в десятом классе, он не собирался становиться программистом. Но спустя 11 лет, в 2016 году, Павел вошел в топ-200 лучших программистов мира по версии проекта Codeforces. Через год вывез собранную им команду Томского политехнического университета на финал чемпионата мира по программированию в США. Сейчас он работает разработчиком в IT-компании Rubius и преподает. О том, как превратить Томск в IT-город и зачем нужно олимпиадное движение, Павел рассказал в интервью нашему порталу.

Pasha_Khaustov_3.png

Не стой на месте

— В десятом классе я был уверен, что не стану программистом, но мои преподаватели по информатике и английскому языку почему-то считали иначе, — вспоминает Павел. — Они были уверены, что у меня все для этого есть. Я сомневался. К тому же считал, что программирование — занятие прикладное, дополнение к другой специальности. Думал, нужно сначала стать специалистом в чем-то.

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

— Я не пожалел. С одной стороны, учиться на программиста сложно, с другой — это хорошие инвестиции в свое будущее. Многие студенты-программисты жалуются на большой объем заданий. У друзей с других факультетов нагрузка намного меньше. Зато потом, когда дело доходит до поиска работы, эти же друзья начинают жаловаться на низкую зарплату, а программисты перестают на что-либо жаловаться вообще…

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

— В 2011 году, когда я поступал в магистратуру ТПУ, у нас программисты уже «болели» компьютерным зрением и машинным обучением. Впервые об искусственных нейронных сетях я услышал где-то на втором курсе бакалавриата. С тех пор отрасль очень изменилась. Сейчас модели в области машинного обучения настолько сложные, что самостоятельно большинство людей даже не пытается их реализовать, стараются найти готовые решения в интернете или у крупных компаний. Есть люди, которые берутся и справляются, но их мало.

Тренируйся

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

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

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

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

24 мая 2017 года в Рапид Сити (США, Южная Дакота) состоялся финал чемпионата мира по программированию, на котором впервые выступила команда Томского политехнического университета. Павел тренировал сборную университета несколько лет.

— Сегодняшнее поколение участников я готовил к чемпионату мира с тех пор, как они были 11-классниками, это довольно необычные люди, в которых сочетаются способности и желание. Обстоятельства и упорство ребят привели к пиковому успеху. Олеся Голуб стала лучшей на мировом соревновании девушек-программистов от Google. Она решила все задачи, что не удалось ни одной из ее соперниц. Николай Кузиванов в 11-м классе освоил алгоритмическое программирование за полгода. Это требует невероятно упорного труда. Третий участник команды, Алексей Ветров, с детства увлекается изучением компьютерных технологий и знает множество языков программирования.

паша.jpg

Мысли стратегически

Помимо основной работы, как и многие его коллеги в Rubius, Павел преподает. Он читает курс «Введение в информационные технологии» в ТПУ.  Каждый год спрашивает первокурсников о том, как они видят работу программиста и почему выбирают эту профессию. Большинство отвечают, что быть разработчиком модно, но не понимают, в чем состоит суть работы. По наблюдениям Павла, добиваются чего-то только те студенты, у которых есть необходимый минимальный набор качеств: усидчивость, хладнокровие и стратегическое мышление.

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

За время работы в университете Павел сформулировал совет, который подойдет не только студентам-программистам.

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

Pasha_Khaustov_2.png

Томск может больше

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

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

Компании по всей России, и не только из сферы IT, заинтересованы в хорошей математико-алгоритмической подготовке кадров, поэтому в европейской части страны в олимпиадное программирование приходят инвестиции. В Томске олимпиады поддерживает компания Rubius. В компании также действует программа по работе с талантливыми студентами. С поездкой томичей на чемпионат мира в США помог директор Института кибернетики Сергей Байдали. Однако олимпиадному движению нужна более широкая поддержка бизнеса и люди, которые бы им жили.

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

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

— За всю историю мирового чемпионата по программированию только от четырех российских городов в финал выходило больше одной университетской команды. Это Москва, Петербург, Самара и Томск. Томск — студенческий город, информационные технологии здесь достаточно популярны. Здесь есть ресурсы, чтобы «слепить» что-то интересное, но сейчас мы делаем гораздо меньше, чем могли бы. Если смотреть дальше на восток, то в Томске уровень существенно выше. Что делать, чтобы вывести Томск на самый верх? Прозвучит банально, но... работать.

Pasha_Khaustov_1.png

Напомним, что в Томске сейчас действует более 100 IT-компаний, работающих на экспорт. По их количеству на 1000 человек город существенно уступает только Москве.