JavaRush /Курсы /Claude code /Demo and deploy readiness

Demo and deploy readiness

Claude code
31 уровень , 3 лекция
Открыта

1. Демо — это сценарий, а не стендап с ноутбуком

Когда разработчик впервые готовит защиту проекта, у него часто возникает опасная мысль: «Да что там показывать, просто открою приложение и потыкаю». Звучит бодро ровно до секунды, когда браузер открылся не в той вкладке, сид не загружен, сервер просит порт, а вы говорите ревьюеру: «сейчас, секундочку, это быстро». Обычно не быстро.

Хорошее демо гораздо больше похоже на предполётную проверку, чем на живую импровизацию: сценарий, данные, команда и результат известны заранее. Цель предельно приземлённая: внешний человек за несколько минут понимает, какую проблему решает проект, видит основной пользовательский путь и убеждается, что результат воспроизводим.

Для этого удобно держать в голове совсем короткую структуру показа:

Проблема → входные данные → действие → результат → ценность

Если взять, например, Landing Optimizer, плохое демо выглядит так: ходите по вкладкам, извиняетесь за некрасивый экспорт — ревьюер вежливо смотрит и внутри тонет. Хорошее выглядит иначе: одна landing page, нажимаете анализ, получаете список гипотез с приоритетами и объясняете, чем это полезно маркетологу. Один сценарий, одна ценность, одна дуга.

Здесь очень помогает неприятная, но полезная мысль: демо не обязано показать весь проект — оно обязано показать лучший и самый надёжный срез. Пять фич в capstone, а стабильно работает одна — показывайте её; остальные живут в README, screenshots, ограничениях и планах. Это не слабость, а инженерная честность, которая ценится выше хрупкой бравады.

2. Для показа нужен не прод, а предсказуемый demo slice

Разводить demo-ready и production-ready заново уже не нужно: stop/go для этого лежит в DEMO_QUALITY_GATE.md. Здесь важен практический вывод: для показа нужен не самый «взрослый» сетап, а самый предсказуемый demo slice.

Ваша цель не доказать, что вы умеете выкатывать проект, а доставить core flow без рулетки. Поэтому дальше полезно смотреть не на престиж, а на предсказуемость: локальный запуск, удалённый стенд и fallback — три способа показать один сценарий.

3. Deploy не всегда обязателен

После слов «подготовить демо» почти автоматически появляется другой внутренний голос: «надо срочно выкатить в облако, иначе не солидно». Это понятная реакция. Деплой выглядит взросло, у него есть URL, на него приятно смотреть издалека — но для учебного capstone он чаще источник риска, а не усиление. Здесь полезно сравнить три режима показа.

Формат показа Когда хорош Главный плюс Главный риск
Локальный воспроизводимый запуск Почти всегда Максимальный контроль Нужно заранее подготовить окружение
Облачный deploy Если уже стабилен Красивый URL и быстрый вход Падает из-за конфигов, лимитов, cold start
Видео и screenshots Как fallback Работают даже при аварии Не заменяют живую проверку

Для большинства capstone-проектов локальное воспроизводимое демо — лучший базовый выбор. Особенно если у вас уже есть понятный docker compose up, demo data лежат в репозитории, а README даёт короткий quickstart. Ревьюеру важен не модный домен, а то, что вы за минуты поднимаете проект и не зависите от падения среды. Минимальный локальный сценарий часто элегантнее облака:

docker compose up -d
# Поднимаем локальное окружение

python -m app demo --sample data/sample.csv
# Запускаем демонстрационный сценарий

Если же ваш deploy уже готов и скучно стабилен — это прекрасно: например, Landing Optimizer живёт на Vercel, открывается по одному URL, sample page зашита в интерфейс, без ручного прогрева. Но ключевое слово здесь — уже: не превращайте последнюю неделю sprint’а в «срочно выкатываем хоть куда-нибудь».

Под deploy readiness в рамках этой лекции мы понимаем не production-эксплуатацию, а вещь гораздо более скромную: если вы всё-таки показываете удалённый стенд, он должен быть предсказуемым. Стабильный адрес, понятный вход, заготовленные demo data и рядом fallback на случай, если облако захочет устроить театральную паузу. Иначе красивый URL превращается в красивую точку отказа.

