Технический наём

Интерпретация результатов теста мобильного разработчика: от оценок к решениям о найме

ClarityHire Team(Editorial)7 min read

Оценка ничего не говорит без контекста

Большинство команд по найму смотрят на оценку мобильного разработчика и спрашивают: «72/100 — это хороший результат?» Этот вопрос перевёрнут. Оценка без контекста — это шум.

Единственный значимый вопрос: «Для должности, на которую мы нанимаем, что этот кандидат в действительности знает и что он будет учиться?»

Сначала построить рубрику

Перед тем как оценивать что-либо, определите, как выглядит хороший результат. Без рубрики вы оцениваете по интуиции, и интуиция отличается от интервьюера к интервьюеру.

Пример рубрики оценки iOS

Корректность кода (0–30 баллов)

  • Компилируется ли это? (10 баллов)
  • Работают ли основные требования? (15 баллов)
  • Обработаны ли граничные случаи (ошибки, восстановление состояния)? (5 баллов)

Архитектура (0–25 баллов)

  • Является ли состояние управляемым и чётким (разделение ViewModel, без спагетти)? (10 баллов)
  • Тестируется ли код (слабая связанность, вводимые зависимости)? (10 баллов)
  • Не переусложнен ли он для области действия? (5 баллов)

Сигналы знаний (0–20 баллов)

  • Правильное использование методов жизненного цикла (не преждевременная оптимизация, нет утечек)? (8 баллов)
  • Безопасность памяти (нет циклических ссылок, безопасное раскрытие)? (7 баллов)
  • Асинхронные паттерны (async-await или Combine, не callback hell)? (5 баллов)

Качество кода (0–25 баллов)

  • Читаемость и именование? (10 баллов)
  • Нет очевидных ошибок или технического долга? (10 баллов)
  • Коммиты значимые (если take-home)? (5 баллов)

Итого: 100 баллов

Порог сдачи: 65–70 (зависит от уровня должности)

Пример рубрики оценки Android

Корректность кода (0–30 баллов)

  • Компилируется и запускается ли? (10 баллов)
  • Основные требования выполнены? (15 баллов)
  • Граничные случаи обработаны? (5 баллов)

Архитектура (0–25 баллов)

  • ViewModel и Repository pattern используются правильно? (10 баллов)
  • Внедрение зависимостей установлено (Hilt или вручную)? (10 баллов)
  • Надлежащее разделение ответственности? (5 баллов)

Сигналы знаний (0–20 баллов)

  • Coroutines используются правильно (не блокирует, надлежащая область)? (8 баллов)
  • Понимание жизненного цикла очевидно? (7 баллов)
  • Настройка тестирования (mockito, Espresso или оба)? (5 баллов)

Качество кода (0–25 баллов)

  • Читаемость и именование? (10 баллов)
  • Нет очевидных ошибок или технического долга? (10 баллов)
  • Конфигурация Gradle/build имеет смысл? (5 баллов)

Итого: 100 баллов

Порог сдачи: 65–70

Что оценки в действительности означают

85+: Сильный найм

Кандидат чисто решил задачу, подумал о граничных случаях и написал код, который вы не колеблясь объединили бы. На проход кода они чётко объясняют своё мышление. Им может не хватать оптимизирующего мышления или некоторых знаний о платформе, но они фундаментально надёжны.

Действие: уверенно переходите к следующему раунду.

70–84: Адекватный, с пробелами

Они решили задачу. Код работает. Но есть шероховатости: возможно потенциальная утечка памяти, возможно управление состоянием запутано, возможно обработка ошибок неполна. На проход кода они могут объяснить большую часть своего кода, но натыкаются на граничные случаи.

Действие: зависит от уровня должности. Для младших ролей это нормально. Для старших это проход, но мягкий. Потратьте проход на выяснение пробелов, чтобы понять траекторию роста.

60–69: Технически проходит, стратегически беспокоит

Код работает, но ясно, что они борются. Возможно, им нужна документация для API платформы, возможно, их тестирование слабое, возможно, архитектура хрупкая. Они прошли, потому что требования выполнены, а не потому что решение хорошо.

Действие: интервью их углублённо. Оценка говорит «технически способен». Но смогут ли они в действительности выполнять работу? Смогут ли они расти? Будут ли они стоком для code review?

Ниже 60: Не готово

Код неполный, не компилируется или демонстрирует фундаментальное непонимание платформы.

Действие: вероятно пропускайте, если они не показывают исключительный потенциал роста в разговоре.

Проход кода — где оценки становятся решениями

Оценка 72 сама по себе неоднозначна. На проходе кода вы выясняете почему:

«Проведите меня через то, как вы сохранили предпочтение пользователя на диск. Какой поток от взаимодействия пользователя до сохранения?»

Сильный ответ (72 → 80+): «Я использую UserDefaults для простых данных. Для сложных данных я использую Codable и JSON-сериализацию в файл. Я проверяю ошибки при чтении (файл может не существовать) и при записи (диск может быть полным). Я тестировал это мокированием файловой системы.»

Это показывает, что они понимают область. Оценка 72 была консервативной; они на самом деле сильны.

