Звідки з’являється спагеті-код і чи варто з ним боротися? | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Програмування по-італійськи: Звідки з’являється спагеті-код і чи варто з ним боротися?

Програмування по-італійськи: Звідки з’являється спагеті-код і чи варто з ним боротися?

Або як програмісти проходять шлях від хаосу до дзену

Якщо, дивлячись на код, у вас виникає думка «Що тут відбувається?» і ви маєте більше запитань, ніж відповідей, то, ймовірно, маєте справу зі спагеті-кодом. Він нагадує тарілку зі сплутаними макаронами: хаотичний, нелогічний і складний для розуміння — цей антипатерн програмування з нотками італійської кухні вже давно став синонімом поганого коду або ж більш відомого терміна в народі — «костилі».

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

Ознаки спагеті-коду: як впізнати хаос у програмуванні

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

Дмитро, провідний інженер-програміст Python

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

Ми зібрали найповніший список ознак спагеті-коду, щоб ви його точно впізнали:

1. Надмірне використання умов та важка вкладеність методів: вкладені блоки if-else, switch або численні виклики методів можуть ускладнити логіку програми. У старих мовах програмування, як-от BASIC і Assembly, це часто викликали застосуванням оператора GOTO, який призводив до хаотичних spaghetti jumps — непередбачуваних переходів між частинами коду. Всі ці фактори ускладнюють розуміння програми, порушуючи основні принципи чистого коду і роблячи його важким для читання та підтримання.

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

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

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

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

6. Тимчасові «костилі»: швидкі рішення або «тимчасові» виправлення зазвичай накопичують технічний борг. Такі «костилі» залишаються в коді надовго, ускладнюючи його підтримання, оскільки з часом їх забувають або вони стають невіддільною частиною проєкту.

7. Відсутність тестів або низьке покриття тестами: спагеті-код часто дуже складний для тестування через його нерозбірливу структуру. Відсутність або недостатнє покриття тестами (unit tests, integration tests) означає, що код легко може містити помилки, які важко виявити. А отже, будь-яка зміна може викликати нові баги, що не було виявлено на ранніх етапах.

Що кажуть розробники про спагеті-код

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

У перші роки роботи я часто мав справу зі спагеті-кодом. Один із перших проєктів — автоматизація бізнес-процесів. Через брак досвіду і неправильну організацію проєкт швидко перетворився на суцільний спагеті-код. Основні проблеми виникли через велику кількість вкладених if-else блоків, величезні функції та повторювані змінні. Одна помилка в функції змушувала переробляти увесь блок, оскільки кожен рядок був взаємозалежним. Зараз я розумію, що цей код краще переписати з нуля, ніж намагатися рефакторити. Хоч він і був ефективним та досі працює, але створював труднощі в підтриманні та розширенні».

Дмитро, провідний інженер-програміст Python

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

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

Але не лише новачки стикаються з цією проблемою. Навіть досвідчені розробники можуть опинитися перед складним вибором — рефакторити код чи переписувати з нуля. Катерина Горуля, розробниця з MacPaw, пояснює:

Доволі часто трапляються проєкти, в яких кодова база застаріла і містить багато спагеті-коду. Тоді починається процес боротьби, як із власне кодом, так і подекуди з бізнесом, адже не завжди бізнес-сторона готова виділяти час розробників на рефакторинг».

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

У мене був досвід, коли розробку проєкту зупинили на 3 місяці для тотального рефакторингу фронтенду й бекенду, оскільки стало очевидно, що з наявним кодом рухатися далі неможливо. Але такі випадки трапляються рідко, зазвичай у стабільних успішних продуктах. Частіше розробники на ентузіазмі переписують спагеті-код. До речі, доволі часто чужий код може сприйматись як спагеті-код, просто тому, що він чужий :)».

Катерина Горуля, Software Engineer at MacPaw

А ось яскравий приклад того, як спагеті-код може вплинути на продуктивність команди:

Одного разу на проєкт додали нового тест-інженера замість попереднього, якого звільнили через некомпетентність. Проблема полягала в тому, що код, написаний цим попереднім інженером, виявився сплутаним. Коли я побачив ці мегаспагеті й файли, що містили понад 1500 рядків, це був шок. Але врешті-решт після рефакторингу все стабілізувалося і час для прогону тестів зменшився на 30 %».