4. Фолбэк — это часть демо, а не план провала

Самая спокойная защита — не та, где ничего не ломается, а та, где даже поломка уже предусмотрена. Именно поэтому fallback — не запасной стул в коридоре, а нормальная часть demo-сценария. Вы не придумываете его в момент падения live окружения: он уже лежит в DEMO.md, протестирован и даже чуть-чуть скучен. А скучный fallback — очень хорошая новость. Логику fallback удобно держать в виде короткой цепочки:

flowchart TD
    A[Live demo] -->|если всё хорошо| B[Показываем основной сценарий]
    A -->|если стенд не отвечает| C[Локальный запуск]
    C -->|если локальный запуск тоже капризничает| D[Записанное видео]
    D -->|если нужен быстрый обзор| E[Screenshots + walkthrough]

Сама идея простая. Первичный путь — лучший живой сценарий; ломается — переходите к вторичному, не перезапуская вслепую. Последний рубеж, screenshots walkthrough, показывает ценность без риска сбоя, даже когда жизнь решила пошутить. Очень полезно прописать это прямо в demo script:

## Если live demo не сработал

1. Перейти на локальный запуск по quickstart.
2. Если локальный сценарий недоступен — открыть `docs/demo.mp4`.
3. Если видео неуместно — показать screenshots из `docs/screens/`.

Заметьте, тут нет никакой магии — только заранее принятые решения. Именно это и снимает нервозность: вы больше не надеетесь, что «оно же обычно работает». Надежда, как вы уже наверняка заметили по курсу, — плохая замена тестам, gate’ам и demo strategy.

Для Personal CFO fallback особенно полезен, потому что сценарий там нередко зависит от загрузки CSV. Импорт в браузере закапризничал — нужен второй путь: готовый отчёт, CLI-вариант или скриншоты на sample data. Важно не нажать ту же кнопку, а сохранить ценность и результат.

5. Один проект — разные форматы показа

Не каждый capstone — это веб-страница с красивой кнопкой, и это нормально. Одна из самых частых ловушек на защите — пытаться показать любой проект как маленький SaaS, даже если его сильная сторона совсем в другом. На самом деле формат демо должен подчиняться природе проекта, а не шаблону «открыл сайт — потыкал мышкой». Ниже полезно посмотреть, какой формат показа обычно лучше работает для разных типов capstone.

Тип проекта Что показывать живьём Что держать как fallback
Веб-интерфейс / MVP Один основной пользовательский путь Видео и screenshots
API / backend slice Один запрос и понятный ответ Сохранённый JSON-ответ и лог
CLI / отчёт / automation Одна команда и результат Записанная terminal session
Migration / modernization До/после + validation report Логи, diff, screenshots отчёта
Team workflow / plugin Один воспроизводимый workflow README walkthrough и артефакты

Если у вас проект ближе к API, не нужно насильно натягивать на него сложный UI. Намного сильнее может выглядеть короткий запрос к локальному серверу с понятным ответом:

curl -X POST http://localhost:8000/api/analyze \
  -H "Content-Type: application/json" \
  -d @data/sample-request.json
# В ответе приходит список гипотез с приоритетами

Если ваш проект — это CLI или отчёт, как бывает у части automation- и data-oriented capstone’ов, формат тоже может быть очень чистым:

python -m cfo summary --month 2026-04
# Отчёт сохранён в reports/2026-04.md

И это абсолютно нормальное демо. Более того, иногда такое демо лучше веб-интерфейса: короче, детерминированнее, честнее.

Для migration slice или legacy modernization основная ценность вообще может быть не в «красивом UI», а в доказательстве, что вы сохранили поведение и получили зелёную валидацию. Тогда хорошее демо — это не танцы вокруг интерфейса, а связка «до/после», validation report, smoke check и walkthrough по diff или отчёту. Не гламурно, зато инженерно убедительно.

Поэтому при выборе формата показа спрашивайте себя не «как красивее», а «как в моём типе проекта проще всего показать ценность и воспроизводимость?». Ответ часто оказывается скромнее ожидаемого — и именно поэтому работает лучше.

