Лайв кодинг (від англ. Live coding) — це буквально «програмування наживо», тобто коли безпосредньо на співбесіді розробнику дають задачу, і він має її виконати під пильним поглядом інтерв'юера. Процес може бути досить стресовим, тому до такого інтерв’ю краще підготуватися: як технічно, так й психологічно.
У цьому матеріалі разом із Дмитром Шульженком, Head of Engineering в Headway, та веброзробником із Boosters Олександром Барило, розбираємося, що саме треба врахувати при підготовці до лайв кодингу, а також показуємо приклади можливих задач.
Що таке лайв кодинг та навіщо він потрібен
Лайв кодинг застосовують для того, щоби подивитися на технічні навички кандидата, а заразом і перевірити його на стресостійкість. Популярності цей вид співбесіди набув після того, як його впровадили компанії з бігтеху: як-от Google та Microsoft.
Принцип «програмування наживо» зрозумілий із назви, але на практиці лайв кодинг може бути різним:
Поки одні компанії дадуть лише одну–дві базових алгоритмічних задачі, інші попросять розв'язати задачу із реального спринта за 40, а то й 90 хвилин.
Хтось надасть можливість користуватися сторонніми джерелами (наприклад, гуглити), хтось — ні.
Десь треба буде писати код на папері або в Google Docs, а десь дозволять запустити IDE.
По-різному лайв кодинг й реалізується: можуть просто попросити пошерити екран, а можуть й розмістити задачу на лайв кодинг сервісі (наприклад, Codeinterview чи Coderpad) з додатковими фічами на кшталт програвання запису і можливістю лишати коменти.
Саме через це багато розробників не дуже полюбляють цей метод оцінки: багато невідомих, навіть якщо вам приблизно розкажуть, до чого готуватися. При цьому зорієнтуватися треба буде якомога швидше.
Втім, саме програмування в реальному часі — найпопулярніша альтернатива тестовому завданню, оскільки воно:
економить час на перевірці та наданні фідбеку;
показує, як мислить кандидат, де шукає інформацію, як себе веде, якщо не може розв’язати задачу;
демонструє, як багато коду людина написала та наскільки це легко дається (code fluency) — майже найважливіший параметр, за думкою Дмитра Шульженка з Headway;
дає можливість одразу обговорити завдання та його виконання, у тому числі відображає, наскільки кандидат готовий розв’язувати проблеми разом з кимось, ділитись думками та ідеями.
Які задачі можуть бути на лайв кодингу
Задачі на лайв кодинг інтерв’юєр може придумувати самостійно, але зазвичай їх все ж шукають в Google і на різних платформах та шерять між колегами: як каже Олександр Барило, «побачив десь на інтерв’ю цікавий таск — забрав собі».
Серед популярних серед розробників платформ: HackerRank (джерело задач №1 в Headway), LeetCode, Codewars, Coderbyte, Topcoder.
Нижче приклади п’яти реальних задач, які опитані експерти давали кандидатам на співбесідах, та тих, якими інші розробники ділилися на форумах.
На що звертатимуть увагу на лайв кодингу та як найкраще себе показати
Лайв кодинг показує не тільки поточний рівень спеціаліста, а і його потенціал. Тому навіть якщо ваше рішення не буде вірним — це не проблема. Дмитро та Олександр зазначають, що більше звертають увагу на шлях, яким кандидат йшов до розв’язання задачі.
У тому числі:
чи аналізував задачу перед безпосередньо написанням коду;
чи ставив питання, та які саме;
чи перевіряв код на помилки та як швидко їх «виловлював».
Якщо кандидат буде нервувати, це також не буде проблемою. Втім, очікується, що навіть у стані стресу він зможе щось запропонувати. Важливо також вміння пояснити запропоноване рішення.
Помилки, які розробники найчастіше роблять під час лайв кодингу
Якщо одразу братись за написання коду, в процесі виникатиме значно більше помилок.
Рішення: Продумати логіку до безпосереднього написання коду.
Це зазвичай відбувається, коли перше рішення виявляється невірним, і людина намагається за будь-яку ціну його виправити.
Рішення: Якщо здається, що ви зайшли в тупік, відступіть на крок, та подумайте, якими іншими шляхами можна піти.
Можливість досягти проміжного результату — гарна навичка для розробника. Краще розв’язати задачу повністю на словах та написати половину робочого коду, ніж зробити чернетку, яка не працюватиме.
Рішення: Розбивати код на логічні шматочки, щоби бути впевненим, що вже написане точно вірне.
Інколи у задачі може бути декілька варіантів рішення і може бути обмеження по найпростішим з них. А інколи задачу взагалі можна зрозуміти по-різному.
Рішення: Уточнювати всі моменти, які викликають у вас сумніви, не боятися виглядати «недостатньо розумним».
Деякі розробники впевнені, що тестування — це виключно робота QA Engineer (а деякі просто не встигають дійти до цього етапу). Втім, первинну перевірку коду має зробити саме той, хто його створив. Це зіграє на руку і вам: відловити помилки, які ви не помітили на початку роботи.
Рішення: Завчасно закладати час інтерв’ю на тестування свого рішення.
Поради від розробників , як психологічно налаштуватися на лайв кодинг
Часто в спільноті бувають дискусії про те, чи взагалі треба готуватися до лайв кодингу. Обидва експерти погоджуються, що якщо ви кожного дня і так працюєте з кодом, то це не обов’язково. Крім того, для гарної підготовки потрібно багато практики та за кілька днів підняти рівень не вийде.
Втім, якщо відчуваєте, що знань в алгоритмах (особливо базових, як-от Big O) не вистачає, краще попрактикуватись. У тому числі для практики можна використовувати й самі співбесіди: сильний інтерв’юєр може допомогти, якщо зайдете в глухий кут, і порадити щось корисне на майбутнє.
Comments