Проект срочный на 6 месяцев с возможностью пролонгации.
Мы ищем разработчика, для которого Python — не инструмент, а родной язык выражения архитектурных решений. Ты должен чувствовать стандартную библиотеку как продолжение своих рук, а не гуглить itertools.groupby в третий раз.
Обязанности:
- Сначала разбираться с существующим backend, после этого развивать существующие сервисы, ещё позже -- проектировать и развивать сложные системы с учётом разграничения доступа.
- Рефакторить legcy, внедрять архитектурные улучшения (Hexagonal, Clean Architecture, кроссфункциональный подход).
- Проводить код-ревью, наставлять мидлов, участвовать в архитектурных решениях.
- Писать не "код, который работает", а "код, который легко читать, тестировать, масштабировать и заменять".
- Интегрироваться с Go-сервисами, Spark-пайплайнами, внешними АРІ и legacy-системами.
- Python на уровне "знаю , как устроен GIL, и когда это важно " — стандартная библиотека, дескрипторы, метаклассы, slots, контекстные менеджеры, генераторы, декораторы с параметрами — всё это должно быть в активном словаре.
- Один веб-фреймворк — на уровне " могу написать свой middleware за вечер" (Django, FastAPI, Flask - неважно какой , главное - глубоко )
- Второй фреймворк — на уровне " могу взять едасу-проект и не сломать его при рефакторинге ".
- Асинхронность — не магия, а инструмент : async/await, asyncio, понимание event loop, конкурентность vs параллелизм, aiohttp, httpx, aiopg, asyncpg — всё это должно быть в зоне комфорта.
- SQL — уверенно: оконные функции, СТЕ, индексы, EXPLAIN, транзакции, блокировки, нормализация — ты не просто пишешь SELECT, ты оптимизируешь его.
- NoSQL — достаточно для выбора и интеграции : Redis (структуры данных, pub/sub, life time), чтобы ты выбирал БД не по хайпу, а по задаче.
- Kafka, NATS или любой аналог брокеров (роутеров) сообщений.
- SOLID — не аббревиатура, а образ мышления.
- Инверсия зависимостей (DIP) — ты не импортируешь реализацию, ты зависишь от абстракции.
- Ты пишешь from ports import UserRepository, a не from postgres import PostgresUserRepo
- Принцип подстановки Барбары Лисков (LSP) — ты не ломаешь контракт при наследовании. Ты знаешь , почему Square не должен наследоваться от Rectangle, если изменение ширины меняет высоту.
- Контейнеризация — не по инструкции, а с пониманием: Docker, docker-compose, multi-stage сборки, volumes, сети, healthcheck — ты не просто запускаешь docker run, ты понимаешь почему то , что ты делаешь -- правильно.
- Чтение чужого кода — твой супер- скилл : ты можешь взять legacy-модуль, понять его логику, найти анти- паттерны, предложить рефакторинг — и сделать это без сломанного боевого стенда.
Будет плюсом: - Apache Spark / PySpark — опыт обработки больших данных, понимание RDD/DataFrame, оптимизация джобов, работа с партициями.
2,0@ Знакомство с Go (Golang) — даже базовое. Чтобы понимать, почему Python-код сбоит при интеграции с сервисами на Go -- возможно придётся самому читать микросервисы на Go, с которыми ты интегрируешься и Опыт проектирования/аудита АР| — OpenAPI/Swagger, версионирование, backward compatibility, rate limiting, idempotency. - Тестирование на уровне "покрываю не строки, а поведение" — pytest, mocks, fixtures, property-based testing (hypothesis), интеграционные тесты с БД и внешними сервисами
- Опыт работы с CI/CD. мониторинг (Prometheus/Grafana), логи (Loki, возможно ELK) — чтобы не просто писать код , а доставлять его в производственный стенд и следить за ним
- Оформление по ИП (аутстаф);
- Проект на 6 месяцев с возможностью пролонгации.