Привет! Меня зовут Константин. Уже второй год мы с командой проектировщиков работаем в БФТ-Холдинге над большим продуктом для государства. Конечно, дело не обошлось без дизайн-системы. Мы познали много боли и сделали немало ошибок, прежде чем создать систему, которой удобно пользоваться. Сегодня я расскажу про ключевые этапы эволюции нашей дизайн-системы (Далее - ДС).

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

План статьи

Этап 1 - Зарождение ДС

Когда мы только начинали строить продукт, нас не особо волновала проблема расширения ДС. Мы хранили все компоненты на одной странице, разграничивая их заголовками. Там же мы размещали правила, черновики концептов и сами концепты…

Первая версия системы
Первая версия системы

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

Проблема этапа 1: отсутствие навигации и поиска по компонентам

Этап 2 - Появление статусной модели

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

Самым очевидным и быстрым решением для нас было делать бордеры у фреймов:

  • Зеленый — все гуд, можно брать в работу

  • Красный — не лезь, компонент не согласован

Нам казалось, что это просто и понятно. Нам, но не всем… Мы не учли, что человек, не погруженный в ДС, или только пришедший на проект, не в курсе про наши обозначения. Тем более, что правила статусной модели были оговорены лишь на словах, без документального подтверждения :)

Дизайн-система после введения статусной модели
Дизайн-система после введения статусной модели

Проблема этапа 2: компоненты уходят в разработку раньше положенного

Этап 3 - Зарождение ДС V2.0

Так больше продолжаться не могло. Поэтому мы решили: пора что-то менять.
Первым делом мы начали разбивать компоненты по своим страницам.

Лайфхак! Когда разносите компоненты на страницы, сохраняйте их первоначальные фреймы. Мы создавали новые фреймы. Итог — все ссылки на компоненты, которые указывались в постановках JIRA, стали неактуальны. Вместо того, чтобы рисовать красивые блоки, мы ходили по JIRA и актуализировали ссылочки в десятках задач :)

Также мы добавили ряд новых фич:

Четкая структура у страниц – «Строение, вариации, примеры»
Мы детально проработали структуру и описание компонент. Для удобства коллег к каждому фрейму мы прикрепили ссылку на песочницу и реализованные кейсы. Это удобно, так как не нужно бегать и искать, где лежит компонент, а где к нему реализация.

Страница компонента
Страница компонента

Лайфхак! Даже несмотря на то, что информация была хорошо структурирована, к нам поступала куча вопросов: «Какой ширины блок?», «Какая высота?», «А есть ли скролл?»
Вывод — не поленитесь и выделите важную для читателя информацию. В нашем случае все важное мы помечали желтым бейджем

Декомпозиция компонентов – «Properties» и «Variants»

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

Properties мы используем, если:

  • Есть переключаемые конфигурации (версия с иконкой или без)

  • Есть текстовые (или иные) слои, которые можно настроить через Properties

Принцип работы Properties
Принцип работы Properties

В Variants мы помещаем компоненты, если:

  • Есть серьезные визуальные изменения (размер, цвет, стиль)

  • Есть интерактивные состояния (hover, focus)

Принцип работы Variants
Принцип работы Variants

Все вместе это работает круто по нескольким причинам:

  • Вам больше не нужно лазить по слоям, пытаясь включить нужный – все настройки на поверхности

  • Использование Properties частично наводит порядок в слоях

  • Больше не нужно создавать кучу вариантов для каждого компонента, достаточно создать несколько и управлять конфигурацией с помощью Properties

Лайфхак! Чтобы не плодить мастер-компоненты и составляющие больших компонент на основных страницах, мы создали отдельную страницу Доп. компоненты для дизайнера. Теперь, если нам нужно добавить к компоненту вариацию, мы идем на эту страницу и создаем еще одно состояние. Важно отметить: эта страница только для дизайнеров. Для всех остальных – это темный лес

Страница Доп. компоненты для дизайнера
Страница Доп. компоненты для дизайнера

Проблема этапа 3: информация об обновлениях компонент несвоевременно доходит до коллег

Этап 4 - Статусная модель. Контроль версий

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

1. Добавить раздел «В процессе согласования» + иконки на страницах
Решение рабочее: явно указано, какие компоненты еще нельзя брать в работу. Усилить эту историю можно, добавив статусы «В работе» и «На рефакторинге» на сами страницы.

Отдельный раздел и статусы в иконках
Отдельный раздел и статусы в иконках

2. Тариф Figma Organization
Мы придерживались концепции, что дизайн-система не должна содержать мусора. То есть коллеги должны видеть в ней только эталонные решения. Для нашего тарифа был доступен функционал Branches (ветки). Получается некая аналогия Github, но для дизайнеров.