Йосип Волощук, лектор курсу з тестування API

Чому італійській кухні не місце в архітектурі коду

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

  • Спагеті-код (Spaghetti Code) — це символ хаотичного коду. Основною ознакою є відсутність чіткої модульності: код стає заплутаним і складним для підтримання, коли функції з’єднуються без чіткої структури. Кожна зміна може призвести до нових проблем, як витягнення однієї макаронини зі сплутаного клубка спагеті може змінити всю конструкцію.
  • Лазанья-код (Lasagna Code) — тут маємо справу з іншим типом перевантаження: занадто багато шарів абстракції. Кожен шар окремий, але коли їх стає надто багато, зрозуміти, де розташована реальна дія, стає важко. Надмірна абстракція призводить до ситуацій, коли всі зв’язки між компонентами приховані під шарами, як у класичній лазаньї, де до суті важко дістатися через численні прошарки.
  • Равіолі-код (Ravioli Code) — це начебто добре структурований код, який поділено на дрібні модулі або функції. Проблема в тому, що, коли таких модулів стає забагато, система починає нагадувати велику кількість окремих «пакетиків» у равіолі. Кожен пакетик (модуль) є самодостатнім, але разом вони створюють хаос, оскільки такий код легко зрозуміти в межах окремого класу, але важко — в контексті всього проєкту.
  • Піца-код (Pizza Code) — цей тип коду є протилежністю лазаньї. Тут ми маємо один величезний блок коду без модульності та абстракцій. Це схоже на піцу з багатьма інгредієнтами: все зібрано разом в одному місці та всі частини залежать одна від одної. Такий код може бути перевантаженим, і навіть найменша зміна однієї частини може вплинути на все інше.

Спагеті неможливо розплутати, лазанья перетворюється на багатошарову головоломку, а маленькі равіолі приховують у собі більше секретів, ніж здається на перший погляд. Як не дати цьому «кулінарному» хаосу захопити ваш проєкт? Важливо розуміти, як виникають такі проблеми і як їх уникати. Хоча кожен антипатерн має свої особливості й заслуговує на окреме обговорення, спагеті-код залишається найпоширенішим.

Екскурс в історію: як спагеті-код став каталізатором чистого коду та ООП

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

Метафора «спагеті-код» з’явилася в 1960-х роках. У мовах того часу, як-от Assembly, Fortran і COBOL, часто застосовували неконтрольоване використання оператора GOTO, що давав змогу напряму керувати потоками виконанням програми, стрибаючи від однієї частини коду до іншої. Це створювало справжній хаос у логіці програми, де важко було знайти початок або кінець — код перетворювався на клубок заплутаних залежностей.

Однак цей хаос став каталізатором змін. У 1968 році Едсгер Дейкстра (Edsger Dijkstra) у своїй знаменитій статті Go To Statement Considered Harmful відкрив шлях до нової ери програмування. Він закликав відмовитися від GOTO та перейти до структурованого програмування — підходу, що передбачає чітку структуру коду, де кожен блок виконує свою визначену роль. Цей підхід став основою для розвитку об’єктно-орієнтованого програмування (ООП) і таких принципів, як-от SOLID, що сприяють створенню більш гнучкого та чистого коду.

Легенди спагеті-коду в історії програмування

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

  • Adventure

    Гра Adventure для Atari 2600, створена Ворреном Робінеттом у 1979 році, стала легендою не тільки через ігровий процес, а й через приховану «пасхалку». Через хаотичну структуру коду Робінетт додав таємну кімнату зі своїм ім’ям, яку Atari не помітила. Гравці знайшли його через кілька років — цей випадок став історичним прикладом того, як спагеті-код може приховати сюрпризи.
  • Donkey.bas

    Гра, написана Біллом Гейтсом і Нейлом Конзіном у 1981 році для демонстрації можливостей IBM PC, стала відомою через свій хаотичний код. Логіка гри побудована на численних операторах GOTO, через що її код нагадує класичний спагеті-код. Відсутність структурованих функцій перетворила його на справжню безладну тарілку спагеті. Сьогодні цей код доступний на GitHub, і його часто використовують в ролі зразка, як не треба писати програми.
  • Windows 95

    Ще один яскравий приклад спагеті-коду — це Windows 95, де поєдналися старі залишки MS-DOS і новий графічний інтерфейс. Код цієї системи був справжнім коктейлем із GOTO, обхідних шляхів і підтримки сумісності з попередніми версіями. Це створило кодову базу, що нагадувала клубок спагеті, але система працювала... якось.

