Наша команда делает Фемиду — внутренний сервис Яндекса для подбора сотрудников, позволяющий автоматизировать процесс поиска и найма. Сервис включает в себя базу данных, ML-поиск, автоматическое назначение секций с учётом планировщика, согласование пути вакансии от заявки до красивого предложения о работе. Яндекс использует Фемиду не только в России, но и в других странах. Ключевая метрика продукта — time-to-offer: чем быстрее мы научимся нанимать лучших кандидатов, тем быстрее Яндекс будет развиваться как бизнес.
Какие задачи вас ждут:
- Архитектурные задачи
Вам предстоит отделить от большого монолита сервисы поменьше. Важно построить для новых и существующих сервисов эффективную архитектуру, обеспечивающую их стабильность и производительность, и переработать ролевую модель, сделав её более гранулярной и прозрачной. - Оптимизация производительности и рефакторинг сложного кода
Нужно будет улучшить производительность и построить вокруг этого систему отслеживания изменений и алертинга.
Мы ждем, что вы:
- Уверенно владеете Python, понимаете синтаксис, типизацию данных, управление потоками (условия, циклы), работу с функциями и обработку исключений, умеете работать со встроенными структурами данных
- Работали с реляционными (PostgreSQL) и NoSQL (MongoDB, Redis) базами данных, умеете составлять и оптимизировать сложные запросы
- Уверенно владеете веб-фреймворками, такими как Django, FastAPI или Flask, понимаете их архитектуру, можете создавать и настраивать маршруты, работать с шаблонами и формами
- Проектировали сервисы с нуля или пересматривали архитектуру, внедряли изменения
- Разрабатывали и интегрировали RESTful API, понимаете принципы HTTP, умеете работать с JSON, создавать и документировать API
- Знаете методы аутентификации (OAuth, JWT) и защиты веб-приложений (CSRF, XSS)
- Писали тесты с использованием unittest, pytest или других библиотек для тестирования
- Работали с системами непрерывной интеграции и доставки, такими как GitLab CI/CD или аналогами, и настраивали их
Будет плюсом, если вы:
- Умеете проектировать модульные приложения, писать чистый и поддерживаемый код, заниматься его рефакторингом
- Пишете понятную и качественную документацию, использовали Docstrings и инструменты вроде Sphinx для генерации документации
- Поддерживали существующие проекты, анализировали и улучшали код, устраняли баги