Випускник нашого університету став фіналістом у світовій олімпіаді з програмування ІСРС Challenge Powered by Huawei. Як виглядають такі змагання зсередини? Чи можна потрапити до олімпіадного руху у ХНУРЕ?
На ці та інші питання відповів випускник кафедри програмної інженерії Олег Валлас.
Два тижні тому у китайському місті Шеньчжень закінчилися світова олімпіада з програмування ІСРС Challenge Powered by Huawei. На ній випускник ХНУРЕ, Олег Валлас, здобув абсолютне друге місце. Він перевершив понад дев’яносто провідних програмістів, які зібралися з усього світу для вирішення надскладного виклику.
Наш журналіст Іван зміг вийти з ним на зв’язок і домовитися про інтерв’ю. Тож про те, як проходило змагання, про свій шлях і про те, чому можуть навчити олімпіади, нам розкаже сам Олег Валлас.
Іван:
— Я дуже довго не знав, з чого почати розмову, бо сам ніколи не брав участі у змаганнях з програмування, тим більше в ІСРС.
Тож, будь ласка, розкажіть, як взагалі проходили ті змагання?
Олег:
— Перш за все я дуже рекомендую вам виправити цю помилку і взяти участь у якомусь олімпіадному змаганні. Навіть не заради перемоги, а заради того, щоб відчути цю унікальну атмосферу, цю приємну напругу, коли ваш мозок працює на максимум, а пальці без зупинки пишуть код. Це дуже відрізняється від звичайного процесу програмування.
Саме цей челлендж мав трохи інший формат, ніж більшість олімпіадних змагань.
- Зазвичай змагання проходять в ICPC стилі, коли команда з трьох людей вирішує 10-15 задач протягом 5 годин, використовуючи лише один комп’ютер.
- У челлендж змаганнях, або як їх ще називають — марафонських, кожен учасник змагається індивідуально, і намагається розв’язати одну оптимізаційну задачу протягом всього контесту (змагання з програмування).
- Таку задачу зазвичай неможливо вирішити повністю оптимально, тому організатори визначають спеціальну функцію, яка оцінює наскільки якісне рішення генерує твоя програма.
Конкретно у цьому челленджі треба було розробити алгоритм, який би об’єднував векторні представлення фотографій і текстових описів, а також будував послідовність суміжних представлень. Звичайно, в умовах задачі все описано більш формально, із відповідними формулами й правилами оцінки та порівняння рішень.
Само змагання проходило у великій залі, у кожного учасника був ноутбук, блокнот, 5 годин часу і всі знання та креативність у голові. Таблиця результатів відображалась на великому екрані у реальному часі, що підсилювало атмосферу змагання.
Іван:
— Що ви відчули, коли дізналися результати?
Олег:
— Насправді перші секунди після закінчення змагання — це найемоційніший момент.
Я був дуже сконцентрований і напружений протягом всіх п’ятьох годин, а в останні хвилини ця напруженість стає просто неймовірною, лишається 10 хвилин, потім одна хвилина, потім зворотний відлік — і все!
В цей момент я відчував ейфорію і полегшення одночасно, яке швидко перейшло в радість і усвідомлення що «я це зробив, і зробив дуже круто!».
Але фінальні результати лишаються інтригою, тому я ще не знав, що посів друге місце. Але я знав, що отримав дуже добрий результат, я підходив до найсильніших конкурентів, питав, який результат в них — і був дуже приємно здивований, коли дізнався, що я набрав більше балів. Остаточне місце я дізнався тільки на нагородженні, коли мене запросили на сцену, і в цей момент я звісно відчував гордість і задоволення від того, що я здобув такий високий і бажаний результат!
Іван:
— Що було найскладнішим у змаганні?
Олег:
— Все завжди відчувається легко, коли воно йде добре і за планом. Але найскладніша частина — це коли щось відбувається не так як ти хочеш, і тут треба приймати складні рішення і рятувати ситуацію.
Наприклад, це може бути баг у коді, який те не можеш знайти, чи коли програма не працює, і ти не розумієш чому. Конкретно в цьому змаганні найскладніший момент був у стратегії. Десь після третьої години в мене вже були дуже високі бали, і я вирішив написати зовсім інший алгоритм, який розв’язує задачу надскладним методом, сподіваючись що цей підхід дасть ще кращий результат. Я витратив на цей альтернативний підхід більш ніж годину, але результат виявився гіршим, ніж попередній. І за годину до кінця переді мною став непростий вибір — намагатись покращити цей складний алгоритм, чи повністю стерти його і повернутись до вдосконалення початкового. Я вирішив повернутися до початкового, і це виявилось правильним рішенням. Якби я не зробив цей радикальний вибір у той момент, то навряд чи зміг би посісти друге місце.
Іван:
— Я дізнався ваш контакт від Олександра Вечура. Він же був вашим тренером, коли ваша команда вийшла у фінал на ІСРС 2020 року. Тоді ви писали, що «Найцікавіше ще попереду». Чи він готував вас і до цих змагань?
Олег:
— Тоді найцікавіше дійсно було попереду — у 2020 році ми з командою вибороли честь представляти Україну у фіналі світу з програмування — і виступили дуже достойно, виборовши бронзову медаль! Це було і залишається моїм найбільшим досягненням в олімпіадній кар’єрі. Відтоді мене чекало ще багато перемог, і друге місце на цьому ICPC челленджі теж стало однією з найпрестижніших. Олександр Володимирович вклав величезний внесок як у мої особисті досягнення, так і досягнення нашого університету, і навіть всієї країни. Мені дуже приємно бачити, що завдяки йому олімпіадний рух квітне, і з кожним роком залучаються все більше молодих мотивованих студентів.
Олег — другий зліва.
Іван:
— Кожен з програмістів колись написав свій перший «Hello world». Тож як почали програмувати ви?
Олег:
— Тут я вважаю, що мені на руку дуже зіграв випадок. Як то кажуть, опинився у правильному місці у правильний час.
Після дев’ятого класу я перейшов у математичний клас 45 гімназії, де був далеко не найкращим. Мої однокласники почали програмувати ще у 6 класі, і добре знали математику, але в моїй попередній школі рівень викладання був значно нижче. Тому свою першу програму я написав тільки в 10 класі на Паскалі. Але саме це відставання від однокласників дало мені просто нескінченну мотивацію наздогнати їх, і навіть перегнати.
І ще мені дуже пощастило з вчителем. Микола Олексійович Арзубов викладав програмування як ніхто інший — він вчив нас думати, а не писати код. Недарма стільки його учнів досягли дуже високих результатів в олімпіадній кар’єрі. Тож, весь дев’ятий і десятий клас я розв’язував задачі, навіть без конкретної мети, але мені дуже це подобалось і дуже мотивувало бажання стати кращим.
Іван:
— А як вперше взяли участь в олімпіаді з програмування? Як потрапили в спортивне?
Олег:
— Вперше я взяв участь у районній олімпіаді, це було у далекому 2013 році. Комп’ютери, на яких ми писали код не були підключені до інтернету, тому після змагання судді ходили з флешкою і збирали всі написані програми, щоб потім їх протестувати. Зараз навіть смішно це згадувати. Тоді я добре написав районну олімпіаду, але не зміг пройти міський етап. Наступного ж року я вже сильно прокачав свої навички й потрапив на фінал всеукраїнської олімпіади, де посів 3 місце.
Пам’ятаю, коли тільки починав розв’язувати олімпіадні задачі, не розумів, як це допоможе отримати професію в IT. Я бачив, що «справжні дорослі програмісти» пишуть сайти, розробляють ПЗ для бізнесу та підприємств, але яка компанія найме людину для розв’язання олімпіадних задач?
Тільки згодом я вже зрозумів, що олімпіади вчать тебе думати, розв’язувати складні задачі, писати ефективний код і чудово розуміти алгоритми та структури даних. З такими навичками вже буде просто опанувати будь-яку технологію та побудувати чудову кар’єру у різних секторах IT-індустрії.
Іван:
— Що у спортивному програмуванні ви любите найбільше?
Олег:
— Коли мене питають, навіщо я займаюсь олімпіадами — я виділяю 3 причини.
- Перша і найголовніша — це неймовірно проведений час. Це роки тренувань, змагань, поразок і перемог, подорожі на різноманітні олімпіади у різні країни, навчальні збори, захопливий час проведений з командою і безліч емоцій. Не можу собі уявити кращого способу провести студентські роки.
- Друга причина — це комьюніті. За роки змагань я здобув безліч цікавих знайомих з різних куточків України й світу. Тоді нас об’єднувало захоплення олімпіадами, а зараз вони побудували унікальні кар'єри у різних компаніях та IT-напрямках. Тепер в мене є знайомі в Google, Facebook, Huawei, Apple, Amazon, Microsoft, та в різних сферах - криптовалютах, геймінгу, ML, та інших. І мені завжди цікаво поспілкуватись з кожним, та почути його унікальний кар’єрний досвід та особисту історію.
- І третя причина, хоча для мене це і не було насправді причиною, скоріш приємним бонусом — це практично гарантія успішної кар’єри. Це не секрет, що олімпіадним програмістам простіше пройти співбесіди у Google, Facebook, Amazon та інші технічні гіганти. Якщо постаратися, то можна зробити навіть ще крутішу кар’єру — наприклад, потрапити у провідні трейдингові компанії, чи побудувати власний стартап.
Іван:
— Чи є у вас якась мрія, яку ви дуже хотіли б здійснити?
Олег:
— Моєю найбільшою олімпіадною мрією було отримати медаль фіналу чемпіонату світу, і цю мрію ми здійснили разом з моєю командою у 2021 році! Цей момент я не забуду ніколи. Зараз же я до мрій ставлюсь більш філософськи — вважаю, що треба цінувати те що маєш, бути щасливим у моменті, тоді й мріяти не потрібно.
Іван:
— Чи плануєте ви ще брати участь у змаганнях? Якщо так, то які будуть наступними?
Олег:
— Моя професійна олімпіадна кар’єра можна сказати вже завершилась. Я більше не студент і не можу брати участь у головному змаганні — ICPC. Але це зовсім не означає, що я повністю покинув олімпіадну діяльність. Я з цікавістю продовжую брати участь у різних онлайн олімпіадах, яких на щастя зараз велика кількість. Наприклад, я регулярно беру участь у змаганнях на українській платформі Algotester, особисто знаю авторів цієї платформи, вони роблять величезну роботу для підтримки олімпіадної активності в Україні. Прямо зараз там проходить 10-денний челлендж, я вже маю ідеї щодо розв’язання, раджу іншим теж долучитись! А ще я дуже вболіваю за молоді команди з нашого університету, бажаю їм потрапити на фінал, і я з радістю долучусь до нашої делегації у якості со-тренера!
Поточний челлендж на https://algotester.com/uk
Іван:
— Що б ви порадили тому, хто також хотів би почати свій шлях у спортивному програмуванні?
Олег:
- По-перше, це вже дуже круто, якщо є бажання почати такий шлях! Одразу хочу сказати, що це буде важко, але ти точно не пожалкуєш!
- Головною порадою від мене буде не здаватися занадто рано.
Звісно, спочатку буде складно, будуть поразки та розчарування. Але як тільки відчуєш смак першої перемоги, вже не зможеш зупинитися — будеш хотіти пережити це відчуття знову і знову, і почнеш ставити для себе все більші цілі. - Ще побажав би знайти круту команду, тому що студентські олімпіади здебільшого командні, і дуже важливо, щоб твої співкомандники не тільки були мотивовані й розумні, а щоб у вас був, як то кажуть, спільний вайб :) І щоб усі тренування і змагання проходили весело і з задоволенням.
- Ну і звісно вирішуй задачі, багато задач, це ключ до успіху.
Бесідував Іван Синенко