design businessMay 10, 202613 min read

Руководство по созданию среды разработки для дизайнеров на 2026 год.

Разработка, тестирование, производство. Три среды, в которых работает каждый дизайнер, но которые мало кто понимает. Простое объяснение с реальными инструментами и рекомендациями по избеганию ошибок.

By Boone
XLinkedIn
dev staging prod for designers

Большинство дизайнеров осваивают разработку, тестирование и производство, ломая что-то не в той среде. Получают уведомление от Loom. Инженер морщится. Обсуждение Slack начинается с вопроса: «Подождите, что это за URL?». Вот и весь процесс адаптации.

Это объяснение, которое вы должны были получить в первый же день. Никакого жаргона ради жаргона, никаких пустых разговоров, только три среды, кто в каждой из них работает и что вы, как дизайнер, должны в них делать.

Если вы когда-либо спрашивали: «Это уже запущено?», глядя на неправильную вкладку, эта статья для вас.

Зачем вообще нужны три среды

У программного обеспечения есть проблема, которой нет у физических продуктов. После выпуска оно сразу же, одновременно, отправляется всем. Нет заводского цеха, нет тестового рынка, нет медленного развертывания по умолчанию. Неудачное изменение может затронуть миллион пользователей за время обновления страницы.

Три среды существуют для того, чтобы команда могла ошибаться до того, как пользователи увидят ошибку. На этапе разработки вам разрешено сильно ошибаться. На этапе тестирования вам разрешено немного ошибаться. На этапе производства вам вообще не разрешено ошибаться, потому что за вами наблюдают реальные люди.

Представьте себе одну и ту же статью, проходящую три редакционных этапа. Первый черновик — черновой, корректурный вариант — в основном чистый, печатный журнал прочитали десять человек. Никто не публикует первый черновик, и никто не переходит сразу к разработке для производства по той же причине.

Команды, пропускающие этапы, делают это потому, что они маленькие, работают быстро или безрассудны. Иногда все три фактора одновременно. Структура существует для того, чтобы команда могла перерасти безрассудство, не замедляя темпы.

Шпаргалка по трем средам

Прежде чем мы углубимся в детали, вот шпаргалка, которую вы можете заскриншотить и больше никогда не задавать вопросов.

| Среда | Назначение | Целевая аудитория | Данные | Шаблон URL | Триггер развертывания | Стиль проверки |

|---|---|---|---|---|---|---|

| Разработка | Создавайте и ломайте без ограничений | Один инженер, иногда вы | Поддельные или предустановленные, часто неработающие | localhost:3000 или yourname.dev.app | Локальные изменения кода | Парное программирование, демонстрация экрана |

| Тестирование | Финальная проверка перед пользователями | Внутренняя команда, дизайнеры, QA | Реалистичные, анонимизированные, обновленные | staging.app.com или pr-123.app.com | Слияние PR или ручная отправка | Асинхронный обзор, Loom, Figma сравнение |

| Производство | Реальный продукт | Клиенты, весь мир | Реальные, конфиденциальные, необратимые | app.com | Релиз с метками или слияние с основной веткой | Мониторинг, QA после запуска |

Если вы помните только одну строку, запомните строку с данными. В разработке — поддельные данные, в тестировании — реалистичные данные, в производстве — данные, за изменение которых вас могут засудить. Относитесь к этим трем соответствующим образом.

Разработка: Где живут инженеры, где всё ломается намеренно

Разработка — это то, что инженер запускает на своём ноутбуке или в личной облачной песочнице. Обычно это называется localhost. Программа работает на его компьютере, взаимодействует с фиктивной базой данных и существует только для одного человека одновременно. Вы почти никогда не увидите эту среду, и это верно.

Когда инженер говорит: «У меня работает», он говорит о разработке. В половине случаев это работает там, потому что данные фиктивные, сеть быстрая, и ничего больше не происходит. В другой половине случаев это работает там, потому что он закончил работу пять минут назад, и она ещё не была протестирована на чём-либо, напоминающем реальность.

