Еволюція від Live coding до Live code reviewing
З моменту, коли великі технологічні гіганти, такі як Google, Microsoft і Amazon, запровадили практику лайв кодінгу на співбесідах, цей метод швидко став популярним серед компаній різних розмірів. Особливо в часи, коли на одну вакансію припадає велика кількість кандидатів, лайв кодінг здавався ідеальним способом для відбору «найсильніших». Однак, маючи понад 12 років досвіду в комерційній розробці та регулярно проводячи співбесіди, я дійшов висновку, що існує більш ефективний та менш стресовий метод оцінки потенціалу кандидатів — live code reviewing. Але спочатку давайте розглянемо, чому я вважаю лайв кодінг неефективним.
Проблематика лайв кодінгу
Нереалістичні завдання
Більшість завдань лайв кодінгу зосереджена на алгоритмічних вправах, що не відображають реальні робочі ситуації, особливо для веб-розробників. Це може виявити здатність до розв’язання певних задач, але не реальні компетенції, необхідні для роботи над проектами.
Стрес та тиск
Лайв кодінг ставить кандидатів у ситуацію сильного стресу, де кожна помилка може коштувати пропозиції про роботу. Стрес підсилюється розумінням кандидата про те, що інтерв’юер очікує на ідеальне рішення в реальному часі.
Самостійні тестові завдання
Альтернативою лайв кодінгу часто слугують домашні тестові завдання. Однак, з легкістю доступу до інструментів подібних до ChatGPT, виникають питання щодо автентичності робіт. Великі часові вимоги також можуть відлякувати кандидатів, що цінують баланс між роботою та особистим життям.
Альтернативний підхід: Live Code Reviewing
Впровадження в Casafari
У компанії Casafari ми не використовували практику лайв кодінгу, обмежившись теоретичною частиною співбесід. Ми вважали, що спілкування з кандидатом буде достатньо для ефективної оцінки його здібностей та досвіду. Однак, на практиці виявилося, що навіть кандидати з хорошими теоретичними знаннями не завжди можуть ефективно застосовувати ці знання на практиці. Враховуючи мої аргументи проти лайв кодінгу, я запропонував експериментально ввести live code reviewing.
Наші співбесіди тепер більше нагадують процес перегляду коду, що відбувається у реальному робочому середовищі. Ми представляємо кандидатам фрагмент коду з навмисно допущеними недоліками і просимо їх аналізувати його та запропонувати вдосконалення. Основний акцент робиться на те, що цей код вже працює та виконує поставлену задачу.
Переваги методу
Цей підхід дозволяє не тільки оцінити технічні навички кандидата, але й його підхід до оптимізації коду, увагу до деталей, знання кодових стандартів та здатність до критичного мислення. Ми змогли виявити талановитих розробників, яких могли б пропустити через нервовість під час лайв кодінгу. Важливо, що психологічний тиск набагато нижчий, оскільки код вже працює і не вимагає негайного рішення.
Інтерактивність і зворотній зв’язок
Live code reviewing також забезпечує більшу інтерактивність між кандидатом та інтерв’юером, дозволяючи обговорювати можливі рішення та задавати питання, що робить процес більш схожим на реальні робочі ситуації.
Застосування на практиці
Приклад коду для рев’ю
cars_data = [ ('Tesla Model S', 'black', '01-01-2015'), ('Audi Q7', 'white', '05-12-2017'), ('BMW 3 Series', 'red', '23-09-2019') ] class My_car: """ Class for car """ def __init__(self, model, color, release_data): self.model = model self.color = color self.release_data = release_data def create_cars(cars_data: list = []): cars = [] for car_tuple in cars_data: model = car_tuple[0] color = car_tuple[1] release_data = car_tuple[2] from datetime import datetime release_data = datetime.strptime(release_data, '%d-%m-%Y').date() car = My_car(model=model, color=color, release_data=release_data) cars.append(car) return cars def print_table_data(table_data): for i in table_data: print("Model: " + i.model + " Color: " + i.color + " Release: " + str(i.release_data)) if __name__ == "__main__": cars = create_cars(cars_data) print_table_data(cars)
Цей код навмисно містить низку недоліків, щоб дати кандидатам можливість продемонструвати свої навички виправлення та оптимізації коду. Я не буду деталізувати всі можливі недоліки, надаючи читачам можливість самостійно їх виявити.
Висновок
Live code reviewing виявився надзвичайно ефективним підходом у нашій практиці, пропонуючи глибше розуміння навичок та потенціалу кандидатів. Він не лише зменшив рівень стресу під час співбесід, але й дозволив кандидатам краще виявити свої здібності. Особливо цінними виявились позитивні відгуки від кандидатів, які відчули себе більш комфортно в такому форматі.
Буду радий почути вашу думку стосовно цього підходу в коментарях. Сподіваюсь, live code reviewing стане вам у нагоді при проводженні співбесід.
P.S. Щодо теоретичної частини співбесід, у мене також є напрацьовані методики. Основна ідея — створити комфортні умови для кандидата, щоб максимально розкрити його здібності та знання, уникаючи стандартного списку питань. Наче 2 розробника познайомились в барі, і почали ділитися своїм досвідом.
Якщо вам цікавий мій підхід, я готовий поділитися деталями проведення теоретичної частини співбесід у наступних статтях.
3 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів