Middle Python-разработчик 24–35 лет с 2–5 годами продакшн-опыта. Работал в продуктовой команде хотя бы один раз (а не только в аутсорсе). Пишет асинхронный код не потому что «сейчас это модно», а потому что понимает, где он нужен. Различает архитектурные слои, умеет объяснить своё решение, а не только повторить «по гайду». Не боится читать чужой код и лезть в доки библиотек.
В идеале кандидат:
- не путает
asyncio.sleep()иtime.sleep()в async-функциях; - понимает, зачем нужен
EXPLAIN ANALYZEи читал его хотя бы раз; - может объяснить разницу между at-least-once и exactly-once delivery;
- имеет мнение по поводу FastAPI vs Django и может его аргументировать;
- хотя бы раз чинил продакшн-инцидент сам, а не только смотрел как это делают другие.
Хороший сигнал:
- Упоминает async/await осознанно, приводит пример где это дало реальный выигрыш.
- Знает разницу между корутиной, задачей (Task) и future.
- Называет конкретные библиотеки (httpx, aiohttp) и понимает, зачем их выбрал.
- Рассказывает про тонкости ORM: N+1, lazy loading, сессии.
Тревожный сигнал:
- «Асинхронность — это когда код быстрее».
- Не может назвать ни одной особенности FastAPI кроме «он быстрый».
- Путает процессы, потоки и корутины.
Хороший сигнал:
- Разделяет слои (handler → service → repository), понимает зачем.
- При проектировании задаёт вопросы про нагрузку, SLA, консистентность.
- Предлагает конкретные решения: очередь, кэш, шардинг — и объясняет trade-off.
- Упоминает идемпотентность, ретраи, circuit breaker.
Тревожный сигнал:
- Сразу тянет Kafka в любую задачу.
- Не видит разницы между сильной и слабой консистентностью.
- Не задаёт уточняющих вопросов про требования.
Хороший сигнал:
- Упоминает индексы (B-tree, GIN), понимает когда какой нужен.
- Читал EXPLAIN / EXPLAIN ANALYZE, может интерпретировать seq scan / index scan.
- Рассказывает про уровни изоляции и конкретные случаи проблем.
- Знает про connection pool и почему он важен.
Тревожный сигнал:
- «Оптимизация — это добавить индекс на все поля».
- Не может объяснить, что такое транзакция.
- Путает SQL и NoSQL сценарии.
Хороший сигнал:
- Рассказывает про конфликт с коллегой конкретно: что обсуждали, как искали общее решение, к чему пришли.
- Признаёт свои ошибки в прошлых решениях без драматизма.
- При размытых требованиях — идёт к продакту, а не додумывает.
Тревожный сигнал:
- «У нас в команде никогда не бывает конфликтов».
- Все неудачи объясняет внешними причинами.
- При размытой задаче — «делаю как понял и сдаю».
Хороший сигнал:
- Интересуется продуктом и задачами, а не только зарплатой.
- Называет конкретные причины смены работы, адекватно описывает прошлого работодателя.
- Задаёт свои вопросы о команде, процессах, технологиях.
Тревожный сигнал:
- Единственный драйвер — деньги, без интереса к задачам.
- Негативно отзывается о всех прошлых коллегах и работодателях.
- Нет ни одного вопроса к нам в конце интервью.
Оценка автоматически снижается, если кандидат:
- Демонстрирует неуважение к прошлым коллегам или работодателям.
- Путает базовые понятия уровня Junior (что такое list comprehension, что такое
__init__). - Не может привести ни одного конкретного примера из своей работы, всё отвечает абстрактно.
- Признаётся, что не пишет тесты и считает это нормой.
- Заявляет, что у него никогда не было багов в продакшене.
- Отвечает явно заученными шаблонами, не попадая в смысл вопроса.
| Балл | Описание |
|---|---|
| 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 или серьёзные красные флаги | Не рекомендовать, предложить обратную связь кандидату |