Як конкурси з програмування допомагають у професійному розвитку

Оновлено: 10 січ.


Привіт! Мене звати Ігор Меліхов і в цьому році я став координатором українського відбору Міжнародного конкурсу комп’ютерних проєктів Infomatrix 2021. Пройшовши шлях від учасника конкурсів комп’ютерних проєктів до члена журі, організатора хакатону і, врешті-решт, координатора відбору, я бачив та аналізував велику кількість учнівських та студентських проєктів, знайомився з науковими керівниками, які вже десятки років готують молодих учасників до таких конкурсів, та й сам готував не один захист.

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

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

Як я познайомився з програмуванням

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

Писав я їх «в стіл», кілька разів змінював платформи та мови програмування, аж допоки не натрапив на ідею створити середовище програмування NIDE для модифікацій до відеогри Minecraft: Bedrock Edition. Сьогодні цей застосунок повністю замінено набором інструментів для Visual Studio Code, проте тоді це був дійсно великий крок в розвитку спільноти розробників цих модифікацій. А я отримав можливість на реальному проєкті розвиватися як програміст та як менеджер. Окрім того, я розробив кілька сайтів, пов’язаних з цією спільнотою, один з яких (бібліотека модифікацій Inner Core Mods) і сьогодні має більше семи тисяч відвідувачів на тиждень.

У 2017 році саме з власним середовищем програмування я взяв участь у своїй першій науково-практичній конференції «Novel Technologies of Smart Society», що відбувається щорічно в НУ «Чернігівська політехніка». Інформацію щодо конференції мені надала мій науковий керівник Лемешовець Анна Володимирівна, і не в останню чергу саме завдяки її порадам та настановам цей виступ був успішним.

Проєктна діяльність та участь у конкурсах, хакатонах і олімпіадах з програмування

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

Усе змінилося, коли у 2017 році я вперше взяв участь у конкурсі комп’ютерних проєктів ITalent. Формат конкурсу, в якому судді оцінюють власні розробки учасників та їх захисти, виявився саме тим, чого мені не вистачає в типових олімпіадах. Отримавши перше місце на цьому конкурсі, я відкрив для себе шлях у світ проєктної діяльності і згодом став переможцем Всеукраїнського чемпіонату інформаційних технологій «Екософт-2018», отримавши бажане запрошення до Румунії на Infomatrix-2018. Були в моїй історії і поразки — зокрема, я не отримав жодної нагороди в конкурсі «Золотий Байт 2017», оскільки для участі у номінації «Startup Challenge» необхідно мати певну комерційну модель, а не просто крутий програмний проєкт.


Постерний захист на чемпіонаті «Екософт-2018»


Своєю найяскравішою перемогою я вважаю Міжнародний конкурс комп’ютерних проєктів Infomatrix-2018. Конкурс відбувався в Бухаресті, тож довелося шукати можливості фінансування такої поїздки. На щастя, таку підтримку надало Управління освіти Чернігівської міської ради. І от — я уже в Румунії, один з 13 фіналістів, обраних представляти Україну. Чи знав я тоді, що візьму не тільки таке бажане золото, а й перше для України гран-прі за історію конкурсу? Детальніше про свої враження від конкурсу я уже ділився у цій замітці.

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

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


Перемога в Міжнародному конкурсі комп’ютерних проєктів Infomatrix-2018


У подальшому я продовжив брати участь у конкурсах, олімпіадах та хакатонах з програмування. Серед цікавих та важливих для мене можу назвати:

  • Третій сезон ITalent, де я представив сайт-бібліотеку модифікацій Inner Core Mods та взяв беззаперечне перше місце.

  • Google HashCode. У цьому конкурсі я брав участь двічі (у 2020 та 2021 роках) та зайняв з командою 3002 та 2425 позиції (з 10724 та 9004) відповідно. Цей конкурс в якомусь сенсі більше схожий на олімпіадне програмування, проте основною відмінністю є те, що однозначного найкращого вирішення поставленої задачі просто не існує — і аби набрати максимальну кількість балів, доводиться багато експериментувати та знаходити шляхи оптимізації рішення під кожен конкретний приклад.

  • Олімпіади від Chernihiv.IT. Це найнеформатніші конкурси з програмування, у яких я коли-небудь брав участь. Серед прикладів завдань цих олімпіад: розробка повноцінного WEB API для уявної служби доставки їжі, виділення рухомих об’єктів на відео та визначення їх колізій, орієнтація в просторі за маячками, змагання запрограмованих ботів, створення чатботів для Telegram. Не зважаючи на таке розмаїття платформ і технологій, часто займав перші-другі місця.

  • Odessa Open GameDev Cup, перший і поки єдиний хакатон з ігор, у якому я брав участь. Наша команда отримала всього лише одну з номінацій, але досвід участі і розуміння принципів проведення таких подій стало важливим для моєї подальшої діяльності в ролі члена журі та організатора.

