Переможцю — до $20 тисяч. 10 найпрестижніших змагань для програмістів

DOU підготував добірку з десяти найпрестижніших змагань, у яких можуть взяти участь як школярі-програмісти, так і студенти й навіть досвідчені кодери. Конкурси подаємо не за рейтингом, однак розповідаємо, скільки на найбільших з них можна заробити.

А ще ми поспілкувались з учасниками таких змагань, які розповіли про свій досвід, типові завдання й мотивацію до участі у конкурсах для програмістів.

👦 Змагання для школярів

International Olympiad in Informatics

Міжнародна олімпіада з інформатики (IOI), за словами організаторів, покликана стимулювати інтерес до цього предмету та інформаційних технологій загалом. Ще одна мета — об’єднати винятково талановитих учнів з різних країн, ділитися науковим і культурним досвідом.

Країни-учасниці олімпіади відправляють на змагання чотирьох учнів, яких попередньо відбирають на національному конкурсі.

Щоб виграти медаль на IOI, потрібно знати, як програмувати однією з дозволених мов програмування (найчастіше це С++) та розуміти принципи роботи з алгоритмами. Організатори рекомендують заздалегідь готуватися до олімпіади, а саме: переглянути задачі з минулих років, придивитися до навчального розділу Комп’ютерної олімпіади Сполучених Штатів Америки (USACO), читати професійну літературу.

До речі, цього року українська збірна виборола на ній два «золота», «срібло» та «бронзу» (на DOU можна прочитати інтерв’ю з двома золотими призерами).

Окрім самої олімпіади, можна взяти участь в онлайн-активностях, окремих конкурсах, за які присуджують грошову винагороду. Наприклад, переможці IOI 2021 CodeCombat Competition отримали:

  • 1 місце — $1000;
  • 2 місце — $500;
  • 3 місце — $300;
  • 4 місце — $200.

На полях IOI 2022 року, яка проходила в Індонезії

🧑‍🎓 Змагання для студентів

The International Collegiate Programming Contest

International Collegiate Programming Contest (ICPC) — змагання з алгоритмічного програмування для студентів університетів, яке організатори називають «найстарішим, найбільшим і найпрестижнішим» у галузі програмування.

Вперше ICPC провели 1970 року в Техаському університеті A&M, і з того часу його межі швидко розширилися: США, Канада, а згодом і весь світ. Конкурс еволюціонував, і 1977 року мав уже кілька рівнів (місцевий, регіональний, національний). А з 1989-го змагання перетворилося на таке, яке підтримують університети з різних куточків світу. Вони проводять регіональні змагання, після яких учасники вирушають на глобальний ICPC World Finals.

Щорічно у відбіркових турах беруть участь понад 60 тисяч студентів-програмістів з понад трьох тисяч університетів, розташованих у 115 країнах.

Змагаються за перемогу університетські команди з трьох студентів, які провчилися не більш як вісім семестрів на очній формі й спеціальностях, що пов’язані зі STEM. Кожній команді дають комп’ютер, десять чи більше складних задач і п’ять годин на те, щоб їх розв’язати.

Задачі на ICPC World Finals дотичні до реальних проблем: це може бути оптимізація розкладу руху метро, модулювання керуванням повітряним рухом, оцінка запасів нафти абощо. Учасники мають прочитати завдання, чітко визначити основну проблему й розробити алгоритми її розв’язання.

Команди, які посідають перші чотири місця, отримують золоті медалі. Ті, хто посів позиції з п’ятої по восьму — срібні, а з дев’ятого місця по дванадцяте — бронзові. Команда, яка набрала найбільшу кількість балів, стає чемпіоном світу й отримує чемпіонський кубок і $15 тисяч. Кожна з трьох інших команд, що отримали золоті медалі, має винагороду у розмірі $7500. «Срібні» команди отримують по $6 тисяч, а «бронзові» — по $3 тисячі.

Imagine Cup

Imagine Cup — конкурс, відкритий для студентів з усього світу і спрямований на визначення найбільш інноваційного, доступного, новаторського програмного забезпечення, створеного за допомогою інструментів і технологій Microsoft.

Взяти участь можуть кодери від 16 років, які навчаються в університетах чи коледжах. Цікаво, що конкурс закритий для учасників Північної Кореї, Судану, Ірану, Куби, росії та мешканців окупованого Криму.

