Как продуктовый дизайнер создавал Figma-виджет для дизайн-ревью с помощью ChatGPT: шишки, успехи и промты

Привет! Меня зовут Софья, я продуктовый дизайнер в Альфа-Банке: проектирую разделы Доставки и Чаты, немножко сую нос в дизайн-систему и не в своё дело — как раз об этом я и хочу рассказать в своей статье.

Как продуктовый дизайнер создавал Figma-виджет для дизайн-ревью с помощью ChatGPT: шишки, успехи и промты

Зачем нужен виджет для дизайн-ревью

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

Однажды я наткнулась на статью о подходе к дизайн-ревью, который используют наши коллэги из Ozon. Мне понравился их шаблон в Figma, и, немного адаптировав его под себя, я убедилась на практике, что ребята предлагают дело. Так родилась идея создать виджет для Figma, чтобы оптимизировать весь процесс и визуализировать правки удобным и понятным образом. Да, можно было бы обойтись какими-нибудь компонентами, но это ведь слишком просто!

<i>Макет будущего виджета</i>
Макет будущего виджета

Моя интерпретация шаблона для дизайн-ревью оказалась весьма монструозной, поэтому для первой версии виджета было решено оставить только разработку таблицы. Немного подправив структуру в слоях, я выгрузила макет в HTML (при помощи плагина Figma to Code) и приступила к работе над кодом с ChatGPT.

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

Этап 1: Создание базовой структуры виджета

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

Прекрасная новость в том, что после создания папки проекта работать нужно всего с одним файлом — code.tsx, проверяя работоспособность виджета прямо в Figma, запустив нехитрую команду в терминале. Я использовала VS Code, где терминал можно открыть прямо в программе, что очень удобно. Остальное — в видео, к просмотру обязательно.

<i>Окно создания виджета в Figma</i>
Окно создания виджета в Figma

Лайфхак: создайте два виджета — Default и Simple. Первый — для работы над вашей версией, второй — эталонный, чтобы показать ChatGPT контекст и структуру.

Этап 2: Добавление контекста для ChatGPT

И первая набитая шишка: наивная, я думала, что ChatGPT знает, что такое Figma и как писать для неё виджеты. Оказалось, что он фантазирует на полную катушку, и хотя коды выглядели серьёзно, работать в Figma они не собирались.

<i>Первый промт: Описываем задачу</i>
Первый промт: Описываем задачу

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

<i>Ответ на первый промт</i>
Ответ на первый промт

Вторая набитая шишка: сразу после этого я выдала ему всю логику своего виджета, прикрепив изображения и HTML для отображения UI и потребовала полный код. Первая часть этого хода хорошая — опять-таки для контекста. Но с нашим другом важно сохранять итеративность, иначе таким же нубам в разработке, как я, найти, что не так в коде — миссия невыполнима. А сам ChatGPT будет предлагать исправления, которые, скорее всего, ни к чему работающему не приведут.

<i>Ошибки в консоли Figma</i>
Ошибки в консоли Figma

Этап 3: Итеративный подход

<i>Следующий промт: Описываем общую логику виджета</i>
Следующий промт: Описываем общую логику виджета

К этому этапу вот что мы скормили ChatGPT:

• работающий код и логику простого виджета, который предложила нам сама Figma;

• логику работы нашего виджета;

• HTML для отображения UI нашего виджета.

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

<i>Следующие промты: Итеративно напомлняем виджет</i>
Следующие промты: Итеративно напомлняем виджет

Важно указать, если в виджете нужно взаимодействие со «встроенным» меню. Ибо ChatGPT сначала придумал мне такую красивую кнопку внутри виджета для добавления строк, но оказалось, что нужная нам функциональность называется Property Menu. Запоминайте, записывайте, передавайте друзьям и родным — это стоило мне долгого времени поисков.

Промежуточный результат

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

Этап 4: Взаимодействия с виджетом и дата

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