Чому виникає спагеті-код?

Звісно, об’єктно-орієнтоване програмування (ООП) стало революцією, що впорядкувала хаотичний код, перетворивши хаотичні стрибки на структуровані модулі — об’єкти, які об’єднують дані та методи. Але хаос ніколи не зникає повністю — він лише змінює свою форму. Сьогодні спагеті-код може виникнути навіть у добре структурованому коді, нагадуючи ту плутанину, що колись створював оператор GOTO.

Коли ООП не рятує від спагеті-коду:

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

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

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

Попри досягнення в програмуванні, спагеті-код досі з нами. Чому? Причин багато. Головна з них — тиск дедлайнів. Коли час підганяє, навіть найкращі розробники можуть піддатися спокусі створювати рішення «на швидку руку», відкладаючи рефакторинг на потім. Але «потім» зазвичай ніколи не настає, і так накопичується технічний борг — вірний шлях до хаосу.

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

Причини виникнення спагеті-коду:

  • Невдала архітектура: відсутність планування і модульності на початку призводить до хаотичного коду.
  • Тиск дедлайнів: швидкі рішення ухвалюють на шкоду якості коду, що призводить до його заплутаності.
  • Технічний борг: постійне відкладання оптимізації спричиняє зростання складності.
  • Різні стилі коду: відсутність єдиних стандартів для розробників у великих проєктах.
  • Недотримання принципів чистого коду (Clean Code): коли такі принципи, як-от SOLID або DRY, не застосовуються.
  • Інтеграція нових технологій: введення нових рішень без належної адаптації старих частин системи.

Ось що кажуть розробники з цього приводу:

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

Руслан Кіянчук, інженер з криптографії та програмного забезпечення у NAVAN, лектор профільного курсу r_d

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

Сергій Мазной, .NET-розробник у компанії ATDI

Шлях до чистого коду: як уникнути спагеті-хаосу

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

Йосип Волощук, лектор курсу з тестування API та провідний інженер з тестування ПЗ у SoftServe

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

Шляхи боротьби зі спагеті-кодом:

1. Планування та модульність: правильна архітектура й поділ на незалежні модулі роблять код набагато легшим для підтримання. Модульний підхід зменшує взаємозалежність, і тому код стає більш гнучким. Дмитро, Software Engineer, зазначає:

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

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

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

3. Рефакторинг як пріоритет: регулярний рефакторинг дає змогу уникати накопичення технічного боргу. Але іноді боротьба зі спагеті-кодом може стати дорожчою, ніж створення нової системи з нуля. Руслан Кіянчук пояснює:

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

Вибір інструментів для рефакторингу залежить від технологій та сприйняття естетики. Йосип Волощук, лектор курсу з тестування API, зауважує:

Для ефективного рефакторингу спагеті-коду я використовую різні інструменти. Переважними є застосунки для статичного аналізу коду (Static code analysis) та декомпозиція коду на методи й файли».

Руслан також вказує на важливість глибокого знання системи для знаходження простіших рішень:

Вибір інструментів для рефакторингу спагеті-коду залежить від технологій і вашого сприйняття естетики. Патерни проєктування корисні, але їхнє застосування має бути обґрунтованим функціональними вимогами, а не лише бажанням покращити код. Надмірне використання патернів може ускладнити розуміння. Глибоке знання системи дає змогу знаходити простіші рішення, тому основна техніка для рефакторингу — це детальне вивчення системи».

Руслан також розрізняє два підходи до розв’язання цієї проблеми:

Є два основні підходи: 1) YOLO — швидке розширення нової функціональності без рефакторингу, поки спагеті-код не зупиняє розробку, після чого переписують найкритичніші частини з нуля; 2) пріоритет рефакторингу — вчасно визначити момент для рефакторингу, перш ніж код стане надто складним для підтримання, щоб уникнути ситуації, коли боротьба зі спагеті займає більше часу, ніж розширення функціональності. На жаль, об’єктивних критеріїв для ухвалення таких рішень не існує. Тому вони залежать від досвіду та експертизи розробників у команді».