Разработка также является местом, где впервые появляются новые компоненты. Если вы передали шаблон карты в Figma, то впервые он появится в реальном коде именно в среде разработки какого-нибудь инженера. Скорее всего, он отправит вам скриншот или Loom с localhost. Это будет демонстрация чернового варианта, а не финальной версии.

Вы проверяете версию для разработчиков не на предмет пиксельной отполированности, а для подтверждения структуры, поведения и замысла. Заметки по пикселям оставьте для тестовой среды.

Воксельная модель, демонстрирующая три платформы с обозначениями: DEV, STAGING и PROD (с различными цветами и стилем), dev (неаккуратная и небольшая), staging (средняя детализация с контрольным списком), prod (отполированная и защищенная), мягкие пастельные тона.
Воксельная модель, демонстрирующая три платформы с обозначениями: DEV, STAGING и PROD (с различными цветами и стилем), dev (неаккуратная и небольшая), staging (средняя детализация с контрольным списком), prod (отполированная и защищенная), мягкие пастельные тона.

Тестовая среда: генеральная репетиция

Тестовая среда — это место, где команда проверяет себя до того, как это сделают клиенты.

Она работает на реальной инфраструктуре, с реалистичными данными, по URL-адресу, который обычно начинается со слова «staging» перед вашим обычным доменом.

Любой член команды может посмотреть на него. Клиенты — нет.

Здесь вы проводите большую часть проверки дизайна. Вы сравниваете его с файлом Figma. Вы проходите весь процесс на реальном устройстве. Вы замечаете вещи, которые всегда выглядят хорошо в Figma, но странно в коде: высота строк, состояния фокуса, что происходит, когда имя состоит из сорока символов, что происходит, когда данных вообще нет.

Тестовая среда обычно максимально точно имитирует рабочую среду, насколько это позволяет команда. Та же структура базы данных, те же сторонние сервисы в тестовом режиме, те же флаги функций, тот же поток аутентификации. Чем ближе тестовая среда к рабочей, тем меньше неожиданностей при выпуске продукта. Команды, которые позволяют тестовой среде отходить от рабочей, в итоге выпускают ошибки, которые могли бы обнаружить бесплатно.

Тестовая среда также позволяет узнать, правильно ли инженер интерпретировал ваш дизайн. В половине случаев это так. В другой половине случаев начинается собственно обсуждение.

Рабочая среда: Где живут реальные люди

Рабочая среда — это работающий сайт. Это то, что видят ваши клиенты, когда вводят ваш URL в браузер. Он работает на реальной инфраструктуре, с реальными данными, реальными деньгами, циркулирующими по нему, и реальными последствиями каждого изменения. Когда вы переходите по ссылкам, вы взаимодействуете с той же системой, что и ваши пользователи.

Это среда, где вы перестаёте быть дизайнером и начинаете быть гостем. Вы не ходите по рабочей среде, чтобы тестировать идеи. Вы не пробуете что-то новое. Вы не входите в систему под вымышленным пользователем, чтобы посмотреть, что произойдет, потому что в продакшене нет вымышленных пользователей, есть только реальные с реальными записями, которые можно случайно испортить.

Продакшен предназначен для мониторинга, для выборочных проверок после развертывания, для создания скриншотов уже работающих приложений. Если вам нужно что-то протестировать, вы возвращаетесь в стейджинг. Если стейджинг не может показать вам нужный продукт, вы запрашиваете предварительный просмотр. Вы не беспокоите продакшен.

Проверка зрелости любой команды — насколько строго она следует этому правилу. Младшие команды постоянно просматривают продакшен. Опытные команды относятся к нему как к чистой комнате.

Жизненный цикл одного изменения

Одно изменение дизайна проходит через все среды, прежде чем его увидит пользователь. Знание этого жизненного цикла отличает дизайнеров, которые раздражают инженеров, от дизайнеров, которые их радуют.

Вот как на самом деле происходит изменение:

  1. Вы передаете дизайн в Figma, с аннотациями, состояниями и граничными случаями.

  2. Инженер вносит изменения в свою среду разработки и собирает их локально.

