— Степан, вы прошли впечатляющий путь от backend-разработчика до главного инженера-программиста в Lumen5. Расскажите, как складывалась ваша карьера и почему вы выбрали именно направление видеотехнологий в web?
— Свой путь в IT я начал еще в школьные годы, учась в физмат-школе СУНЦ НГУ. Увлечение программированием и олимпиадными задачами, где требовалось находить нестандартные решения, определило мой дальнейший путь. Активное участие в олимпиадах не только развило мои алгоритмические навыки, но и научило меня системному подходу к решению комплексных задач. После школы я поступил в Университет ИТМО на направление «Информатика и вычислительная техника». ИТМО предоставил мне не только фундаментальные теоретические знания, но и возможность применять их на практике. Уже с первых курсов я совмещал учебу с работой в IT-компаниях, сначала в бакалавриате, а затем и в магистратуре, что позволило мне получить неоценимый практический опыт.
Выбор видеотехнологий был обусловлен моим стремлением работать на стыке творчества и технологий. Мой бэкграунд во frontend-разработке, включая опыт в создании дизайн-систем, обеспечении доступности интерфейсов и запуске продуктов с нуля, дал мне прочную основу. Однако, меня всегда тянуло к графике и видео, где я видел множество интересных инженерных задач. Я чувствовал, что хочу большего. Видеотехнологии — это именно та область, где передовые инженерные решения встречаются с творчеством, представляя собой идеальное сочетание моих интересов. Возможность постоянного обучения, решения сложных задач и влияния на динамично развивающуюся индустрию стали моим главным драйвером в этом выборе.
— Как руководитель разработки инновационной платформы Lumen5, с какими основными техническими вызовами вы столкнулись при создании видеоредактора с элементами ИИ?
— Разработка видеоредактора с использованием ИИ — это комплексная задача, сопряженная с рядом технических трудностей. Одна из них — высокие требования к вычислительным ресурсам. Алгоритмы ИИ, ответственные за обработку видео, потребляют много ресурсов, и обеспечить при этом плавную и быструю работу редактора — нетривиальная задача. Мы работаем в достаточно ограниченном технологическом стеке, поскольку наш редактор работает непосредственно в браузере, без необходимости установки дополнительного ПО. Это накладывает свои ограничения.
Другая сложность — ограниченность инструментария для работы с видео в браузере. В отличие от нативных приложений, веб-среда имеет свои ограничения, которые затрудняют реализацию некоторых функций. Мы справляемся с этими вызовами, используя различные подходы: оптимизацию алгоритмов, применение современных веб-технологий, таких как WebAssembly, и активно участвуем в разработке open-source библиотек для расширения возможностей работы с видео в браузере. Эти сложности подтолкнули меня к публикации моих исследований и разработок на крупных российских конференциях, таких как HolyJS и Видеотех, чтобы поделиться опытом с сообществом и вместе двигать индустрию вперед.
— Можете рассказать подробнее об ограниченности библиотек для работы с видео в браузере? С какими конкретно ограничениями вы столкнулись?
— Работа с видео в браузере имеет свои специфические ограничения, связанные прежде всего с безопасностью. Песочница браузера ограничивает доступ к аппаратным ресурсам и файловой системе, что необходимо для защиты пользователей от вредоносного кода. Однако это же ограничение затрудняет работу с видео, особенно с большими файлами или при необходимости использовать аппаратное ускорение. Кроме того, производительность JavaScript может быть недостаточной для реализации ресурсоемких алгоритмов обработки видео в реальном времени. Нам всегда было важно найти баланс между производительностью и функциональностью. Мы экспериментировали с различными подходами, включая Web Workers и WebGL. Поэтому мы постоянно ищем нестандартные решения, оптимизируем код и вносим свой вклад в развитие open-source библиотек, чтобы сделать работу с видео в веб-среде более удобной и эффективной.
— Мы знаем, что вы также проделали значительную работу по оптимизации графической библиотеки Lumen5, что позволило значительно снизить затраты на вычисления. В чем состояла эта работа?
— Безусловно, работа над оптимизацией графической библиотеки в Lumen5 стала одним из ключевых направлений моей деятельности. Изначальный анализ показал наличие множества узких мест, требующих индивидуального подхода. Мы применяли комплексный подход, сочетая оптимизацию алгоритмической сложности, параллелизацию вычислений для эффективного использования многоядерных процессоров, а также внедрение более легковесных примитивов для уменьшения нагрузки на память.
Этот процесс не ограничивался только программной стороной. Мы также провели анализ аппаратного обеспечения, выбрав более производительные серверные решения, изучили возможности оптимизации затрат на облачную инфраструктуру и внедрили Preemptible VM instances для снижения расходов на вычислительные ресурсы. В результате, нам удалось сократить затраты на вычисления на 300-500%, что стало ощутимым достижением для бизнеса. Для поддержания стабильно высокой производительности мы разработали систему мониторинга, отслеживающую деградацию и позволяющую своевременно реагировать на любые проблемы — результаты уже видны и имеют долгосрочный эффект. Благодаря этому, мы уже неоднократно замечали признаки деградации на ранних стадиях и оперативно принимали меры.
— Ранее вы также упомянули о вкладе в open-source проекты. Расскажите об этом подробнее. Какие проекты вы поддерживаете и почему это важно для вас?
— Я убежден, что open-source играет критически важную роль в развитии современных технологий. В Lumen5 мы активно используем open-source библиотеки и фреймворки, и мы считаем своим долгом вносить вклад в их развитие. Это не только способ улучшить инструменты, которыми мы пользуемся сами, но и возможность поделиться нашими наработками с сообществом, чтобы вместе развивать индустрию. Хотя мы сами ведём буквально один open-source проект, мы делаем множество мелких правок в различные библиотеки, которые используем.
Несмотря на то, что иногда проще создать решение локально, мы всегда стараемся доработать и улучшить существующие open-source решения. Лично я участвую в разработке нескольких проектов, связанных с обработкой видео и рендерингом в браузере. Это позволяет нам находить оптимальные решения для работы с видео в веб-среде, учитывая все ограничения и особенности этой платформы. Кроме того, работа над open-source проектами — это отличный способ повышать свой профессиональный уровень, обмениваться опытом с другими разработчиками и вносить свой вклад в создание более открытого и доступного мира технологий. Мы в Lumen5 и я лично также поддерживаем некоторые проекты финансово, понимая важность материальной помощи для развития open-source.
Я верю, что поддержка open-source — это инвестиция в будущее технологий и важная часть профессиональной ответственности каждого разработчика.
— Расскажите, пожалуйста, подробнее о вашем опыте работы над open-source библиотекой в Альфа-Банке. Насколько нам известно, вы были непосредственно вовлечены в развитие arui-feather, проекта, который лег в основу многих продуктов банка. Какова была ваша роль в этом масштабном начинании?
— В Альфа-Банке я занимался поддержкой существующей open-source библиотеки UI-компонентов под названием arui-feather. Эта библиотека была опубликована Альфа-Банком в 2016 году и служила основой для создания всех продуктов банка. Мне посчастливилось участвовать в выпуске первых релизов этой библиотеки. Когда я вернулся в Альфа-Банк в 2019 году, я взял на себя роль поддержки arui-feather и других open-source решений банка.
Аrui-feather была, безусловно, прорывным решением для своего времени. Однако за прошедшие 5 лет инструментарий и подходы к разработке UI-библиотек значительно эволюционировали. В связи с этим в Альфа-Банке было принято решение о создании новой, более современной библиотеки. Этим проектом занималась специально выделенная команда, и они проделали отличную работу, сохранив лучшие наработки arui-feather и создав более технологичное решение.
Пока новая библиотека находилась в разработке, я продолжал поддерживать arui-feather, так как основная разработка продуктов банка вплоть до 2021 года велась именно на ее основе.
Стоит отметить, что мой опыт работы с библиотеками компонентов начался еще раньше, в компании Sletat.ru в период с 2014 по 2016 годы. А после моего первого периода в Альфа-Банке (2016-2017, когда я занимался arui-feather), в 2017 году меня пригласили в компанию Wrike, где я также работал над UI-китом — еще одной библиотекой компонентов.
— Помимо успешной карьеры в разработке, вы также преподаете в ИТМО, делясь своим богатым практическим опытом. Расскажите о вашей преподавательской деятельности. Что вас мотивирует заниматься преподаванием?
— Я преподаю дисциплину «Программирование веб-приложений» в Университете ИТМО уже четыре года. Меня пригласили в ИТМО именно для того, чтобы я поделился своим практическим опытом в этой области. Преподавание для меня — это не только работа, но и призвание. Мне нравится делиться своими знаниями и опытом со студентами, видеть, как они развиваются и становятся профессионалами. Я стараюсь дать им не только теоретическую базу, но и практические навыки, которые помогут им успешно начать карьеру в IT.
— Можете рассказать подробнее, как именно вы это делаете? Какие практические задания или проекты помогают студентам лучше усвоить материал и подготовиться к реальной работе в сфере веб-разработки?
— В рамках курса «Программирование веб-приложений» весь учебный процесс построен на практике и максимально приближен к реальным условиям разработки. Студенты работают над небольшими, но самостоятельными проектами, которые позволяют им применить полученные знания и освоить все этапы создания современного веб-приложения. Основная идея — не просто создать «поделку», а пройти весь цикл разработки, от проектирования интерфейсов до развертывания и поддержки. В процессе работы студенты используют современные фреймворки, такие как React, Angular или Vue.js, взаимодействуют с базами данных и API, осваивают системы контроля версий (например, Git), внедряют CI/CD, настраивают мониторинг ошибок и даже работают с бизнес-метриками. Важной частью процесса является написание тестов, чтобы обеспечить качество и надежность разрабатываемых приложений.
Особое внимание уделяется работе в команде, поскольку в реальных проектах разработчики редко работают в одиночку. Я стараюсь создать в группе атмосферу, близкую к реальной рабочей среде, чтобы студенты могли не только получить знания, но и адаптироваться к тем условиям, с которыми они столкнутся после окончания университета. Также я поощряю студентов участвовать в open-source проектах и хакатонах, что помогает им расширить кругозор, получить дополнительный опыт и заявить о себе в профессиональном сообществе. Я верю, что сочетание прочной теоретической базы и практического опыта является ключом к успеху в этой динамично развивающейся области.