Если с инпутами ChatGPT справился, то что касается всего остального… Мы подобрались к ещё одной моей шишке, которую я уже, на самом деле, набивала ранее: ChatGPT в рамках разработки виджетов для Figma не знает, как устанавливать текущую дату и добавлять кнопки. Опять таки, он пытался это сделать и, вероятно, где-то это заработало бы, но не у нас.

Ему нужно ещё больше контекста, сложного контекста.

<i>Библиотека виджетов на Github</i>
Библиотека виджетов на Github

И тут на помощь нам спешат открытые библиотеки виджетов на Github. Благодаря паре примеров, где была похожая функциональность с кнопками и датой, я научила ChatGPT справляться с поставленной задачей. Он оказался способным учеником — скорость освоения на высшем уровне. Мне бы так!

<i>Следующий промт: Снабжаем примерами сложных функций</i>
Следующий промт: Снабжаем примерами сложных функций

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

<i>Следующий промт: Продолжаем снабжать примерами сложных функций</i>
Следующий промт: Продолжаем снабжать примерами сложных функций

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

<i>Промежуточный результат</i>
Промежуточный результат

ChatGPT любит сбрасывать корректное отображение элементов (ибо он так видит). Поэтому наводить красоту рекомендую в самом конце.

Этап 5: Исправление визуальных багов

Когда мы убедились, что всё работает, — идём наводить красоту. Тут можно прогнать элементы через ChatGPT или подправить вручную, если хватает знаний. Но готовьтесь, в любом случае, лезть ручками в код — здесь вам пригодится минимальное понимание, как в эту разноцветную уличную магию можно вносить правки. Даже при наличии HTML, ChatGPT не всегда делает всё точь-в-точь, как задумано — он ведь тоже разработчик!

Добавлю здесь ещё про одну набитую шишку: не просите оптимизировать часть со стилями, если вы в этом не разбираетесь. ChatGPT может увлечься и всё испортить. А ваш код всё равно никто не увидит и не закидает комментариями к каждой строке (надеюсь, ни один разработчик не прочитает эту статью).

<i>Дополнительные промты: Улучшаем UI</i>
Дополнительные промты: Улучшаем UI

Публикация виджета

Готовый виджет

Ваш виджет, как сын маминой подруги — красивый и работает? Пора выводить его в свет.

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

Краткая инструкция для создания виджета с ChatGPT

  • Познакомьтесь с основами создания виджетов.
  • Дайте ChatGPT весь контекст: примеры работающих виджетов и конкретные задачи.
  • Отдельно обратите внимание, чтобы ChatGPT не смел выдумывать функциональность без вашего чёткого указания.
  • Опишите логику работы виджета и его интерфейс, используя термины Figma API.
  • Создавайте виджет пошагово: от простого к сложному, с проверкой и сохранением каждого этапа.
  • Отложите правки по UI на конец, добавляя стили по мере необходимости.
  • При возникновении ошибок уточняйте, что именно не работает, и создавайте промты для отладки.

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

Выводы и будущие планы

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

Говорят, ChatGPT превращает хорошего разработчика в очень хорошего разработчика, а плохого разработчика в разработчика ещё хуже. Что касается дизайнеров — судите сами.

А вот важные принципы работы с чудо-машиной

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

А вот мои планы на доработку виджета

  • Добавление элементов для аннотаций: добавить возможность ставить на скриншотах сборки номерки, которые будут перекрёстно ссылаться на записи в таблице. Это поможет сделать комментарии ещё более наглядными.
  • Улучшение взаимодействия с таблицей: дать возможность удалять и изменять порядок строк, чтобы таблица стала ещё гибче и удобнее.
  • Шаблон для размещения макетов: интегрировать шаблон для загрузки скриншотов или макетов, чтобы избавиться от фрэймов, в которых они живут сейчас.

Сейчас виджет опубликован только внутри организации, в которой я работаю. Стоит ли его публиковать в Community? Пишите в комментариях!

Спасибо всем причастным котяткам за поддержку!

У меня всё.

33
Начать дискуссию