Затем работа становится общедоступной для команды:

  1. Они создают запрос на слияние (pull request), который запускает предварительное развертывание с уникальным URL-адресом.

  2. Вы просматриваете предварительный вариант, оставляете комментарии, запрашиваете изменения, утверждаете.

И наконец, он попадает к пользователям:

  1. Запрос на слияние объединяется, и изменение отправляется в промежуточную среду для последнего командного просмотра.

  2. После утверждения в промежуточной среде изменение отправляется в продакшн, и пользователи его видят.

Шаги три и четыре — это новая суперсила. Предварительное развертывание означает, что вам не нужно ждать, пока промежуточная среда увидит вашу работу в коде. Вы видите ее в тот момент, когда инженер отправляет изменения в свою ветку. Раньше это было роскошью, а теперь стало обязательным условием.

Если у вашей команды нет предварительного развертывания, это единственное, что они могли бы добавить. Настаивайте на этом.

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

Предварительные развертывания изменили всё

Десять лет назад проверка дизайна означала либо поездку к рабочему месту инженера, либо ожидание до следующего вторника, когда будет выполнена смена в тестовой среде. Сегодня каждая современная хостинговая платформа присваивает каждому запросу на слияние свой собственный URL. Vercel называет их предварительными развертываниями, Netlify — предварительными развертываниями, Render, Cloudflare и AWS Amplify — все они используют аналогичные подходы.

Что это означает на практике: каждая ветка, каждый запрос на слияние, каждое изменение в процессе разработки имеет активный, кликабельный URL, который можно просмотреть, не дожидаясь завершения процесса. Инженер отправляет изменения в свою ветку, предварительная сборка выполняется за две минуты, и бот добавляет URL в запрос на слияние. Вы кликаете по нему, просматриваете, комментируете, и переходите к следующему шагу.

Предварительные развертывания сокращают цикл проверки дизайна с дней до минут. Они также значительно снижают необходимость в видеороликах Loom, поскольку URL предварительного просмотра — это видеоролик Loom, с которым можно взаимодействовать. Если вы ими не пользовались, попросите своего инженера указать вам на комментарий бота к любому открытому запросу на слияние. Ссылка находится прямо там.

Несколько важных моментов о предварительных версиях. Они работают с тестовыми данными, но никогда не с производственными. Они временные и закрываются после закрытия запроса на слияние. У каждой ветки свой URL-адрес, поэтому вы можете одновременно открыть десять таких версий для десяти разных функций.

Переменные среды, конфигурации и почему вы видите «Тестовый режим»

В каждой среде выполняется один и тот же код, но взаимодействует с разными сервисами. В среде разработки используется тестовая база данных, в среде тестирования — тестовая база данных, в производственной — реальная. Каждая среда также использует разные версии каждого стороннего инструмента: Stripe в тестовом режиме в средах разработки и тестирования, Stripe в рабочем режиме в производственной среде. То же самое относится к отправителям электронной почты, аналитике, аутентификации и всем внешним зависимостям.

Команды следят за всем этим с помощью переменных среды, также называемых конфигурациями или секретами. Это небольшие именованные значения, такие как DATABASE_URL или STRIPE_KEY, которые меняются в зависимости от среды. Ими управляют такие инструменты, как Doppler, переменные среды Vercel, AWS Secrets Manager или 1Password Connect.

Почему это важно для вас как для разработчика: когда вы видите Stripe, показывающие номера тестовых карт в тестовой среде, это говорит ключ Stripe из тестовой среды. Когда вы видите свою фотографию профиля разработчика, но совершенно поддельную кредитную карту в тестовой среде, это означает, что разработчик использует поддельную базу данных, но настоящую аутентификацию Clerk. Когда что-то работает в тестовой среде, но ломается в производственной, в 90% случаев это связано с отсутствующей или другой переменной среды.

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

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

Соответствие данных: что вы увидите на самом деле

Данные внутри каждой среды определяют, что вы можете тестировать, а что нет. Это то, что дизайнеры чаще всего упускают из виду.