Слабый ответ (72 → 55): «Эм, я не уверен. Возможно, я где-то это сохранил? Я не особо об этом думал.»

Это показывает, что они угадали прохождение. Они ниже порога.

Распространённые ошибки в интерпретации

Ошибка 1: Путанница между «не закончил» и «не знает»

Если оценка 90 минут, а они не укладываются в срок, это сигнал об управлении временем и оценке области, а не о компетентности. Кто-то, кто пишет меньше кода, но думает о нём, лучше чем кто-то, кто пишет быстро и плохо.

Отрегулируйте вашу интерпретацию:

  • Они закончили основные требования? (Да: не большой красный флаг)
  • Они закончили и затем погонялись за stretch goals? (Да: сильный сигнал)
  • Они закончили, но это неряшливо? (Плохой сигнал)

Ошибка 2: Переполнение одного аспекта

Если они гвоздили функцию, но не писали тесты, это deal-breaker? Зависит от роли и команды. Стартап может принять отсутствие тестов, если инженер сильный в функциях. Зрелая команда платформы может их исключить за слабую культуру тестирования.

Решите ваши взвешивания перед оценкой.

Ошибка 3: Оценка неправильной вещи для платформы

iOS: Если они построили функцию, но использовали устаревший UIView вместо SwiftUI, это не fail. Решите, что имеет значение для вашей команды. Если вы поддерживаете legacy код, им нужно знать оба.

Android: Если они используют Java вместо Kotlin, же вопрос. Обратная совместимость имеет значение только если для вашей работы имеет значение.

Ошибка 4: Предположение, что слабая оценка означает слабого инженера

Иногда сильные инженеры имеют плохой день. Они неправильно поняли требования. Они потратили 30 минут на деталь, которая не имела значения. Они волновались и писали неряшливо.

Оценка — один сигнал. Проход кода и reference calls — другие. Используйте полную картину.

Что делать с граничными оценками

Диапазон 65–70

Запланируйте целевую вторую оценку: «Вот похожая задача. На этот раз сосредоточьтесь на архитектуре.» Посмотрите, повышают ли они результат (тестовая тревога, а не компетентность) или понижают (в действительности борются).

Или переходите к live coding round. Иногда люди пишут код лучше в реальном времени с обратной связью, чем в одиночку.

Диапазон 60–64

Перед отклонением спросите: в чём конкретно пробел?

  • Отсутствие знаний о платформе? (Исправляемо, не blocker для правильной культуры)
  • Слабое решение проблем? (Сложно исправить)
  • Хорошее мышление, плохое выполнение? (Может улучшиться)
  • Неправильная подгонка роли? (Другая оценка может показать силу)

Если пробел обучаемый, рассмотрите найм и инвестирование в onboarding. Если это фундаментально, пропускайте.

Построение валидности оценки со временем

Когда вы наняли несколько людей с использованием оценки, проверьте: преуспели ли высокие оценки? Борились ли низкие оценки?

  • Если все 75+ оценки преуспели и все 65-оценки не справились, ваш порог правильный.
  • Если некоторые 70-оценённые люди теперь top performers, возможно, вы оцениваете слишком жёстко.
  • Если 80-оценённые люди недостаточно реализованы, возможно, оценка не предсказывает.

Отслеживайте это со временем. Отрегулируйте рубрики на основе того, что вы учите.

Красные флаги в интерпретации оценки

«Код безуродный, но работает»

Код будет поддерживаться. Безуродство нарастает со временем.

«Они не знают async-await»

Если роль требует async кода, это проблема. Если нет, это просто отсутствующее знание.

«Они решили это по-другому, чем я бы»

По-другому не равно неправильно. Оценивайте по рубрике, не по своим предпочтениям.

«Они использовали библиотеку вместо построения с нуля»

Умные инженеры используют библиотеки. Наказание за это перевёрнуто.

Принос оценок на встречу по найму

Не просто говорите «72/100». Говорите:

«Они набрали 72/100. Конкретно: сильно в корректности (28/30), слабее в архитектуре (18/25). На проходе кода они продемонстрировали твёрдое понимание жизненного цикла и управления состоянием. Пробел находится в мышлении о тестируемости и граничных случаях ошибок. Для mid-level роли это приемлемо. Для senior вы бы хотели увидеть рост.»

Это решение по найму, а не чтение оценки.

Как построить согласованное оценивание в командах

  • Используйте одну рубрику для всех кандидатов на уровне
  • Оцениваете по рубрике, а не по gut feeling
  • Два человека оцениваете независимо, обсудите пробелы
  • Задокументируйте свои рассуждения pass/fail
  • Отрегулируйте рубрику после циклов найма на основе результатов

Когда вы нанимаете кого-то и они преуспевают, пересмотрите их оценку. Какую оценку они получили? Проверьте, что ваша рубрика работала.

Так вы как оценивать мобильных разработчиков в масштабе, не сгорая вашу команду и не делая плохие наймы.

мобильная-разработкаiosandroidрезультаты-оценокрешения-о-найме

Похожие статьи