Заявку на участь може подати як окрема людина, так і команда з не більш як чотирма учасниками. Рекомендовано мати наставника з академічної установи, некомерційної організації чи приватної компанії. Також можна заручитися допомогою інших студентів (в галузі графічного дизайну чи створенні бізнес-плану). Члени однієї команди можуть бути представниками різних навчальних закладів і навіть країн.

Аби дістатися фіналу, потрібно спочатку пройти два раунди. У першому раунді є чотири конкурсні категорії, в межах яких можна створити проєкт:

  • Земля: рішення щодо зміни клімату, сільського господарства та екологічних технологій.
  • Освіта: інновації, які допоможуть змінити спосіб навчання студентів у всьому світі.
  • Здоров’я: розвʼязання питань лікування, діагностики, доступності тощо.
  • Лайфстайл: проєкти, які формують звички й поведінку людей в іграх, щоденному житті тощо.

На відміну від звичайних кодерських змагань, тут потрібно приділити увагу ще презентації проєкту, а не обмежуватися суто софтверною частиною.

Команда переможців отримує приз у $100 тисяч та наставницьку розмову з СЕО Microsoft.

🧑‍💻 Змагання, відкриті для всіх

Google Code Jam

Це змагання між програмістами з усього світу, де потрібно розв’язувати складні алгоритмічні головоломки на швидкість. Змагатися можуть лише повнолітні програмісти. Аби розв’язати завдання, учасники можуть використовувати будь-які редактори й мови програмування, а розмір вихідного коду не має перевищувати 100 Кб. Ось тут можна переглянути, які проблеми мали розв’язати учасники останнього Google Code Jam.

Щоб взяти участь у щорічному фіналі Code Jam World Finals, потрібно пройти чотири онлайн-тури. Фінал організовують у різних міжнародних офісах Google (але іноді він відбувається онлайн).

До першого раунду можуть пройти 1500 учасників, а от у фіналі беруть участь 25 найкращих кодерів. Той, хто посяде перше місце, отримує $15 тисяч. За друге місце винагорода становить $2 тисячі, за третє — $1 тисячу, а за 4–25 місця — по $100.

Meta Hacker Cup

Hacker Cup — щорічне відкрите змагання Meta з програмування для учасників з усього світу. Змагання відбувається у п’ять раундів. Будь-хто може взяти участь у кваліфікаційному раунді, який триває три дні. Якщо ви розв’яжете хоча б одну задачу під час цього етапу, перейдете до першого раунду, який триває 24 години.

Щоби перейти на наступний етап, потрібно набрати певну кількість балів (її оголошують перед початком змагання). Другий раунд триває три години. 500 найкращих учасників перейдуть до раунду № 3. Щоб пройти до фіналу, треба увійти у список 25 лідерів. Найкращі учасники матимуть чотири години на розв’язання задачі. Переможець стане володарем Hacker Cup. У кожному раунді потрібно розв’язати чотири або більше задач.

2000 найкращих учасників, які розв’яжуть хоча б одну задачу у другому раунді, отримають футболку Meta Hacker Cup. 200 найкращих учасників третього раунду матимуть напис «200 найкращих» на своїй футболці.

25 фіналістів отримають:

  • 1 місце — $20 тисяч;
  • 2 місце — $10 тисяч;
  • 3 місце — $5 тисяч;
  • 4 місце — $3 тисячі;
  • 5 місце — $1000;
  • 6–10 місця — $500;
  • 11–15 місця — $300;
  • 16–25 місця — $200.

Google Kick Start

Це глобальне онлайн-змагання з кодингу, яке складається з тригодинних раундів і різноманітних алгоритмічних завдань, розроблених інженерами Google. Учасники можуть змагатися в одному або всіх онлайн-раундах, що відбуваються протягом року, і матимуть змогу розвивати та вдосконалювати свої навички програмування, одночасно опановуючи технічні скіли, необхідні для кар’єри в Google. Найкращих учасників можуть запросити на співбесіду в Google.

Окрім онлайн-раундів, протягом сезону змагань відбуваються тренування з кодингу. Їх проводять, щоб майбутні учасники могли заздалегідь попрактикуватися.

TopCoder Open

Це щорічний турнір, який проводять в онлайн- і офлайн-форматах. TopCoder Open передбачає щоденні змагання, за які нараховуються бали. Шестеро найкращих учасників зможуть поїхати на фінал до Сполучених Штатів.

Змагання проводяться з кількох напрямків: Algorithm, Data Science, Development, Quality Assurance, Design та Games. Наприклад, челенджі з Data Science передбачають такі види завдань: Data Science Matches, Data Science Sprints і Data Science Ideation. Тих же, хто візьметься за QA, чекають пошук помилок, неструктуроване та структуроване тестування, написання структурованих тестів і автоматизоване тестування.