В среде разработки обычно используются исходные данные — небольшой набор фиктивных пользователей, фиктивных продуктов, фиктивного всего, часто обновляемые каждое утро. Имена будут нелепыми, адреса — из Спрингфилда, аватары — крошечными серыми квадратиками. Не пытайтесь оценивать пустые состояния или граничные случаи на основе этих данных, потому что они созданы для того, чтобы обеспечить корректную работу сценария.

В среде тестирования обычно используются либо анонимизированные производственные данные, либо тщательно подобранный реалистичный набор данных. Реальные формы, реальные длины, реальные граничные случаи, но имена и электронные адреса удалены. Именно здесь вы видите, как выглядят ваши проекты с клиентом по имени Кристофер Хассан-Уильямсон Третий или с заказом из шестидесяти трех позиций. Это единственное место, где вы можете проводить настоящий контроль качества дизайна.

В производственной среде используются реальные данные, именно поэтому не стоит в них копаться. Можно просматривать снимки и панели мониторинга, но никогда не следует использовать производственную среду в качестве тестовой площадки.

Роль дизайнера в каждой среде

Самый простой способ понять свою работу в каждой среде — это назначить себе разные роли.

В среде разработки вы — член команды. Вы проводите быстрые проверки через демонстрацию экрана, убеждаетесь, что инженер понял дизайн, выявляете серьезные структурные проблемы на ранней стадии. В среде разработки вы ничего не редактируете, потому что инженер все еще занимается сборкой.

В среде тестирования вы — специалист по контролю качества дизайна. Вы сравниваете с файлом Figma, проверяете состояния, составляете список замечаний. Здесь вы проводите серьезный анализ, оставляете структурированные комментарии и утверждаете или блокируете изменения. Тестирование — ваша область ответственности.

В производственной среде вы — гость. Вы проверяете, были ли внесены изменения, делаете скриншоты, следите за аналитикой, если это входит в ваши обязанности. В продакшене вы не будете просто кликать мышкой, тестируя что-то, или «быстро пробовать что-то одно».

Держите в голове эти три режима, и вы станете одним из самых простых дизайнеров, с которыми когда-либо работала ваша команда разработчиков.

Ошибки, которые дизайнеры постоянно совершают

Я наблюдал, как дизайнеры совершают все эти ошибки. Некоторые из них я совершал и сам. Ни одна из них не является катастрофой, но все они замедляют работу вашей команды и подрывают доверие к инженерам.

Классика:

  • Отправка клиенту URL-адреса для разработки. Разработчик находится на чьем-то ноутбуке, поэтому клиент переходит по ссылке, получает ошибку подключения и спрашивает, выпускаете ли вы вообще что-нибудь.

  • Сообщение о «реальной ошибке» из устаревшего кэша CDN. Вы смотрите на версию, кэшированную шесть часов назад, и принудительное обновление исправляет это.

Следующая группа ошибок связана с путаницей относительно того, что где уже запущено:

  • Сообщение об ошибке для чего-то, что уже исправлено на тестовой платформе. Вы посмотрели на продакшн, увидели старую версию и в панике отправили сообщение Slack. Исправление уже неделю находится на тестовой платформе.

  • Не запросить ссылку на предварительную версию. Вы ждете три дня, пока она появится на тестовой платформе, хотя инженер мог бы поделиться ссылкой на предварительную версию сразу после отправки изменений.

Последние две ошибки касаются соблюдения границы между тестовой и продакшн-платформами:

  • Переход через продакшн для «тестирования» чего-либо. Теперь вы реальный пользователь с реальными последствиями, поэтому остановитесь.

  • Спросить «это уже запущено?» вместо проверки журнала развертывания. У большинства команд есть канал Slack, где публикуются сообщения о каждом развертывании, поэтому добавьте его в закладки.

Каждая из этих ошибок может быть исправлена ​​одной строкой кода, как только вы узнаете о её существовании. Ни одна из них не является глупой. Это просто вещи, о которых вам никто не сказал.

