«Победить помогло то, что мы не опускали руки даже в самых стрессовых ситуациях» — Семён Сусляков о триумфе в профиле «Программная инженерия в финансовых технологиях»

Семён Сусляков победил в профиле «Программная инженерия в финансовых технологиях», о том, как добиться такого результата, работать над ошибками, что изучать, он рассказал в интервью.
Профиль «Программная инженерия в финансовых технологиях» прошел на базе ИТМО при поддержке Сбера.
— Семён, расскажите пожалуйста, что именно вы делали для того, чтоб пройти в финал и победить?
— Для подготовки к предметному туру НТО сильно помогают материалы прошлых лет, а с инженерной задачей все не так просто. Раньше я принимал участие во многих других олимпиадах по математике, программированию и ИИ: ВСОШ, Всесибирская олимпиада, Innopolis Open, DANO, прошёл двухгодичный курс Яндекс Лицея, второй год обучения в котором был посвящён промышленному программированию и проектированию, различным популярным библиотекам и фреймворкам. Ещё проходил всевозможные курсы на Stepik, начиная с «Основ статистики» и «Введения в Data Science», заканчивая Школой глубокого обучения МФТИ. А победить помогло то, что даже в самых стрессовых ситуациях мы не опускали руки, старались до последнего улучшить результат.
— Сколько времени вы занимались именно искусственным интеллектом?
— Искусственным интеллектом я занимался в течение года под руководством своего наставника Юрия Александровича Кириленко, дополнительные знания я получал на курсах, о которых рассказал.
— Семён, как вы нашли наставника?
— В лицее я учусь в классе, где идет специализация на прикладной информатике, дисциплину «Искусственный интеллект» у нас преподает мой наставник – Юрий Александрович Кириленко. Это замечательный преподаватель, увлеченный своим предметом. Он также является руководителем лаборатории искусственного интеллекта на базе нашей школы, в которой я и занимался на протяжении года. В прошлом году наша лаборатория даже стала победителем конкурса кружков! Юрий Александрович готовил нас не только на занятиях лаборатории, но и был моим наставником в Яндекс Лицее. Поэтому вопрос, как и где найти наставника по профилям НТО, просто не стоял.
— Что было самым сложным на финале? А что самым радостным?
— Сложно было продолжать работать, даже тогда, когда казалось, что все идет не по плану. Самым радостным была неожиданная победа.
— В какие моменты казалось, что все идет не по плану? Победа была неожиданной для всех, или кто-то в нее верил? Кто больше всех за вас порадовался?
— Было допущено очень много ошибок, особенно при отправке финальной версии проекта. За полчаса до отправки выяснилось, что проект не запускается из-за ошибки, которую пришлось экстренно исправлять. Из-за этого мы не успели собрать приложение в Docker-контейнер и потеряли много баллов. Также из-за того, что commit* мы сделали буквально в последнюю минуту, уже после завершения времени выяснилось, что при сохранении файла в нём случайно была напечатана лишняя буква, из-за чего часть функционала не заработала. Это, наверное, было самой обидной ошибкой за все время. Победа была неожиданной для всех, но больше всех ей обрадовались наставник и родители.
— Как вы собирали команду? Как добивались ее слаженной работы?
— На профиле «Программная инженерия в финансовых технологиях» я нашел команду на бирже команд профиля**, меня пригласили в команду, и я вступил в нее. Все участники команды приехали на финал с дружеским настроем, презентами из своих городов. Моя сокомандница Анастасия из Екатеринбурга привезла всем по упаковке местных конфет «Метеор», а я захватил несколько пачек кедровых орехов. Мне кажется, что помог именно позитивный настрой всех участников. Мы выяснили, кто в какой области более подкован, и при получении задачи распределили зоны ответственности. Старались сильно не вмешиваться в работу друг друга, хотя иногда спорили.
— После финала появилось понимание, куда хотите поступать? Где хотите учиться?
— Финалы всех трех профилей, в которых я участвовал, проходили в ИТМО. Мне очень понравилась общая атмосфера в вузе, дружелюбные организаторы и вожатые, которые готовы помочь в любой ситуации. Безусловно, хочется поступить в ИТМО, мне кажется, что это лучший выбор для поступления на технические специальности. И так думаю не только я, многие говорили, что захотели поступить в ИТМО, даже те, кто раньше не задумывался об этом вузе, например, мой сокомандник Павел.
— Что можно сказать тем молодым людям, которые бы хотели принять участие в НТО, но почему-то пока этого не сделали?
— Нужно обязательно пробовать, получать опыт, возможно, проводить работу над ошибками. Участие в НТО — это увлекательно, оно дает возможность пообщаться с ребятами, заинтересованными в том же направлении, что и вы, получить новый опыт, узнать много интересного.
— Можете привести пример как вы, не заняв призового места, провели работу над ошибками, и это помогло?
— На профиле НТО «Большие данные и машинное обучение» моя команда была достаточно далека от призовых мест. Слушая защиты команд, у которых результат был выше, мы поняли, что примерно половина из них пользовались достаточно непопулярной библиотекой RecTools от МТС, про которую мы даже не знали. Ошибка оказалась очень глупой, ведь найти библиотеку было достаточно просто, а мы сразу начали решать задачу традиционными методами. Но этот опыт помог мне сэкономить время на «Программной инженерии в финансовых технологиях», ведь там я сразу начал искать узкоспециализированные библиотеки и фреймворки, что дало нам преимущество во времени и даже в результате. Например, для написания дашборда мы не использовали традиционную связку голый flask + matplotlib, а использовали в связке c flask’ом Dash, который предоставляет готовый интерфейс для построения и взаимодействия с графиками.
— Будете ли вы продолжать общение с командой дальше?
— Обязательно. С некоторыми ребятами мы планируем участвовать в следующем году в том же составе, но я всегда открыт к сотрудничеству.
— В НТО? Или еще где-то? В новых профилях или в «Программной инженерии в финансовых технологиях»?
— В НТО. В следующем году планирую повторно принять участие в профиле «Большие данные и машинное обучение» со своим сокомандником, а в «Программной инженерии в финансовых технологиях» уже в составе другой команды, ведь часть ребят из моей команды в этом году заканчивают 11 класс. Насчёт выбора третьего профиля продолжаю думать.
— Семён, дайте рекомендации тем, кто не смог пройти в финал или не смог победить, но очень бы этого хотел.
— Мне кажется, что нужно использовать все возможные попытки в первом и втором турах. Учиться на своих ошибках, исправлять их, слушать защиты команд победителей и получать новые знания в направлении выбранного профиля.
— Про новые знания. Наверное, речь идет не только про задачи? Что нового изучили вы именно про финансовые технологии?
— В этом году на «Программной инженерии» я достаточно подробно погрузился в парсинг, машинное обучение и архитектуру веб-сервиса в целом, более подробно вникнул в flask. В целом, мне понравилось то, что наша инженерная задача предполагала создание готового продукта, это можно назвать большим преимуществом профиля.
— Можно рассказать про идеи, которые не получилось реализовать?
— Очень хочется попробовать реализовать рекомендательную нейросеть, которая будет показывать результат хотя бы больше 1 (по метрике соревнования), на соревновании мы решили не затрагивать нейронные сети вообще, ведь по опыту с CatBoost посчитали, что это избыточно для такой задачи, и ошиблись в этом очень сильно. Также не успели реализовать часть функционала на «Программной инженерии в финансовых технологиях», из того, что хотелось бы доделать, можно выделить функционал построения предсказания на графике курса.
— Вы планируете развивать разработку, сделанную на финале? Может быть, появились идеи для своего проекта?
— Мне кажется, что опыт, полученный на финалах НТО легко применить к любой инженерной задаче. Я планирую попробовать применить те идеи, которые не получилось реализовать на финалах и с новыми знаниями и опытом принять участие в следующем сезоне НТО, показать хороший результат на финалах.
*Сommit — оператор управления транзакциями языка SQL для успешного завершения транзакции.
**Объединение участников НТО, прошедших второй этап, где каждый может собрать команду или присоединиться к другой.