4. Код-рев’ю: інша пара очей завжди допоможе виявити потенційні проблеми, які могли б перетворити чистий код на хаос. Регулярні код-рев’ю можуть запобігти виникненню критичних помилок.

5. Автоматичне тестування: наявність автоматичних тестів допомагає швидко виявляти помилки після внесення змін, забезпечуючи контроль над кодом і запобігаючи його перетворенню на хаос.

6. Принципи чистого коду: дотримання принципів SOLID, DRY і KISS допомагає уникати зайвої складності та зберігати код простим і зрозумілим. 

  • Принцип DRY (Don't Repeat Yourself) закликає уникати дублювання коду, оскільки це ускладнює його підтримання: замість того, щоб вносити зміни до кількох місць, логіка повинна бути сконцентрована в одному. Це робить код ефективнішим та легшим для оновлення. 
  • Принцип KISS (Keep It Simple, Stupid) заохочує спрощувати рішення, щоб код залишався зрозумілим і легким для підтримання, зменшуючи ризик помилок. Разом ці принципи створюють структуру для чистого, гнучкого та підтримуваного коду.

7. Документація: коментарі та документація — це неодмінна частина чистого коду. Вони дають змогу легко зрозуміти, що відбувається у коді, навіть через рік після його написання. Гарна документація захистить вас від майбутніх головних болів.

8. Переписування коду з нуля: іноді, попри всі зусилля, код стає настільки складним, що подальший рефакторинг втрачає сенс. У таких випадках краще переписати його з нуля, як зазначає Руслан:

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

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

А як же золоте правило «Працює — не чіпай»?

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

Іноді краще залишити код, якщо він працює. У моєму досвіді управління спагеті-кодом призводило до думок: “Краще б я його не чіпав”. Він роками функціонував стабільно, але тепер мені доводиться шукати нові підходи, щоб адаптувати його до сучасних вимог»

Дмитро, провідний інженер-програміст Python

Чому іноді краще залишити все як є:

1. Перевірена часом стабільність: якщо система вже роками виконує свої завдання і є критично важливою для бізнесу, будь-яка зміна може бути ризикованою. Один неправильний рух — і все може зупинитися.

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

3. Висока складність і ризики: втручання в спагеті-код може мати ефект доміно — зміна однієї частини системи може несподівано спричиняти проблеми в інших її сегментах.

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

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

Висновок

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

Досягти дзену чистого коду цілком можливо. Це шлях самопізнання в програмуванні: важливо не боятися помилок, визнавати їх, рефакторити без страху й дотримуватися принципів чистого коду. Як і в житті, програмування — це подорож, де найцінніші уроки приходять через виправлення власних помилок, а не через ідеальність. Саме так відбувається трансформація.

P. S. Як отримати звання генія спагеті-коду

З нагоди четвертої річниці robot_dreams ми запускаємо конкурс для айтівців. Мета  — покреативити, розширити нетворк, долучившись до ком’юніті, і просто have fun. Переможець отримає титул найкращого лайнокодера України та депозит розміром у $1000 на будь-який курс у нашій школі. 

Як взяти участь:

1. зареєструватися на сторінці конкурсу з 10 до 24 жовтня

2. виконати задачу програмування або вигадати власну і помістити розвʼязання в один рядок коду (до 1000 символів будь-якою мовою програмування)

3. надіслати робочий лайнокод до 24 жовтня (дедлайн — до 00:00)

Після закриття заявок журі з команди robot_dreams та експерти з провідних українських ІТ-компаній відберуть 10 номінантів. Серед критеріїв оцінювання робіт — власна цікава ідея, оригінальність виконання, коректність роботи й ефективність коду. Так, код має дивувати й працювати, попри те, що є однорядковим. 

Серед десяти фінальних номінантів самі учасники обиратимуть найкращий лайнокод шляхом відкритого голосування. Переможця ми оголосимо 31 жовтня. Відважуйтеся!

Ще статті