Skip to content

Latest commit

 

History

History
106 lines (80 loc) · 7.79 KB

File metadata and controls

106 lines (80 loc) · 7.79 KB

Портрет идеального кандидата и критерии оценки

Обобщённый портрет

Middle Python-разработчик 24–35 лет с 2–5 годами продакшн-опыта. Работал в продуктовой команде хотя бы один раз (а не только в аутсорсе). Пишет асинхронный код не потому что «сейчас это модно», а потому что понимает, где он нужен. Различает архитектурные слои, умеет объяснить своё решение, а не только повторить «по гайду». Не боится читать чужой код и лезть в доки библиотек.

В идеале кандидат:

  • не путает asyncio.sleep() и time.sleep() в async-функциях;
  • понимает, зачем нужен EXPLAIN ANALYZE и читал его хотя бы раз;
  • может объяснить разницу между at-least-once и exactly-once delivery;
  • имеет мнение по поводу FastAPI vs Django и может его аргументировать;
  • хотя бы раз чинил продакшн-инцидент сам, а не только смотрел как это делают другие.

Ключевые компетенции и сигналы

1. Python и фреймворки

Хороший сигнал:

  • Упоминает async/await осознанно, приводит пример где это дало реальный выигрыш.
  • Знает разницу между корутиной, задачей (Task) и future.
  • Называет конкретные библиотеки (httpx, aiohttp) и понимает, зачем их выбрал.
  • Рассказывает про тонкости ORM: N+1, lazy loading, сессии.

Тревожный сигнал:

  • «Асинхронность — это когда код быстрее».
  • Не может назвать ни одной особенности FastAPI кроме «он быстрый».
  • Путает процессы, потоки и корутины.

2. Архитектура

Хороший сигнал:

  • Разделяет слои (handler → service → repository), понимает зачем.
  • При проектировании задаёт вопросы про нагрузку, SLA, консистентность.
  • Предлагает конкретные решения: очередь, кэш, шардинг — и объясняет trade-off.
  • Упоминает идемпотентность, ретраи, circuit breaker.

Тревожный сигнал:

  • Сразу тянет Kafka в любую задачу.
  • Не видит разницы между сильной и слабой консистентностью.
  • Не задаёт уточняющих вопросов про требования.

3. Базы данных

Хороший сигнал:

  • Упоминает индексы (B-tree, GIN), понимает когда какой нужен.
  • Читал EXPLAIN / EXPLAIN ANALYZE, может интерпретировать seq scan / index scan.
  • Рассказывает про уровни изоляции и конкретные случаи проблем.
  • Знает про connection pool и почему он важен.

Тревожный сигнал:

  • «Оптимизация — это добавить индекс на все поля».
  • Не может объяснить, что такое транзакция.
  • Путает SQL и NoSQL сценарии.

4. Soft skills

Хороший сигнал:

  • Рассказывает про конфликт с коллегой конкретно: что обсуждали, как искали общее решение, к чему пришли.
  • Признаёт свои ошибки в прошлых решениях без драматизма.
  • При размытых требованиях — идёт к продакту, а не додумывает.

Тревожный сигнал:

  • «У нас в команде никогда не бывает конфликтов».
  • Все неудачи объясняет внешними причинами.
  • При размытой задаче — «делаю как понял и сдаю».

5. Мотивация

Хороший сигнал:

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

Тревожный сигнал:

  • Единственный драйвер — деньги, без интереса к задачам.
  • Негативно отзывается о всех прошлых коллегах и работодателях.
  • Нет ни одного вопроса к нам в конце интервью.

Красные флаги (отдельно)

Оценка автоматически снижается, если кандидат:

  • Демонстрирует неуважение к прошлым коллегам или работодателям.
  • Путает базовые понятия уровня Junior (что такое list comprehension, что такое __init__).
  • Не может привести ни одного конкретного примера из своей работы, всё отвечает абстрактно.
  • Признаётся, что не пишет тесты и считает это нормой.
  • Заявляет, что у него никогда не было багов в продакшене.
  • Отвечает явно заученными шаблонами, не попадая в смысл вопроса.

Шкала оценки 1–5 (детальная)

Балл Описание
5 Ответ уровня Senior: глубина, конкретика, примеры из практики, видит несколько решений и trade-off между ними. Выше требований Middle.
4 Уверенный Middle: конкретный ответ, примеры из своего опыта, небольшие пробелы допустимы.
3 Пограничный Middle / сильный Junior: базовое понимание, ответ поверхностный, мало примеров из практики.
2 Junior-уровень: путается в понятиях, отвечает в общих фразах, без глубины.
1 Тема не раскрыта: кандидат уклонился, допустил фактические ошибки, не понял вопрос.

Правило финальной рекомендации

Условие Рекомендация
Средний тех. балл ≥ 4.0 и soft skills ≥ 3.5 и нет красных флагов Рекомендовать к техническому интервью
Средний тех. балл 3.0–3.9 или 1 незначительный красный флаг Рекомендовать с оговорками — указать, что перепроверить на следующем этапе
Средний тех. балл < 3.0 или серьёзные красные флаги Не рекомендовать, предложить обратную связь кандидату