Ще давніше серед таких великих IT фірм як Microsoft, IBM, Google були популярні тести-пазли для тих, хто проходив інтерв’ю. Вважалось, що якщо людина класно вміє розв’язувати різноманітні задачки на кмітливість, логіку, ерудицію, тоді вона стане хорошим технічних працівником.

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

Головоломки на даний момент уже не є на стільки популярні під час інтерв’ю програмістів, як вони були колись.

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

  • доволі часто ті, хто вас наймають цікавляться вашим рейтингом на подібного роду порталах; визначальної ролі він не несе, але буде непоганим плюсом до вашого досвіду, резюме та коду на github.com;
  • робота над нестандартними задачами заставляє вас нестандатно мислити, а це пригодиться вам і під час вашої щоденної роботи;
  • розв’язувати дані головоломки можна на різних мовах, а отже, це хороша можливість спробувати інші мови (а це є кайф для будь-якого програмера);
  • подібні задачі дозволяють вам знаходити нові шляхи до старих проблем;
  • з їх допомогою ви тримаєте ваш мозок у хорошій формі, сфокусованим, та підвищуєте свій “problem solving” рівень;
  • особливо рекомендовано програмістам-початківцям, щоб розвивати своє логічне мислення та вміння розв’язувати проблеми;
  • ну, і по-любому, для маси задоволення; обмеження по часу і змагання із іншими кодерами – це завжди азартно.

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

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

5 онлайн ресурсів для спортивного програмування

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

Project Euler

Project Euler

Project Euler був моїм першим досвідом подібних головоломок для програмістів. Лінк на нього мені скинув адмін – колега по моїй першій роботі (привіт Андрій Томчук ;-). В ті часи я лише починав свою програмерську кар’єру і проводив багато часу на подібних ресурсах.

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

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

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

Top Coder

TopCoder

TopCoder – це другий дуже популярний ресурс для програмістів. Особливість даного сервісу у тому, що там можна заробити реальні гроші розв’язуючі складні завдання. І так, завдання там дійсно доволі таки непрості. Для початківців рекомендую починати з Project Euler.

Крім того, багато світових IT компаній звертають увагу на даний ресурс при пошуку нових талантів.

Спільнота сайту просто величезна. Кажуть мільйони користувачів уже є зареєстрованими у їхній базі.

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

Hacker Earth

HackerEarth

HackerEarth надає цілий інструментарій з перевірки ваших розв’язків. Їхній софт може перевіряти ваші технічні та логічні навики. Також дана платформа допомагає фірмам у пошуках талановитих спеціалістів.

Так само як і TopCoder, HackerEarth пропонує, здебільшого, доволі складні завдання. Тому, знову ж таки рекомендую почати із простіших задач. Наприклад, відвідавши Project Euler.

CoderByte

CoderByte

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

Сам проект був запущений давненько, а пізніше вийшов на Kickstarter та успішно назбирав необхідну сумму інвестицій. З того часу почав активно розвиватись.

Дуже класний ресуср для програмістів початкового та середнього рівнів.

Daily Programmer

Daily Programmer Reddit

Daily Programmer є звичайною групою на популярному сервісі Reddit. Там регулярно постяться і обговорюються цікаві задачки. В останній раз, коли я туди заглядав, там постили 3 задачі на тиждень. І кілька сотень існуючих задач уже там лежать.

Кожен ваш коментар до задачі переглядають учасники групи і надають свою думку щодо вашого розв’язку.

Дуже непоганий ресурс, щоб навчитись нового і потусуватись із хорошими програмістами.

***

Як бачите, усі ресурси, що навів у даній статті є англомовними. Тому знання англійської є необхідним, щоб приймати участь у розв’язуванні цікавих задач. І, якщо знаєте подібні сервіси, але на українській або російській мовах – діліться посиланнями. Оновимо разом вищенаведений список.

А що вам допомагає тримати вашу здатність розвязувати складні проблеми у гарній формі?