Figma Branches
Figma Branches

Чем хорошо данное решение:

  • Вы согласовываете все в рамках ветки, а только после этого выгружаете в мастер ДС

  • При должном оформлении вы сможете контролировать: кто, когда и какой компонент/правку внес

  • Все в курсе ваших обновлений и это круто: каждую неделю мы обновляли нашу дизайн-систему и оповещали об этом разработчиков и аналитиков в нашем чате

Лайфхак! Местами у нас с коллегами были проблемы с коммуникацией. Все изменения мы делали словно в вакууме — разработчики и аналитики не узнавали о них своевременно. Поэтому мы завели Telegram-канал, где раз в неделю оповещали коллег о новых фиксах и фичах. Это сработало, чем сильно облегчило нам жизнь

Обновления в Telegram-канале
Обновления в Telegram-канале

Проблема этапа 4: очень много информации, которая находится в разных источниках

Этап 5 - Финальные удобства: «Стартовая страница»

К этапу № 5 мы имеем:

  • Телеграм-канал с обновлениями

  • Ютуб-канал с гайдами

  • Десятки модулей в продукте. В каждом есть свой Telegram-чат с аналитиками и ссылка на макеты (и хорошо бы еще помнить, кто за какой модуль отвечает).

Держать столько информации в голове невозможно. Хранить все в Telegram не вариант — быстро засоряется. Поэтому мы сделали разводящую страницу. В начале мы разместили перечень модулей с ссылками на Telegram-чаты и Фигму. Чуть ниже расположили Базу знаний – это либо полезные гайды, либо связанная с ДС информация, но лежащая в другом месте. И еще ниже — список проектировщиков с их зоной ответственности.

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

Стартовая страница в Figma
Стартовая страница в Figma

Заключение

По результатам пяти этапов мы получили следующий результат:

Итоговый результат
Итоговый результат

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

Ускоренная работа с компонентами
Благодаря Properties значительно ускорилась сборка макетов. Скажу больше, некоторым аналитикам настолько все стало понятно, что они начали собирать макеты сами, не привлекая к этому дизайнеров. И это о-о-о-очень упростило нам жизнь :)

Понятная статусная модель
Благодаря веткам коллеги видят только эталонные решения. Для дизайнеров появился инструмент контроля и проверки задач внутри команды.

Своевременное получение информации
Вся общая информация о проекте находится в едином пространстве. Появился Telegram-канал, в котором все коллеги получают своевременные обновления о компонентах.

Безусловно, применив все эти практики, ваша жизнь станет намного легче. Но не стоит ожидать, что это полностью избавит вас от головной боли. Также следует понимать: все перечисленные советы могут идеально вписаться в вашу систему, а могут требовать доработок или вовсе оказаться лишними. Я надеюсь, что каждый смог найти что-то новое для себя. А если хотите поделиться опытом проектирования своих ДС, или у вас есть вопросы, пишите в комментариях.

Комментарии (6)


  1. maria_ah
    06.06.2023 08:15
    +2

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


  1. Poga_Sam
    06.06.2023 08:15
    +1

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


    1. Zlld98 Автор
      06.06.2023 08:15
      +1

      Часто с такой проблемой сталкивались. Решение следующее:
      1. В один мастер-компонент собираешь все возможные вариации этого компонента;
      2. Делаешь дубль этого компонента и его также оборачиваешь в компонент;
      3. И вот уже его можешь копировать во все макеты, и всячески его настраивать и менять.


      1. Poga_Sam
        06.06.2023 08:15

        Спасибо, будем пробовать :)


  1. sfreaky
    06.06.2023 08:15

    Статусная модель
    Интересный подход со статусной системой, но как будто бы вы привнесли в фигму task-management. Вы пробовали решать проблему с разработкой неготовых компонентов через задачи?
    Компонент готов - создание задачи - назначение на разработчика - имплементация

    Версионирование
    Мы в какой-то момент перешли с фигмы на sketch, там есть встроенная система контроля версий

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

    Песочница - это что? Storybook? Если да, то пробовали ли вы storybook figma plugin
    Больше похоже, что кейсы использования должны быть описаны вне фигмы. В том же сторибуке в формате mdx, где можно сразу посмотреть варианты, как работает компонент, покликать и посмотреть контексты использования


    1. Zlld98 Автор
      06.06.2023 08:15

      Вы пробовали решать проблему с разработкой неготовых компонентов через задачи?

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

      Мы в какой-то момент перешли с фигмы на sketch

      Sketch(ом) не пользовался особо. Буду знать :)

      Песочница - это что? Storybook?

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