Про підготовку та захист проєктів

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

Звісно, проєкт має бути цікавим. Перш за все, вам як розробнику, а також кінцевому споживачу (іноді це можете бути також ви). Продумайте, як і де він може застосовуватися; можливо, певні невеликі зміни дозволять розширити його аудиторію? Вивчіть уже існуючі проєкти зі схожим функціоналом, зосередьтеся на тому, аби розвивати саме унікальні якості. Можливо, якийсь модуль можна замінити готовою бібліотекою, аби мати більше часу на важливіші задачі?

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

Коли ви впевнилися, що проєкт готовий до конкурсу (принаймні він працює і вам є, що продемонструвати), варто зайнятися підготовкою презентації та матеріалів. Регламенти конкурсів найчастіше строго визначають перелік матеріалів і час захисту, але зазвичай це певний технічний опис (документація) до програми і 5-7 хвилин на презентацію. Документація має чітко описувати функціонал та призначення вашого застосунку та може містити як більш загальний опис проєкту, так і конкретні технічні деталі. Окрім документації, вам можуть знадобитися і інші артефакти: постер, відеозахист, брошури, довідка і т. п. Намагайтесь тримати усе в одній теці та за необхідності звертайтеся до цих матеріалів під час захисту роботи та запитань від суддів. Презентацію варто зберегти в декількох форматах, а все разом завантажити не тільки на флешку, а й на будь-яке хмарне сховище, так ви убезпечите себе від непередбачуваних ситуацій під час захисту.

Для презентації варто використовувати слайди або (рідше) відеоряд. Це дозволить не тільки легше структурувати інформацію, а й забезпечить візуальне сприйняття найважливіших фактів суддями. Презентацію потрібно викласти в логічному порядку, зазвичай спочатку описуючи проблему, яку вирішує ваш проєкт, або принаймні бекграунд ідеї, а уже після цього перейти до опису самого проєкту. Важливо показати, що ви знаходитесь в контексті та розумієтесь у сфері, в якій створюєте проєкт. В презентації варто навести порівняння з аналогами (у вигляді таблиці або ж окремими слайдами з «унікальним функціоналом»), таймлайн розвитку проєкту (коли і як з’явилася ідея та через які стадії реалізації вона пройшла), а також його реальне застосування. Окрім цього, добре навести подальші плани розвитку проєкту, але важливо не перевантажити суддів інформацією про ще нереалізований функціонал. Цим ви скоріше покажете, що розумієте переваги та недоліки проєкту та знаєте, як він може розвиватися надалі.

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

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

Самі слайди презентації мають бути охайними та добре структурувати інформацію. Уникайте великих шматків тексту (окрім, можливо, цитат/епіграфів), замість них використовуйте bullet-поінти або схеми, а також зображення. Ідеальний слайд складається із заголовку і одного-двох значущих елементів. Звертайте увагу на тему оформлення та шрифти, які використовуєте. І, будь ласка, забудьте про шрифт Comic Sans!

Самоосвіта та профільні заходи

Для того, аби вести успішну проєктну діяльність, необхідно мати досить широкі базові знання. Це і технічні навички у багатьох сферах, і знання у предметних галузях ваших проєктів. Звісно, певні специфічні знання у вас також будуть — наприклад, у моєму випадку з середовищем програмування це була обробка текстів. Але все-таки аби створити та запустити свій власний проєкт з нуля, необхідно більше, ніж знання окремих розділів програмування. Необхідно слідкувати за загальним розвитком технологій, тенденціями, проводити дослідження, навчатися новому.

Одним зі способів самоосвіти є читання профільних статей (dou.ua, Хабр, Code Project) та літератури. Так, на повноцінні книжки у сучасної молоді часто не вистачає часу чи бажання, але вони дозволяють структурувати та доповнити знання, отримані на практиці. Серед найпростіших для сприйняття хочу відзначити серію «Head First» видавництва O’Relly, а для любителів Java/C++ раджу переглянути книжки автора Bruce Eckel. Корисними також можуть бути курси на таких онлайн-платформах як Coursera, Prometheus, SoloLearn, GeekBrains та інших, оскільки вони також часто добре структуровані і можуть бути простішими для сприйняття.

