Найм IT-фахівців – це складне завдання. По-перше, зараз на ринку спостерігається дефіцит досвідчених кадрів, вони це розуміють. Кандидати часто не готові витрачати багато часу на відбіркові заходи роботодавця, якщо їх попередньо не зацікавити. Раніше популярна практика "дамо тестове на 8+ годин" зараз уже не працює. Для первинної оцінки знань та відсіву кандидатів до проведення повномасштабної технічної співбесіди доводиться використовувати інші, більш швидкі методи. По-друге, для якісної оцінки знань і навичок необхідно самому мати такі навички або залучати колегу, який володіє такими навичками. Ці труднощі можна вирішити за допомогою способів, про які я розповім у цій статті. Я сам застосовую ці способи і склав собі своєрідний рейтинг.
Отже, мій топ-7 способів швидкої перевірки компетенцій IT-фахівців до співбесіди:
7. Вивчити портфоліо, приклади коду, відкриті репозиторії кандидата.
6. Коротке тестове завдання тимчасово (виконується за 30-60 хвилин).
5. Коротка експрес-співбесіда про навички по телефону/скайпу (як опитувальник, лише онлайн та голосом).
4. Live-Doing (Coding) - вирішуємо просте завдання в реальному часі з розшарованим екраном.
3. Опитувальники з відкритими питаннями про досвід.
2. Короткі тести з варіантами відповідей, обмежені за часом проходження.
1. Багатоетапне тестове завдання, перший етап виконується до співбесіди.
Далі я докладно розглядаю ці способи, їх переваги та недоліки та ситуації, в яких я використовую той чи інший спосіб швидкої перевірки компетенцій програмістів.