Фіналісти боротимуться за:

  • 1 місце і $10 тисяч;
  • 2 місце і $5 тисяч;
  • 3 місце і $2,5 тисячі.

ICFP Programming Contest

ICFP Contest — щорічний 72-годинний конкурс з програмування, який організовує ICFP (Міжнародна конференція з функціонального програмування) з 1998 року.

У цьому змаганні можуть брати участь команди будь-якого розміру, починаючи з однієї людини. Середня кількість учасників в одній команді — троє.

За три години потрібно розв’язати одну задачу. Наприклад, 2018 року треба було оптимізувати 3D-друк за допомогою нанороботів, у 2019-му — створити програму, яка б керувала віртуальним роботом-малярем, що мав за максимально стислий термін покрити фарбою всі клітинки на мапі рівня.

Для розв’язання задач можна використовувати будь-яку мову програмування. Переможець отримує невелику грошову винагороду, яка дає змогу компенсувати йому витрати на поїздку на конференцію ICFP.

Між іншим, організатори ICFP засуджують вторгнення росії в Україну і називають це порушенням міжнародного права та злочином проти людства.

Codegoda

Змагання, яке організовує компанія Agoda, що розробляє сервіс онлайн-бронювання готелів. У змаганні можуть брати участь повнолітні особи. Учасникам конкурсу, який проходить онлайн, пропонують розв’язати шість задач. Загалом змагання триває шість годин, втім виконати все потрібно протягом трьох годин.

Переможця визначають за найбільшою кількістю балів, найшвидшими надсиланнями запитів та меншою кількістю повторних повідомлень. У разі нічиєї переможе учасник, який виконав завдання швидше.

Під час змагання можна використовувати будь-яку з перелічених мов програмування: C, C++, Java, Python 2/3, Perl, PHP, Ruby, C#, Clojure, Bash, Javascript, Go, Objective C і Java 8.

Грошові винагороди:

  • 1 місце — $3,5 тисячі;
  • 2 місце — $2 тисячі;
  • 3 місце — $1 тисяча;
  • 4–10 місця — $250.

Топкодерка отримує $500 (щоб підтримати жінок в IT, організатори пропонують окремий приз для найкращої жінки-кодера, незалежно від її місця в рейтингу). Якщо найкраща кодерка потрапить у десятку, вона отримає $500 додатково до основного призу.

Крім того, якщо Agoda матиме відкриті вакансії й побачить, що ті чи інші учасники можуть їх обійняти, то запросить фахівців на співбесіду.

Classiq Coding Competition

Нове змагання, яке 2022 року запустила компанія Classiq (стартап з розробки ПЗ для квантових комп’ютерів). У конкурсі з квантового кодування взяли участь понад 150 учасників з усього світу. Учасником міг стати будь-хто, хто досяг 16-річного віку.

За правилами потрібно розв’язати одну чи кілька задач, які підготують організатори. На це дають три тижні. Для визначення переможців судді враховували не лише те, наскільки добре працює рішення та як швидко його надіслали, а й «елегантність та оригінальність» його виконання.

Загальний призовий фонд цього року становив $25 тисяч.

Трьох переможців визначали у розв’язанні кожної задачі.

  • 1 місце — $3 тисячі;
  • 2 місце — $1,5 тисячі;
  • 3 місце — $500.

Також судді могли присудити п’ять додаткових призів по $1000 кожен. Перші два — для молодих учасників (віком до 18 років), а інші — за найоригінальнішу презентацію рішення.

Учасники змагань для програмістів — про свою мотивацію

DOU поспілкувався з тими, хто свого часу брав участь у деяких зі згаданих змагань. Програмісти розповіли про свою мотивацію, підготовку, а також зиск від конкурсів.

Антон Ципко

золотий медаліст Міжнародної олімпіади з інформатики 2017, сьогодні — CTO криптостартапу

Міжнародна олімпіада з інформатики — це найпрестижніше змагання серед школярів. Медаль на ній неабияк допомагає при вступі в університети, а досить часто і при прийнятті на роботу.

