Дизайн Системы

Привет! Меня зовут Кир. Я — Head of UI в компании Марфатех, руковожу департаментами Дизайна и Фронтенда с точки зрения общей стратегии и эффективной синергии.

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

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

Что такое Дизайн Система?

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

Список отечественных и русскоязычных дизайн систем

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

Также, если спросить дизайнера, разработчика и менеджера, то скорее всего будут получены 3 ответа вроде бы об одном и том же, но с разных ракурсов. От загадочных понятий UI Kit и Storybook до экономии ресурсов и переизобретении неких велосипедов.

Если спросить лучшего друга человека, то мы получим довольно ёмкое определение:

6e7e5cab0e86499235612f61fb87c0df.jpg

Далее мы разберёмся насколько это понятно, и даёт ли ответы на все вопросы.

Каков жизненный цикл Дизайн Системы?

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

41365de51be1ee4be4ed2976e1178cb5.png

Условно и обобщённо, но для наших целей в самый раз:

  1. Идея — бизнес-цель.

  2. Прототип — валидация идеи, в самом широком смысле. От наброска на салфетке и до wireframes или даже user story.

  3. Дизайн — работа над макетами.

  4. Разработка — работа над реализацией.

Теперь представим, что таких идей-проектов-фич в компании две:

33e041b35e216016176335a0c5cfdf36.png

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

21e32efa5ad61bc756b1dd8f86b12545.png

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

28340d2728697f3bdd4de748440f87f0.png

Набор подобных компонентов принято называть «UI Kit».

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

Важно отметить, что на данном этапе нет официально ответственных лиц за UI Kit. Всё построено на энтузиазме отдельно взятых разработчиков, которые полуофициально и время от времени занимаются компонентами:

a79c34b6652c52fd14f0aa17e5ed9f8d.png

Но, как показывает практика, долго так продолжаться не может, и встаёт первый вопрос направления стрелочек:

ee1fdaccdaae3dee37c710a0e4d9199e.png

В какой-то момент до этого слабо контролируемая песочница должна превратиться в источник компонентов (и правды) для остальных команд:

f238f9adcda11d1502ad13538d659c1e.png

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

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

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

5ea4b1235d461425e178485b9b334ce4.png

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

Но так или иначе, на уровне дизайна зарождается такой же UI Kit, как и в разработке.

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

0cc10a8d47357ae2cf6b4a0daec33fdf.png

Как и в случае с разработкой, UI Kit на данном этапе становится песочницей, только уже на уровне дизайна. Добавим эмодзи для большей наглядности:

04df139aa9760fed5c5ffeaae6db8ca4.png

Рано или поздно встаёт закономерный второй вопрос направления стрелочек:

34ece9ab20bd7584097a3aa1a70b2269.png

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

342dec213b51dc8b58e0492119089c0d.png

Однако, это ещё не всё:

718d7c6702ddd57eee772530a90b86b3.png

Для полноты картины мы всё же должны прийти к так называемому «design first» принципу, согласно которому дизайн первичен, а разработка это просто зеркальное отражение того, что нарисовано в макетах:

63a63aa09d8e9cdf56d97d5c07c0b745.png

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

В таком виде всё это уже можно назвать «Дизайн Система»:

02a947acea9edcb2bc196fda2baaa525.png

В этот момент Дизайн Система зачастую непринуждённо подходит к этапу формирования полноценной команды. Но, как в известном меме…

875685b1b06837c5035b0411847a2e5f.png

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

54365736735a4e15c3c0b251abc09e16.png

В минимальном варианте команда Дизайн Системы обычно состоит из менеджера, дизайнера и разработчика:

f044311c00bce7f16b2135b9247e9f4d.png

Главной задачей новоиспечённой команды является непрерывная борьба за баланс между переиспользованием уже существующих компонентов и добавлением новых.

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

fe44f9c0f2a13426520be156e38c8387.png

Объяснение границ, соблюдение процессов и интеграция Дизайн Системы во все команды становится ежедневной работой.

Так что же такое Дизайн Система?

Если оценить только UI Kit, изолированно от всего остального, то мы находимся где-то на границе между «однородностью» и «слаженностью»:

Consistency, cohesion, and coherance

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

Дизайн Система же, развивая идею, интегрирует UI Kit в компанию для достижения единой цели, выступая как сплочённый процесс.

Давайте попробуем это сформулировать:

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

Т.е. не каждый open source UI Kit в вакууме по умолчанию является Дизайн Системой до того момента, пока он действительно не является частью компании.

e4ca6d141612c95e05841082f6f3e1f4.jpg

А что дальше, после Дизайн Системы?

Представим, что Дизайн Система уже полноценно сформировалась — все стрелочки направлены в нужную сторону, процессы работают.

Чем масштабнее развиваются проекты компании, тем больше команд начинают использовать Дизайн Систему. Их может быть и 2, и 10, и 50.

Для описания дальнейшего шага развития Дизайн Системы обратимся к концепции Брэда Фроста под названием «Атомарный дизайн»:

По началу компоненты «атомарные» — простые и неделимые (например, обычное поле ввода). Затем компоненты становятся всё более и более «молекулярными» — чуть более сложными композициями атомов (например, поле ввода с календарём для выбора даты). С развитием Дизайн Системы «молекулы» всё чаще объединяются в «организмы» — композиции ещё более высокого порядка (например, целая форма, состоящая из полей ввода и кнопки сохранения).

Atomic Design

Любопытное замечание, что «токены» — низкоуровневые свойства, упомянутые ранее, в этой концепции по сути являются субатомными частицами.

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

Например, во время прототипирования:

4813174d9d3c676fc5ae7e92ef03ee4d.png

Назовём это «паттерны»:

  • навигацию в наших продуктах мы делаем через сайдбар

  • в шапке у нас поиск и точка входа в профиль пользователя

  • форма регистрации у нас состоит из таких полей

  • ошибки мы отображаем вот так

  • а динамическую загрузку виджетов вот так

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

7e4927ef5f8a45396126858afaed2ece.png

Если пойти ещё дальше, то можно предположить, что между Идеями также может возникнуть некая взаимосвязь: общие мысли по повышению конверсии, вовлечённости, удобства пользования и доступности информации.

9a57c7c97829f44315de5cbb88ca48f4.png

Во главе нашей схемы поставим великий термин UX — User Experience, во всём его многообразии. На результаты работы UX-специалистов могут опираться бизнес-аналитики (BA), стоящие за переводом бизнес-целей на язык требований. И наоборот.

UX привносит смыслы в паттерны, отвечая на вопросы зачем и почему мы создаём именно такие интерфейсы:

867c952316bdcc7fcb9965c14776b9c2.png

Это то, что я бы назвал «DesignOps» — ещё более абстрактный и редкий термин:

e0bae972c90167206f9ef13a6b049d57.png

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

Итого

В целом, во всех компаниях и проектах, в которых я строил Дизайн Системы и их команды, паттерн развития примерно один и тот же. Понимание жизненного цикла и дальнейших шагов позволяет избежать распространённых ошибок. А понимание вариантов встраивания в оргструктуру и процессы компании — это легкодоступное обоснование с точки зрения бизнес-ценностей.

© Habrahabr.ru