Воксельная сцена из четырех карточек с подписями. Устаревший URL-адрес CDN для разработчиков, доступный клиенту, исправлен в тестовой среде, нет ссылки для предварительного просмотра, мягкие пастельные тона.
Воксельная сцена из четырех карточек с подписями. Устаревший URL-адрес CDN для разработчиков, доступный клиенту, исправлен в тестовой среде, нет ссылки для предварительного просмотра, мягкие пастельные тона.

Как правильно запрашивать то, что вам нужно

Обратная сторона ошибок — это этикет. Общение между дизайнерами и инженерами по поводу рабочих сред в основном сводится к конкретике. Расплывчатые запросы отнимают время, конкретные — ничего.

Плохо: «Эй, можешь выложить новый дизайн карточки куда-нибудь, где я смогу его увидеть?»

Хорошо: «Эй, можешь выложить ветку с дизайном карточки и прислать мне URL-адрес предварительного просмотра, когда он будет готов?»

Плохо: «Обновление главной страницы уже запущено?»

Хорошо: «PR 412 уже в продакшене или всё ещё на стейджинге?»

Плохо: «Что-то выглядит неисправным на рабочем сайте.»

Хорошо: «На продакшене у меня отсутствует нижняя граница у карточки с ценами на /pricing. Принудительно обновил страницу, всё ещё не работает. Скриншот прилагается.»

В каждом примере схема одна и та же. Назовите рабочую среду, назовите изменение, предоставьте доказательства. Инженеры готовы свернуть горы ради дизайнеров, которые подают подобные запросы. Они будут молча негодовать на тех, кто этого не делает.

Флаги функций: Тестирование внутри продакшена

Существует четвёртая концепция, которая полезным образом нарушает модель разработки/тестирования/продакшена: флаги функций. Флаг функции — это переключатель в коде, который говорит: «Показать эту новую функцию пользователю X, но не пользователю Y». Команды используют их для выпуска кода в продакшен, предоставляя доступ к новой функции лишь небольшой группе пользователей, часто только внутренним сотрудникам.

Это делают такие инструменты, как LaunchDarkly, Statsig, ConfigCat и собственные флаги Vercel. Новый дизайн технически уже запущен в продакшене, но его видят только те, кто использует внутренний флаг. Все остальные видят старую версию.

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

Флаги функций — это то, как опытные команды выпускают продукты непрерывно, не нарушая работу всех. Они также позволяют проводить аналог проверки тестовой среды на реальных производственных данных с реальными пользователями, с минимальным риском.

Что каждая среда рассказывает о команде

То, как команда работает в этих трех средах, говорит почти всё о её инженерной зрелости. Используйте это как краткий обзор для любого нового клиента или новой должности.

Команда без тестовой среды работает быстро и надеется на лучшее. В конце концов, они столкнутся с ошибкой, которая лишит их клиента, и тогда они создадут тестовую среду.

Команда с тестовой средой, но без предварительных развертываний, находится посередине. Проверки проходят медленно, цикл от «готово» до «дизайнер может посмотреть» измеряется днями, вы потратите много времени на ожидание.

Команда с предварительными развертываниями, реальной тестовой средой, контролируемой производственной средой и флагами функций работает на желаемом уровне. Обратная связь короткая, ошибки выявляются на ранней стадии, никто не паникует в день запуска. После работы на этом уровне другие уровни кажутся изнурительными.

Три среды, три целевые аудитории, три набора данных, один жизненный цикл, который их объединяет. В этом вся концепция. Всё остальное — это инструменты поверх неё.

Вам не нужно знать, как развертывать код или управлять аккаунтом Vercel. Вам нужно лишь знать, в какой среде вы работаете, что вам разрешено там делать и как запросить правильный URL-адрес. Сделайте это, и вы станете тем дизайнером, с которым ваши инженеры действительно захотят работать.

Добавьте в закладки журнал развертывания, запросите ссылку на предварительный просмотр и перестаньте трогать рабочую среду.

Need a design partner who already speaks engineering? We ship into your stack.

Get Started

More from Brainy Papers

Keep reading