Как происходит декомпозиция задач
Что проверяют
Умеете ли вы разложить крупную задачу на части, которые выкатываются и проверяются по отдельности, и видите ли технические риски заранее. Следом часто просят разобрать пример: новую интеграцию или эндпоинт с фоновой обработкой.
Как отвечать
Каркас для бэкенда на Python:
- цель и границы: какой результат нужен пользователю или другому сервису, критерии приёмки, что точно не входит;
- резать по вертикали: задача доводит до работающего состояния маленький сценарий, а не «слой моделей» целиком. Например, сначала «создание заявки без вложений», затем «вложения», затем «уведомление»;
- миграции отдельно и совместимо: изменения схемы через Alembic или Django migrations делаются по схеме expand/contract. Сначала добавляется колонка и код, который работает с обеими версиями, потом переносятся данные, и только в конце удаляется лишнее;
- фоновые задачи: обработка, которая не должна держать запрос, уходит в Celery, RQ или отдельный воркер. Это отдельная задача со своими повторами и идемпотентностью;
- контракты: схема API в OpenAPI (FastAPI генерирует её сама) и формат сообщений в очередь фиксируются до реализации;
- неизвестное: незнакомый внешний API или вопрос производительности выносится в spike на день или два с понятным результатом;
- готовность: у каждой подзадачи тесты на pytest и понятный Definition of Done.
Ориентир размера: одна задача на один merge request, который реально прочитать.
Подкрепите ответ своим случаем с реальными цифрами: что разбивали, на сколько частей, какая часть оказалась недооценённой и почему. Если самостоятельной декомпозиции было мало, расскажите, как разбивали свою часть на коммиты и ревью, и как подошли бы к примеру интервьюера.
Где спотыкаются
Разбивают по слоям: «интерфейс», «API», «база данных». Такие части по отдельности не работают и не проверяются, а проблемы интеграции всплывают в конце.
Кладут миграцию и новый код в один релиз без обратной совместимости. При выкатке старые экземпляры падают на новой схеме.
Рассказывают историю по STAR с итогом «проект сдан в срок, качество выросло». Без конкретики это звучит как шаблон, и интервьюер начнёт выспрашивать детали.