У попередній статті про вирву найму я проводив опитування серед читачів щодо способів швидкої перевірки навичок IT-фахівців. У цій статті я розповідаю про способи, які мені подобаються мені, чому вони мені подобаються і як я їх застосовую. Я починаю з першого місця та закінчу сьомим.
1. Багатоетапне тестове завдання, перший етап виконується до співбесіди
Я вважаю цей спосіб перевірки компетенцій розробників – найкращим. На відміну від традиційного тестового завдання, коли ви кажете «тримай завдання та йди роби», у моєму варіанті процес виконання тестового завдання розбивається на етапи – обговорення та розуміння завдання, проектування рішення та оцінка необхідних ресурсів, кілька етапів реалізації рішення, документування та здавання. приймання рішення. Цей підхід ближчий до нормальної сучасної технології розробки ПЗ, ніж просто «візьми та зроби». Подробиці далі.
У яких випадках я використовую цей спосіб
Для своїх проектів я зазвичай наймаю віддалених співробітників, які розробляють окрему, відокремлену та відносно незалежну частину проекту. Це зменшує потребу комунікації між співробітниками, часто до нуля. Співробітники спілкуються не один з одним, а з керівником проекту. Тому мені важливо одразу оцінити здібності людини швидко розібратися в задачі, поставити уточнюючі питання, самостійно виробити план дій щодо вирішення завдання, оцінити необхідні ресурси та час. У цьому мені добре допомагає багатоетапне тестове завдання.
Як реалізувати
Виділяємо та формулюємо самостійне та оригінальне завдання, пов'язане з проектом, над яким належить працювати розробнику. Я зазвичай описую як завдання спрощений прототип основного завдання або майбутнього продукту, для реалізації якого розробнику доведеться зіткнутися з основними проблемами та технологіями проекту.
Першим етапом тестового завдання є ознайомлення із завданням, уточнення незрозумілого, проектування рішення, планування кроків щодо вирішення задачі та оцінка часу на виконання окремих кроків та всього тестового завдання. На виході я чекаю на документ на 1-2 сторінки, де розписано план дій розробника та оцінка часу. Також я прошу кандидатів вказати який із етапів вони хотіли б реалізувати повністю для підтвердження своїх навичок на практиці. Програмувати поки що нічого не треба.
Це завдання (одне й те саме) лунає кільком кандидатам. Очікується, що відповіді від кандидатів надійдуть наступного дня. Далі, через 2-3 дні, коли всі відповіді отримані, аналізуємо що нам надіслали кандидати і які уточнюючі питання вони ставили, як розпочати виконання завдання. На основі цієї інформації можна запросити на наступний етап будь-яку необхідну кількість кандидатів.
Наступним етапом є коротка співбесіда. Нам уже є про що поговорити. Кандидат вже приблизно уявляє собі предметну область проекту, над яким йому доведеться працювати. Основне завдання цієї співбесіди – відповісти на технічні питання кандидата та мотивувати його на виконання основного тестового завдання – програмування тієї частини завдання, яке він сам вибрав. Або тієї частини, реалізацію якої бажаєте побачити ви.
Завжди дуже цікаво спостерігати, яку частину завдання розробник хоче реалізувати. Деякі вважають за краще розкочувати структуру проекту, декомпозувати рішення на модулі та класи, тобто рухаються зверху донизу. Деякі – виділяють окреме підзавдання, найважливіше з їхньої погляд, не прописуючи рішення загалом. Тобто йдуть знизу вгору – від найскладнішого завдання до цілого рішення.
Переваги
Ми можемо побачити ерудицію кандидата, застосування його знань до нашого проекту, розвиненість комунікативних навичок. Також нам легко порівняти кандидатів між собою. Зазвичай я відкидаю тих кандидатів, хто дав надто оптимістичні та надто песимістичні оцінки часу виконання завдання. Зрозуміло, маю власну оцінку часу. Мала оцінка кандидата говорить швидше за все про те, що людина не вникла в завдання належним чином і виконала це тестове поверхнево. Занадто велика оцінка часу зазвичай свідчить, що кандидат погано уявляє собі предметну область, немає досвіду у потрібних мені темах. Я не відкидаю кандидатів відразу на основі їх оцінки, а прошу мотивувати свою оцінку, якщо оцінка не була вже достатньо мотивована.
Комусь цей спосіб може здатися складним та витратним. Моя оцінка трудомісткості застосування цього способу така – на опис тестового завдання потрібно 30-60 хвилин, а потім на перевірку відповіді кожного кандидата – 15-20 хвилин. У кандидатів виконання такого тестового завдання зазвичай займає не більше 1-2 годин, при цьому вони поринають із суть завдань, які їм доведеться надалі вирішувати. Вже цьому етапі кандидату може стати нецікаво, і він відмовляється від спілкування з вами, витративши трохи часу.
Недоліки
По-перше, потрібно придумати оригінальне, ізольоване та ємне тестове завдання, це не завжди можливо. По-друге, не всі кандидати одразу розуміють, що на першому етапі не потрібно програмувати. Деякі одразу приступають до програмування та пропадають на кілька днів, потім надсилають повністю виконане тестове завдання. Формально вони не впоралися з цим тестовим завданням, тому що зробили не те, що від них вимагалося. Але водночас, вони й упоралися, якщо надіслали адекватне рішення всього тестового завдання. Щоб виключити такі казуси, я зазвичай обдзвонюю всіх кандидатів, які отримали завдання, через 2 дні після видачі завдання і дізнаюся, як у них справи.
2. Короткі тести з варіантами відповідей, обмежені за часом проходження
Я нечасто застосовую цей спосіб, хоча він мені дуже подобається, і я вважаю його одним із найкращих способів швидкої перевірки компетенцій. Я напишу про цей спосіб окрему статтю найближчим часом. Такі тести широко застосовують у різних галузях знань. Найяскравіший і типовий приклад – теоретичний іспит для отримання посвідчення водія. У Росії цей іспит містить 20 питань, на які потрібно відповісти за 20 хвилин. Допускається одна помилка. За двох помилок необхідно безпомилково відповісти на 10 додаткових питань. Цей спосіб чудово автоматизується.
На жаль, я не зустрічав добрих реалізацій подібних тестів для програмістів. Якщо ви знаєте хороші готові для реалізації подібних тестів для програмістів, будь ласка, напишіть у коментарях.
Як реалізувати
Я працював із самостійними реалізаціями подібних тестів роботодавцями при виконанні замовлень як рекрутер-аутсорсер. Реалізувати такий тест цілком можливо. Наприклад, за допомогою Google Forms. Основна проблема – у складанні питань та варіантів відповідей. Зазвичай фантазії роботодавців вистачає на десять питань. На жаль, у Google Forms неможливо реалізувати ротацію питань з пулу та обмеження часу. Якщо ви знаєте хороший онлайн інструмент для створення своїх тестів, де можна обмежити час проходження тесту і організувати вибір різних питань для різних кандидатів, то напишіть, будь ласка, про такі сервіси в коментарях.
У яких випадках я використовую цей спосіб
Зараз я використовую такий спосіб на прохання роботодавців, якщо вони мають готові тести, які можна дати кандидатам. Також можливе поєднання подібних тестів із четвертим способом з мого рейтингу – просимо кандидата розшарити свій екран та пройти тест. При цьому ви можете обговорювати з ним питання та варіанти відповідей.
Переваги
При хорошій реалізації цей спосіб автономен. Кандидат може вибрати зручний час для проходження тесту і вам не потрібно витрачати багато свого часу.
Недоліки
Якісна реалізація цього досить витратна і це не дуже зручно для маленької компанії, що зрідка наймає нових співробітників.
3. Опитувальники з відкритими питаннями про досвід
Це набір відкритих питань, які пропонують кандидату поміркувати на основі свого досвіду. У цьому ми пропонуємо варіанти відповідей. Відкриті питання - це такі, на які не можна відповісти просто і складно. Наприклад, згадайте найважче завдання, яке ви вирішували за допомогою фреймворку такого-то? У чому основна складність для вас? На такі питання не можна відповісти однозначно. Точніше, єдина проста відповідь – у мене немає такого досвіду, не працював із цим інструментом.
Як реалізувати
Легко реалізується за допомогою Google Forms. Головне – вигадати питання. Я використовую декілька стандартних конструкцій.
Розкажіть про останній проект, який ви робили за допомогою ХХХ, що було для вас найважчим у цьому проекті?
Які головні переваги технології ХХХ для вас наведіть приклади зі свого досвіду?
Вибравши технологію ХХХ, які ще альтернативи ви розглядали та чому вибрали саме ХХХ?У яких ситуаціях ви віддасте перевагу технології ААА, а не ВВВ?
Розкажіть про найскладніше завдання, яке ви вирішували за допомогою ХХХ, у чому полягала основна складність?
Відповідно, ці конструкції можна застосувати до багатьох технологій із вашого робочого стека. На такі питання непросто відповісти шаблонними фразами з мережі, тому що вони особисті та про особистий досвід. Відповідаючи на ці запитання, кандидат зазвичай думає, що на співбесіді будь-яка з його відповідей може отримати розвиток у вигляді додаткових питань. Тому, якщо досвіду немає, то кандидати часто самоусуваються, розуміючи, що подальша розмова може бути безглуздою.
У яких випадках я використовую цей спосіб
При роботі із замовленнями на підбір спеціалістів, якщо замовник не запропонував свого способу первинної перевірки компетенцій, я застосовую цей спосіб. У мене вже є заготовлені опитувальники з низки тем і мені нічого не варто застосувати для нового замовника.
Переваги
Неважко продати за допомогою Google Forms. Причому нове опитування можна зробити на основі попереднього, замінивши назви технологій та інструментів на інші. Наприклад, опитування про досвід з React мало чим відрізнятиметься від опитування про досвід з Angular.
Складання такого опитувальника займає 15-20 хвилин, а відповіді кандидати зазвичай витрачають 15-30 хвилин. Витрати часу невеликі, але ми отримуємо інформацію про особистий досвід кандидата, від якої можемо відштовхнутися і зробити кожну співбесіду з кандидатами унікальною та цікавішою. Зазвичай тривалість співбесіди після такого опитувальника менша, тому що не доводиться ставити прості однотипні питання.
Недоліки
Щоб відрізнити власну відповідь кандидата від «нагугленого», потрібно розбиратися в тематиці. Але це швидко приходить із досвідом. Після перегляду 10-20 відповідей ви навчитеся відрізняти власні оригінальні відповіді кандидатів від знайдених у мережі.
4. Live-Doing (Coding) - вирішуємо просте завдання в реальному часі з розшарованим екраном
Суть цього способу полягає в тому, щоб попросити кандидата вирішити нескладне завдання та спостерігати за процесом. Кандидат може користуватися будь-чим, немає заборони на пошук інформації в мережі. Кандидат може відчувати стрес від того, що за його роботою спостерігають. Не всі кандидати погоджуються на такий варіант оцінки їхніх навичок. Але, з іншого боку, цей спосіб дозволяє побачити якісь знання у людини є в голові, чим вона зможе скористатися навіть у стресовій ситуації і за якою інформацією вона піде в пошуковик. Практично одразу помітний рівень кандидата. Новачки використовують самі базові, навіть примітивні можливості мови, часто починають реалізовувати функціонал базових бібліотек вручну. Більш досвідчені кандидати добре орієнтуються в базових класах, методах, функціях і можуть швидко вирішити просте завдання – у 2-3 рази швидше за новачків, застосувавши знайомий їм функціонал базової бібліотеки мови. Ще досвідченіші кандидати зазвичай починають із міркувань про різні підходи до розв'язання задачі та розповідають кілька варіантів вирішення, запитують – реалізацію якого з варіантів я хочу побачити. Все, що робить кандидат, можна обговорити. Навіть на основі одного і того ж завдання інтерв'ю виходять дуже різні, як і рішення кандидатів.
Як різновид цього способу можна попросити кандидата пройти який-небудь тест на перевірку професійних компетенцій, обґрунтовуючи вибір того чи іншого з варіантів відповідей. На відміну від звичайного тестування, ви дізнаєтесь, наскільки обґрунтованим був вибір відповідей. Ви можете вигадати свої різновиди цього способу з урахуванням особливостей вашої вакансії.
Як реалізувати
Цей спосіб легко реалізується за допомогою Skype або іншої аналогічної системи відеозв'язку, що дозволяє демонструвати екран. Завдання можна вигадати самостійно або скористатися майданчиками типу Code Wars, різноманітними готовими тестами.
У яких випадках я використовую цей спосіб
Коли підбираю програмістів і резюме зовсім не зрозуміло який рівень знань у кандидата, я пропоную кандидатам співбесіду в такому форматі. На мій досвід – приблизно 90% розробників не заперечують. Їм приємно, що з першої ж співбесіди починається спілкування про програмування, а не безглузді питання на кшталт «ким ви себе бачите через 5 років».
Переваги
Незважаючи на стрес та хвилювання кандидата, одразу й добре видно загальний рівень навичок кандидата. Також стають добре помітними комунікативні навички кандидата – як він міркує, як пояснює та мотивує своє рішення. Якщо потрібно обговорити кандидата з колегами, неважко зробити відеозапис зі свого екрану, а потім показати співбесіду іншим людям.
Недоліки
Зв'язок може перериватися. Через хвилювання кандидат може почати тупити. У цій ситуації можна перерватися і дати йому час поміркувати над завданням на самоті, передзвонити хвилин через 10 і продовжити. Якщо і після цього кандидат веде себе дивно, варто спробувати інший спосіб оцінки навичок.
5. Коротка експрес-співбесіда про навички по телефону/скайпу
Це просто розмова голосом по телефону, скайпу чи іншій системі голосового зв'язку. При цьому ми можемо оцінити комунікативні навички кандидата, його ерудицію та кругозір. Як план розмови можна використовувати опитувальник. Як варіант – можна детальніше обговорити з кандидатом його відповіді на ваш опитувальник.
Як реалізувати
Домовляємося з кандидатом про розмову та дзвонимо. Задаємо питання, фіксуємо відповіді.
У яких випадках я використовую цей спосіб
Цей спосіб я зазвичай застосовую разом із опитувальником, коли відповіді кандидата видалися мені оригінальними чи недостатньо переконливими. Я розмовляю з кандидатом навколо питань із опитувальника і з'ясовую його думку докладніше. Я вважаю подібну розмову обов'язковою, коли важливі комунікативні навички кандидата, уміння просто та зрозуміло формулювати свої думки.
Переваги
Без розмови голосом на професійні теми зазвичай неможливо визначити, наскільки добре вміє кандидат викладати свої думки.
Недоліки
Основний недолік - додаткові витрати часу. Тому я застосовую цей спосіб на додаток до інших, якщо це потреба. Крім того, є кандидати, які чудово говорять на професійні теми, але на практиці вміють мало. Якщо потрібний програміст, який стабільно і якісно вирішуватиме завдання, то краще вибрати інший спосіб первинної перевірки компетенцій. Якщо потрібний менеджер чи аналітик, тобто фахівець, який перекладає з людської мови на «програмістську» і назад, то цей спосіб перевірки компетенцій буде дуже доречним.
6. Коротке тестове завдання тимчасово (виконується за 30-60 хвилин)
Для низки професій важливим є вміння фахівця швидко знайти рішення задачі. Як правило, завдання вирішуються нескладні, але важливим є час вирішення задачі.
Як реалізувати
Домовляємось із кандидатом про час виконання тестового завдання. У призначений час відправляємо кандидату умови завдання та з'ясовуємо, чи зрозумів він, що від нього вимагається. Засікаємо час, витрачений кандидатом вирішення завдання. Аналізуємо рішення та час.
У яких випадках я використовую цей спосіб
У моїй практиці цей метод застосовувався для перевірки компетенцій фахівців технічної підтримки, SQL-програмістів та тестувальників (QA). Завдання були типу "знайди проблемні місця і придумай як усунути проблему", "оптимізуй SQL-запит, щоб працювало в 3 рази швидше" і т.п. Зрозуміло, ви можете вигадати свої завдання. Для розробників-початківців такий метод теж можна застосовувати.
Переваги
Ми витрачаємо свій час лише на складання та перевірку завдання. Кандидат може вибрати зручний для нього час виконання завдання.
Недоліки
Основний недолік - в мережі можуть бути розміщені рішення ваших завдань або подібних, тому потрібно мати кілька варіантів і періодично вигадувати нові завдання. Якщо потрібно протестувати швидкість реакції та кругозір, особисто я вибираю тести на якийсь час (спосіб №2).
7. Вивчити портфоліо, приклади коду, відкриті репозиторії кандидата
Це, мабуть, найзрозуміліший спосіб перевірки компетенцій, за умови, що ваші кандидати мають портфоліо і у вас у команді підбору є фахівці, здатні оцінити портфоліо.
Як реалізувати
Вивчаємо резюме кандидатів. Якщо знаходимо посилання портфоліо, то вивчаємо. Якщо вказівок на портфоліо в резюме немає, запитуємо портфоліо у кандидата.
У яких випадках я використовую цей спосіб
У моїй практиці цей спосіб застосовувався дуже рідко. Нечасто в портфоліо кандидатів можна знайти роботи на потрібну тему. Досвідчені кандидати часто воліють цей спосіб замість типового та нецікавого тестового завдання. Вони кажуть – подивіться мій реп, там десятки прикладів моїх рішень різних завдань, ви побачите як я пишу код.
Переваги
Заощаджується час кандидатів. За наявності часу у професіоналів у вашій команді можна швидко та без комунікації з кандидатами відсіяти невідповідних. Поки рекрутер шукає кандидатів, його колега оцінює портфоліо. Виходить досить швидка та паралельна робота.
Недоліки
Застосовувати цей спосіб можна далеко не для всіх ІТ-професій. Для оцінки портфоліо потрібно самому мати розвинені навички. Якщо ви не фахівець, то ви не зможете якісно оцінити портфоліо.
Колеги, запрошую обговорити прочитане у коментарях. Розкажіть які ще способи швидкої перевірки компетенцій ви застосовуєте?
Джерело: habr.com