У кожній країні (особливо в Україні) — величезний відбір на цю олімпіаду. Складно сказати, наскільки велика конкуренція серед охочих, бо все децентралізовано — мені невідомо, скільки сумарно людей беруть участь. Та припускаю, що від 5 до 15 тисяч учасників можна нарахувати на шкільному етапі. На всеукраїнському залишається приблизно 130. На збори у мої часи запрошували 8–10, а зараз — до 20 осіб. Як все відбувається? Спочатку школярі беруть участь у шкільному етапі олімпіади, потім — районному, далі — обласному й всеукраїнському. Після цього учасники їдуть на відбірково-тренувальні збори, які тривають орієнтовно тиждень. На цих зборах і визначають чотирьох людей, які увійдуть до збірної країни.

Я почав готуватися на початку 9 класу. Переважно розв’язував задачі на Eolymp, Codeforces, Codechef та схожих сайтах. Тоді витрачав приблизно 10 годин на тиждень. А вже у 10–11 класах — 10 годин на день. Аби краще підготуватися, працював з викладачем — Валентином Мельником.

У самій олімпіаді беруть участь близько 80 країн з усього світу, максимум по чотири учасники у збірній від кожної. У рік, коли я був учасником, олімпіада проходила в Ірані (тоді це ще не було соромом). Змагання тривало приблизно тиждень і складалося з двох турів, які відбувалися у величезних конференц-залах (хоча досить часто їх проводять на стадіонах). Решту часу нас водили на екскурсії або ми самі розважалися, граючи, наприклад, в «мафію».

Ось задача, яку я розв’язав на повний бал на олімпіаді.

Пам’ятаю, як написав кілька сотень рядків коду, розв’язуючи «блоки». А потім почав розуміти, як розкусити основну задачу, і частинами скорочував свій код, після чого у мене вийшло пів сотні рядків, що досить коротко для задач такого рівня.

Зазвичай на таких олімпіадах немає фіксованої нагороди. Все дуже залежить від року. Я не можу згадати, щоб мені дарували щось дороге. Якщо не помиляюся, то найдорожча моя нагорода — це ноутбук на Всеукраїнській олімпіаді 2016-го. Та я і не вважав, що дорогі призи обов’язкові. Більшість учнів йдуть на олімпіади не через них, а через престиж.

Участь в IOI полегшила мені вступ до Каліфорнійського університету Берклі на програму Electrical Engineering and Computer Science, тож я подався туди. Написав три з чотирьох есе про олімпіади, де розписав, який я крутий, адже маю медаль ІОІ. Думаю, через це мене й взяли :)

Цього року, до речі, медалісти змогли досить легко вступити до Ягеллонського університету у Кракові з величезною стипендією.

А ще під час підготовки до олімпіади я вивчив багато алгоритмів та структур даних. Через те, що код потрібно було писати швидко, в університеті я помітив, що аналізую поставлені задачі з програмування та пишу код набагато швидше за інших.

У Берклі я зрозумів, що не маю особливого бажання далі розв’язувати задачі, але олімпіадна спільнота була й залишається для мене цікавою. Моє навчання в університеті збіглося з часом, коли основний тренер Берклі, який готував команди до змагань, потихеньку йшов на пенсію, тож він з радістю багато обов’язків передав мені. Так я став тренером для тих, хто брав участь в International Collegiate Programming Contest.

У нас було п’ять команд-учасників регіонального ICPC (він називається «Pacific-Northwest» — це північна Каліфорнія, і всі американські та канадські штати, що йдуть на північ, а також Гаваї). У мої обов’язки входило розповісти їм, що це взагалі таке, а також підготувати учасників до олімпіади — проводити тренувальні змагання двічі на тиждень. Зрештою одна з моїх команд потрапила на Всеамериканський етап в Атланті. Тож я продовжив їх готувати, а також організовував саму поїздку для учасників. Але, на жаль, в Атланті ми не змогли потрапити у фінал олімпіади, нам забракло однієї виконаної задачі для цього.

Для шкільних олімпіад я вже надто старий, а якщо говорити про інші змагання, як-от від Google чи Meta, аби пройти у фінальні етапи, потрібно весь час тримати себе у тонусі: постійно розв’язувати задачки. Я цього вже не роблю, тому в них і не змагаюся. Та загалом я не шкодую про те, що брав участь в олімпіаді, витрачав багато часу на це. У шкільні роки, коли ще не знаєш, чим саме у програмуванні хочеш займатися, — участь у змаганнях, певно, найкращий варіант.

Роман Білий

учасник Міжнародної олімпіади з інформатики, медаліст Міжнародної студентської командної олімпіади з програмування, учасник Google Code Jam, Facebook (Meta) Hacker Cup, TopCoder Open. Сьогодні — ML i Software Engineer у Tesoro Management

