Резюме: Python разработчик
О СЕБЕ
Python-разработчик. Работаю с асинхронным фреймворком (Fastapi). Мой основной фокус - создание
чистого, эффективного и хорошо структурированного кода. Понимаю работу сетевых протоколов и
технологий (DNS, TCP/IP, HTTP/HTTPS, SSL). Умею писать SQL запросы без использования ORM и понимаю,
как они будут выполняться. Не ограничиваясь рамками конкретного стека, с удовольствием изучаю новые для
себя технологии. Каждый проект я рассматриваю, как постоянно развивающийся продукт, где я научилась
целенаправленно изучать и применять лучшие практики (Pydantic, Docker, CI/CD, pytest), чтобы мой код
соответствовал стандартам. Я заинтересована в долгосрочном сотрудничестве и готова активно учиться у
команды, а ещё я адекватно реагирую на критику и умею брать на себя ответственность за задачи. Буду рада
присоединиться к команде проекта, улучшающего жизнь людей.
ОПЫТ РАБОТЫ
Backend-разработчик, 10.2023 - по н.в.
Проектная занятость (фриланс и pet-проекты)
ЗАДАЧИ
• Разработка API, работа с очередями задач и БД (SQLite, PostgreSQL). Интеграция с внешними API.
• Проектирование и реализация REST API.
• Покрытие кода тестами, поддержка и доработка внедрённых решений.
• Оптимизация и рефакторинг существующего кода.
РЕЗУЛЬТАТЫ РАБОТЫ
Telegram-бот с FSM
• Стек: Python 3, pyTelegramBotAPI (TeleBot), FSM (Finite State Machine), SQLite, pycountry, logging.
• Спроектировала и реализовала бота с использованием конечного автомата (FSM) для управления многоэтапным
сценарием опроса. Бот обрабатывает текстовые сообщения, контакты и callback-запросы
от inline-кнопок, обеспечивая гибкость ввода и устойчивость к пропуску шагов.
• Организовала пошаговый сбор данных (имя, возраст, страна, город, телефон) с изоляцией логики для
•каждого этапа, что исключает смешивание состояний разных пользователей и упрощает поддержку кода.
• Интегрировала библиотеку pycountry для валидации и нормализации ввода стран, реализовала
динамическую подгрузку списка городов из БД SQLite в виде инлайн-кнопок, что улучшило UX и минимизировало
ошибки ручного ввода.
• Реализовала механизм пропуска необязательных шагов (например, номера телефона) с помощью
reply-клавиатуры, не ломая общий flow диалога.
• Настроила детальное логирование пользовательских действий и системных событий для упрощения
отладки и анализа поведения пользователей.
• Roadmap проекта (следующие этапы):
- внедрение Pydantic для строгой проверки входящих данных (возраст, имя) на стороне сервера;
- миграция с SQLite на PostgreSQL для хранения результатов опросов и отработки работы с СУБД;
- контейнеризация приложения с помощью Docker и настройка CI/CD (GitHub Actions) для автоматизациитестирования и деплоя;
Высокопроизводительный веб-сервис для поиска по иерархическим данным (FastAPI)
• Стек: Python 3, FastAPI, Uvicorn, pytest, collections.defaultdict, асинхронные обработчики.
• Спроектировала и реализовала RESTful API на FastAPI для поиска данных в древовидной структуре. Сервис
принимает файл с данными и обрабатывает поисковые запросы по локациям с учетом их вложенности
(поиск по родительским и дочерним элементам).
• Выбрала и реализовала структуру данных на основе defaultdict для хранения связей «локация -> список
площадок», что обеспечивает скорость поиска, близкую к O(1). Реализовала два режима поиска (up, down) с
обходом иерархии путей.
• Разделила бизнес-логику (класс AdService) и слой API (FastAPI роутеры), что упрощает тестирование и
поддержку.
• Реализовала асинхронные эндпоинты для обработки файлов и запросов, чтобы не блокировать сервер на
операциях I/O.
• Полностью покрыла код юнит- и интеграционными тестами (pytest), включая тесты на корректность загрузки
данных, оба режима поиска и обработку крайних случаев.
• Настроила автоматическую генерацию интерактивной документации API через Swagger UI (/docs).
• Roadmap проекта (следующие этапы):
- внедрение Redis для кэширования результатов частых запросов и снижения нагрузки;
- миграция с хранения данных в памяти на PostgreSQL с использованием ltree-модуля или других подходов для
эффективной работы с иерархиями;
- добавление Pydantic для валидации, пагинации ответов API, а также контейнеризация (Docker) и настройка
CI/CD для автоматического тестирования и деплоя;
Рефакторинг кода (учебное задание)
• Стек: Python 3, рефакторинг, работа со структурами данных (списки, словари), обработка исключений.
• Провела разбор и переработку функции на Python, предназначенной для фильтрации входного списка
разноплановых данных и преобразования подходящих элементов в единый формат словарей:
- вникла в проблему исходного кода, некорректно обрабатывалющего типы данных;
- формализовала требования: оставить словари, преобразовать строки и числа в вид {element: element};
• Осознанно отказалась от использования рекурсии. Реализовала решение с использованием итерации по списку и
проверки типов с помощью isinstance().
• Разделила логику на две функции: create_dict() для обработки одного элемента и data_preparation() для обработки
всего списка. Это повысило читаемость, тестируемость и позволило избежать дублирования кода.
Моделирование системы на основе ООП (учебное задание)
• Стек: Python 3, ООП (инкапсуляция, композиция), классы, методы;
• Разработала объектно-ориентированную модель сельскохозяйственной системы для симуляции роста растений с
целью отработки и демонстрации ключевых принципов ООП на Python.
• Разделила ответственность между классами:
- класс Potato инкапсулирует состояние (стадия зрелости) и поведение (рост) одного объекта;
- класс PotatoGarden управляет коллекцией объектов Potato и реализует операцию роста для всех объектов сразу
(демонстрация композиции);
• Реализовала логику роста и проверки зрелости в виде методов, а не внешних функций.
• Использовала словарь для описания стадий зрелости, что упрощает изменение и добавление новых стадий.
• Продемонстрировала, как объекты разных классов взаимодействуют друг с другом: PotatoGarden вызывает метод
grow() у каждого объекта Potato в своем списке.
ПРИЧИНА ПОИСКА РАБОТЫ
Стремление продолжить развитие и перейти на полную занятость в качестве Python-разработчика.