6. Пишем понятный DEMO.md

Теперь перейдём к документу, который собирает всё это в одну управляемую штуку. В этой лекции я использую короткое имя DEMO.md; если у вас в репозитории принят вариант DEMO_README.md, суть та же — это ваш demo script, а не отдельная маркетинговая страница. Здесь роли разделяются просто: README.md — quickstart и ограничения, DEMO_QUALITY_GATE.md — внутренний stop/go перед репетицией, DEMO.md — сам маршрут показа, demo data, expected result и fallback.

Самый полезный каркас для DEMO.md:

# Сценарий demo

## Setup
...

## Команда для запуска
...

## Demo-данные
...

## Шаги сценария
...

## Ожидаемый результат
...

## Если live demo сломается
...

## Что объяснять
...

Каждый раздел здесь выполняет очень конкретную работу. В Command to run должна стоять реальная команда, а не абстракция «запустить приложение». В Demo data sample inputs лежат в репозитории или доступны по понятному пути, а не хранятся в папке Downloads под названием новый файл (17).csv.

Для Landing Optimizer блок сценария может быть примерно таким:

## Шаги сценария

1. Открыть страницу локального стенда.
2. Вставить demo URL лендинга.
3. Нажать Analyze.
4. Получить список гипотез с приоритетами.

А для Personal CFO — другим:

## Шаги сценария

1. Загрузить `data/sample-transactions.csv`.
2. Запустить категоризацию.
3. Показать месячную сводку.
4. Открыть блок recurring subscriptions.

Раздел Expected result особенно полезен тем, что заранее фиксирует, что считается успешным прохождением сценария, и убирает искушение на лету менять трактовку под то, что получилось. А раздел What to explain держит вас от чтения кода вслух: почему выбран именно этот slice, что он решает, что сознательно оставлено за рамками. Иными словами, DEMO.md — это документ, который делает выступление короче, а проект — понятнее.

7. Репетиция как тест воспроизводимости

Самый честный тест готовности проходит не у вас в голове и не когда вы сами в сотый раз открываете свой проект, а когда другой человек берёт ваш DEMO.md и пытается воспроизвести сценарий. В этот момент очень быстро выясняется всё интересное: что команда была «и так понятна», а на деле нет, что sample data лежат не там, а README предполагает ритуал, известный только автору. В общем, начинается очень полезная правда.

Поэтому репетиция демо — не актёрская практика, а почти инженерный smoke check. Лучше всего работает простой ритуал: попросите коллегу, одногруппника или ментора пройти по вашему сценарию и ничего не подсказывайте первые несколько минут. Дошёл уверенно до результата — воспроизводимость хорошая. Вставляете каждые тридцать секунд «а, тут ещё нужно вот это», «ой, забыл записать» — документ ещё не готов.

В этом месте особенно хорошо начинают работать уже знакомые вам артефакты. README.md отвечает за вход и запуск. DEMO_QUALITY_GATE.md подсказывает, можно ли вообще идти в репетицию. EVIDENCE_LOG.md помогает объяснить, что вы проверяли по спринту. DEMO.md задаёт маршрут показа. А честные ограничения в README снимают ненужное напряжение: ревьюер не ждёт того, чего вы сами не обещали. Всё складывается в спокойную систему, а не в набор героических «лишь бы красиво показать».

И вот это состояние и есть настоящая demo readiness. Не когда вы идеально выучили текст и быстро кликаете по кнопкам, а когда проект можно понять, запустить и оценить без магии автора. В такой момент демонстрация перестаёт быть выступлением на удачу и становится инженерным доказательством: результат воспроизводим, ценность видна, а падение live окружения не превращает защиту в импровизированный сериал.

1
Задача
Claude code, 31 уровень, 3 лекция
Недоступна
Draft `DEMO.md` внутри Claude Code с fallback chain
Draft `DEMO.md` внутри Claude Code с fallback chain
1
Задача
Claude code, 31 уровень, 3 лекция
Недоступна
Reproducible local demo mode через `.env.example` и Docker config
Reproducible local demo mode через `.env.example` и Docker config
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