Ще одним способом бути в курсі нових технологій і розвиватися в різних напрямках є профільні заходи. Кластерні організації, групи розробників, клуби та окремі компанії в різних містах України проводять конференції, тренінги, воркшопи та інші оффлайн- та онлайн-заходи, на яких мова часто йде про досить широкий спектр технологій та платформ. У Чернігові активно підтримує актив серед студентів і навіть школярів Chernihiv IT кластер — я часто відвідую їх заходи, аби розширити свої знання в найрізноманітніших галузях. Не варто виключати і онлайн-конференції, які сьогодні різні IT-компанії проводять дуже регулярно.

Окрім того, варто відзначити і студентські організації, зокрема, у 2020-21 навчальному році я отримав статус Google Developer Student Clubs Lead та разом з командою організовував подібні заходи для студентів НУ «Чернігівська політехніка». Ця програма дозволяє активним студентам створювати власні клуби та забезпечує їх різнобічною підтримкою, що дозволяє з користю проводити вільний час та отримувати більш практичні навички. У 2021-22 навчальному році діяльність клубу продовжилася, але уже без прямої підтримки з боку Google, а я став одним з менторів програми і тепер допомагаю новим Leads створювати власні клуби.

Від учасника — до судді, координатора та організатора

Отож, після отриманого гран-прі в Бухаресті мене запросили бути першим з так званого «юніорського журі» українського відбору Infomatrix-2019. По-суті я виконував ту саму роль, що і повноцінне журі: оцінював роботи за певними критеріями, обговорював їх з іншими суддями та підраховував бали і результати. «Закулісся» цих конкурсів досить буденне в порівнянні з тим, що відчувають в цей час учасники, і я намагаюся ніколи не забувати про те, як сам брав у них участь. Тим не менше, можливість переглянути десятки робіт різних учасників з різних куточків України, поспілкуватися з різними людьми і поділитися власним досвідом, безперечно, варта витраченого часу і зусиль.

У 2020 році мене також запросили як суддю і на відбір Infomatrix, і на місцевий конкурс «Teenagers vs Covid-19», який проводився одним з випускників моєї рідної школи № 1.

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

Але найцікавіше розпочалося для мене у 2021 році.

Суддівство під час Відкритого хакатону від GDSC | Chernihiv Polytechnic National University


По-перше, в статусі Google Developer Student Clubs Lead я організував та провів Відкритий хакатон. Завдяки підтримці з боку університету та Кафедри інформаційних та комп’ютерних систем, а також кількох IT-компаній міста, ми змогли в невеликому проміжку між локдаунами провести оффлайн-хакатон в якому взяли участь сім команд. Враховуючи ситуацію в світі, це був справжній ковток повітря як для нас, організаторів, так і для команд, що брали участь у конкурсів.

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


Демонстрація проєкту учасниками Відкритого хакатону


По-друге, наказом НЕНЦу (установа, що є афілійованим партнером Infomatrix в Україні) мене призначили відповідальним за український відбір на Infomatrix-2021. По суті, я став координатором українського етапу конкурсу, і не тільки безпосередньо брав участь в оцінюванні робіт, але і виконував організаційну роботу: формування протоколів (вперше за історію цього конкурсу оцінки підраховувалися автоматично з використанням Google Таблиць), контакти з Міжнародним оргкомітетом, підготовка учасників до конкурсу. Разом з колегами ми провели кілька підготовчих сесій, в яких змогли значно підвищити рівень презентацій учасників. Маючи досить високий рівень організації, ми досягли рекордно високих результатів: п’ять бронзових медалей, п’ять срібних, чотири золота та одну з двох платин. І це тільки початок.


Медалі переможців Міжнародного конкурсу комп’ютерних проєктів Infomatrix-2021

Висновки

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

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

  • Проєктна діяльність вимагає великої кількості знань. Відповідно, учень чи студент, що нею займається, матиме широкі знання в майбутньому.

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

  • Нетворкінг. Можливість поспілкуватися з колегами з різних куточків України та навіть світу є неоціненною.

  • Софтскіли. Безпосередньо пов’язані з попереднім пунктом.

  • Стартапи. Більшість проєктів, представлених на подібних конкурсах, можуть потенційно стати стартапом. А це, в свою чергу, крутий драйвер для людства в цілому і для IT зокрема.

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

А тим, хто тільки починає свій шлях, я хочу побажати успіхів, натхнення та віри у власні сили та у свій проєкт!


Джерело: DOU https://dou.ua/forums/topic/35693/?from=slider&fbclid=IwAR2-7Jba3VNjego0zrq7pfa4UIFXPimCCJu9Ek3Y9ZRV9Y6a-e329QofiNc

22 перегляди