80/20 vs AI-агент: как создать доступный DatePicker — сравнение подходов
Команда frontend-разработчиков из компании «Исходный код» провела эксперимент: может ли AI-агент создать production-ready компонент DatePicker для React и TypeScript с полноценной поддержкой доступности (a11y). Ответ — да, но с важной оговоркой. AI работает как часть инженерной системы, а не как генератор кода по кнопке.
Источник: Habr
Результат — открытый репозиторий на GitHub и рабочее демо. Но главное — практическое сравнение двух подходов, которое поможет вашей команде решить, какой из них выбрать для своих компонентов.
Если вы техлид или frontend-разработчик, который оценивает, стоит ли доверять AI создание сложных UI-компонентов, вот что нужно знать о рисках и результатах каждого подхода.
Что именно произошло: эксперимент с DatePicker
DatePicker — обманчиво простой компонент. Снаружи это поле ввода, кнопка и всплывающий календарь. Внутри — keyboard navigation, управление фокусом, работа со screen reader'ами, контролируемое состояние, локализация, мобильная верстка и десятки пограничных состояний.
Команда Ильи, технического директора «Исходного кода», сравнила два подхода к созданию такого компонента с помощью AI:
- 80/20 — модель получает подробный запрос на основе стандарта WAI-ARIA APG, генерирует большую часть кода, остальное дорабатывается вручную.
- Системное проектирование с AI-агентом — сначала готовятся требования, архитектурные правила, задачи и тесты, только потом агент пишет код через итерации.
Оба подхода сработали. Разница — в том, где и как они дают сбой.
Подход 80/20: быстро, но с риском «случайной архитектуры»
Это самый очевидный путь: дать модели Claude четкий запрос на основе WAI-ARIA APG и попросить сгенерировать DatePicker. Для прототипа этого достаточно — модель знает сетку календаря, React-компоненты, ARIA-атрибуты и логику клавиатурной навигации.
Проблема начинается, когда первая версия выглядит почти готовой.
Большинство ошибок возникает не внутри отдельного элемента, а на стыках между ними:
- Строгое следование APG может создать разметку, которая выглядит правильно, но работает с реальными screen reader'ами хуже, чем контролируемое отклонение от руководства.
- Диалоговое окно может начать мигать из-за конфликта обработчиков
onBlurиonClick. - Разница между
aria-live="polite"иassertiveв коде незаметна, но становится реальной проблемой UX, когда screen reader начинает озвучивать изменения.
Главный недостаток: модель пишет код, который выглядит правильно, но не может оценить поведение системы в целом. Архитектура разрастается случайно — вы исправляете ошибку с фокусом, затем с состоянием, потом с доступностью. Компонент работает, но его внутренняя структура определяется исправлениями, а не проектом.
Для прототипа это приемлемо. Для production-компонента — рискованно.
Системное проектирование с агентом: дольше, но предсказуемее
Второй подход требует больше подготовки, но дает другой результат. Сначала команда формулирует требования, архитектурные правила, разбивает задачу на подзадачи, готовит тесты и проверки. Только после этого AI-агент начинает писать код, проходя через итерации и уточнения.
Этот метод опирается на документированный подход к работе с AI-агентами. Он не превращает модель в «волшебную машину для печати кода», а использует её как инженерный инструмент в рамках заданной архитектуры.
Результат — компонент с предсказуемой структурой, где каждое решение обосновано требованиями, а не случайными исправлениями.
Сравнение подходов: что выбрать вашей команде
| Критерий | Подход 80/20 | Системное проектирование с агентом |
|---|---|---|
| Время до первого прототипа | Минуты | Часы (подготовка требований) |
| Качество архитектуры | Случайное, определяется исправлениями | Заложено в требованиях |
| Риск ошибок на стыках | Высокий | Снижается за счет тестов |
| Пригодность для production | Рискованно | Более предсказуемо |
| Контроль над результатом | Низкий | Высокий |
Что может пойти не так: скрытые риски
Даже при системном подходе остаются риски, которые стоит проверить до внедрения.
Зависимость от модели. В эксперименте использовалась Claude, но результат может отличаться на других моделях. Конкретные версии моделей и инструментов в статье не указаны, что затрудняет воспроизводимость.
Ограниченность примера. DatePicker — сложный, но не самый сложный компонент. Результаты могут не переноситься на более комплексные UI-элементы.
Отсутствие независимого тестирования. В статье нет данных о тестировании с реальными screen reader'ами и пользователями с ограниченными возможностями. Формальное соответствие APG не гарантирует реальную доступность.
Коммерческий уклон. Статья написана техническим директором компании, что может влиять на акценты в пользу методологии агента.
Что проверить на этой неделе: практический чек-лист
- Откройте демо-версию компонента по ссылке и протестируйте с клавиатуры и screen reader'ом. Оцените, насколько поведение соответствует ожиданиям ваших пользователей.
- Изучите код в репозитории — посмотрите, как организована архитектура, какие тесты написаны, как обрабатываются пограничные состояния.
- Сравните со своим компонентом — если у вас уже есть DatePicker, оцените разницу в подходе к доступности и архитектуре.
- Проверьте WAI-ARIA APG — официальный паттерн DatePicker от W3C — это база, от которой стоит отталкиваться независимо от выбранного подхода.
- Проведите мини-эксперимент — возьмите простой компонент из вашего проекта и попробуйте оба подхода. Замерьте время, количество ошибок и усилия на доработку.
Какой подход выбрать: решение для вашей команды
Если вам нужен быстрый прототип для проверки гипотезы — подход 80/20 сработает. Но как только компонент идет в production, системное проектирование с AI-агентом дает больше контроля и предсказуемости.
Ключевой вывод из эксперимента: AI может создавать сложные доступные компоненты, но только если вы относитесь к нему как к части инженерной системы, а не как к генератору кода. Подготовка требований, архитектурных правил и тестов — это не лишняя бюрократия, а必要条件 для получения production-ready результата.
Источники
- Статья на Habr (исходный источник)
- GitHub-репозиторий проекта
- Демо-версия DatePicker
- WAI-ARIA APG (Date Picker pattern)
Генерация изображения
- Модель:
flux-schnell - Провайдер:
replicate
Темы журнала
Что почитать дальше
- 6 AI-инструментов для генерации текста в 2026: ChatGPT, Claude, Gemini, Jasper, Copy.ai, Writesonic — сравнение по 5
- Claude DatePicker: 3 дня доработок для WCAG-доступности
- Claude Tag в Slack: как внедрить AI-агента в общие каналы без утечек данных
- Claude Tag в Slack: какой ИИ-агент можно пускать в общий канал и что проверить перед запуском
- Claude пишет 80% кода в Anthropic: почему ревью стало узким местом