Мабуть, найпрестижнішими з тих олімпіад, у яких я брав участь, є ІОІ та ICPC. У фіналі ІСРС я брав участь двічі. Щоб туди потрапити, потрібно було пройти декілька етапів відборів, останній називається SEERC — South Eastern European Regional Contest, де беруть участь приблизно 10 країн регіону і три найкращі команди потрапляють у фінал. На фіналі 2015-го у Марокко ми посіли 16-те місце, а 2016-го у Таїланді — 11-те, і це бронзова медаль (нагороджують 4 команди «золотом», 4 — «сріблом» і 4 — «бронзою»).

Власне, до ІСРС я готувався найбільше у роки, коли потрапляв у фінал. Ми збиралися командою 4–5 разів на тиждень і виконували 5-годинні тренувальні задачі. Потім ще могли писати особисті змагання, дорозвʼязувати нерозвʼязані задачі з тренувань. Особисті змагання — це сайти, де регулярно проводять онлайн-змагання, в яких беруть участь більшість активних учасників спільноти. Загалом підготовка тоді займала майже стільки ж часу, скільки фултайм-робота. Але мені просто подобається розвʼязувати задачі :)

Також є особисті змагання, які спонсорують великі компанії. Найбільші з тих, у яких я брав участь, це Google Code Jam, Facebook (Meta) Hacker Cup, TopCoder Open.

Всі змагання працюють за схожим принципом. Є кілька онлайн-раундів відборів, після яких певна кількість учасників проходить на онсайт-фінал. Переважно це 15–25 людей, залежно від змагання.

Я був двічі на фіналі Facebook Hacker Cup (2017 i 2018), один раз на фіналі TopCoder Open (2019) і раз на фіналі Google Code Jam (2020, онлайн, бо це було на початку пандемії коронавірусу). Результати вже не згадаю, але нічого особливого — завжди був десь у середині таблиці.

Загалом розв’язок кожної задачі поділяється на два етапи: придумати, як її розвʼязати, та написати код розвʼязку. Здебільшого цінують задачі, де складніша частина, в якій потрібно придумати сам розвʼязок, а код писати не важко. З практичного погляду йдеться про знання багатьох алгоритмів. Дещо з цього можна використати й під час роботи. Та й великі компанії на кшталт Google на співбесідах часто дають алгоритмічні завдання, тому олімпіадникам їх досить легко виконати.

Також кожне змагання — це знайомства з людьми. Та й грошова винагорода переважно не маленька, але лише для переможців. Це $10–20 тисяч.

Я за весь час призовими заробив декілька тисяч доларів, ще декілька тисяч отримав, готуючи чи тестуючи задачі для змагань (ось тут детально розписано, як стати тестувальником і скільки за це платять). А якщо коротко, аби готувати задачі, потрібно вміти придумувати саме цікаві завдання. Для тестування потрібно вміти їх розвʼязувати, а також розуміти, які неправильні розвʼязки можуть написати учасники, а для цього необхідно самому досягти високого рівня у розв’язанні задач.

На щось особливе зароблені кошти я так і не витратив. Коли я найбільше готувався до змагань, то не працював, тому тоді фактично жив на ці кошти.

Сьогодні я переважно беру участь тільки у змаганнях, де можна вийти на онсайт-фінал і якось особливо до них не готуюся. На це бракує часу. Якщо проводити аналогію зі спортом, то можна сказати, що я завершив карʼєру і тепер деколи змагаюся заради власного задоволення.

Якщо хочете брати участь у змаганнях, спробуйте розвʼязувати задачі й побачите, чи вам сподобається. Серед українських платформ, де можна потренуватися, раджу algotester.com. Там можна спробувати розвʼязувати задачі, також проводяться змагання (а я деколи є серед авторів цих задач).

Все про українське ІТ в Телеграмі — підписуйтеся на канал редакції DOU

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному3
LinkedIn



1 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

ІМХО це приблизно те саме, що і чемпіонат із доміно. HR-ри організовують такі евенти, бо чомусь у когось у голові є мисля, що якість програміста оцінюється швидкістю із якою він вирішує типові завдання. А на справді це не так, якраз здатність вирішувати не типові завдання, або винайдення не стандартних методів вирішення великої кількості типових завдань через ноу-хау і показує якість. Скільки в бізнесі не типових завдань? Їх безкінечність, бо інакше ти не вирізняєшься від конкурентів. Що цікавого буває на таких змаганнях — конкурси проектів.

Підписатись на коментарі