SellChatGPTУроки по Claude › AI Fluency для разработчиков и продукта

AI Fluency для разработчиков и продукта

Урок о том, как встроить ИИ в работу команды так, чтобы выигранные часы не уходили потом на разбор инцидентов. Внутри — петля из четырёх шагов (делегирование, описание, оценка, добросовестность), шаблон задания для модели, чек-лист чтения диффа и интерфейса, правила приёмочных тестов. К концу у вас будет цикл, который можно приложить к ближайшей задаче спринта.

Работа с ИИ: фреймворк 4D 8 разделов ~11 мин чтения практика и чеклист
Содержание урока
  1. Четыре D: петля, а не лестница
  2. Делегирование: что отдать, что поделить, что оставить себе
  3. Описание: техническое задание вместо просьбы
  4. Оценка кода: читать дифф, а не сопроводительный текст
  5. Оценка интерфейсов: где генерация выглядит лучше, чем работает
  6. Приёмочные тесты: договор о том, что считается готовым
  7. Ответственность: кто подписывается под релизом
  8. Деньги, доступ и трезвые ожидания
  9. Практика
  10. Проверьте себя
  11. Частые вопросы
  12. Похожие уроки

Кому подойдёт

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

Что понадобится

Нужен опыт работы в команде разработки или продукта — достаточно уровня «читаю дифф и понимаю, что происходит», доступ к любому чат-ассистенту или агенту в редакторе и одна живая задача из бэклога: на ней и тренируемся. Учтите заранее: бесплатных лимитов хватает на знакомство, для ежедневной работы нужен платный тариф или ключ API с оплатой по токенам, а сервисы Anthropic из России открываются только через VPN и оплачиваются зарубежной картой.

Четыре D: петля, а не лестница

Работа с ассистентом ломается не там, где модель «недостаточно умная», а там, где размыто, кто и что решает. Рамка расставляет это по местам. Делегирование (delegation) — решаю, что вообще отдаю. Описание (description) — формулирую задачу так, чтобы её можно было и выполнить, и проверить. Оценка (discernment) — сужу о результате по существу, а не по гладкости текста. Добросовестность (diligence) — отвечаю за то, что ушло в релиз, вместе с последствиями.

Шаги не проходятся по порядку один раз — это петля. Модель выдумала параметр библиотеки: возвращаемся к описанию и даём кусок реальной документации. Проверить результат нечем: значит, промахнулись на делегировании, задачу надо резать мельче. За одну задачу петля закручивается несколько раз, и итог зависит от того, как быстро вы её замыкаете, а не от длины первого промпта.

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

Делегирование: что отдать, что поделить, что оставить себе

Первый вопрос — не «как попросить», а «что я отдаю». Разложите ближайшие задачи по трём режимам. Автоматизация: модель делает работу целиком, вы принимаете результат — перевести сорок файлов на новый способ импорта, разложить накопившиеся обращения поддержки по темам, написать скрипт разовой выгрузки. Совместная работа: вы ведёте, модель предлагает и переписывает — черновик спецификации, разбор незнакомого модуля, поиск причины плавающего бага. Совет: руки ваши, модель отвечает на вопросы — выбор схемы платежей, компромисс между версиями API, стоит ли делать фичу вообще.

Режим выбирают по двум величинам: цена ошибки и стоимость проверки. Дёшево ошибиться и легко проверить — автоматизируйте без раздумий. Дорого ошибиться, но проверка отработана (миграция базы с прогоном на копии) — делегируйте и проверяйте по-настоящему. Дорого ошибиться и проверить нечем — не делегируйте. Фраза «я не смогу проверить это за разумное время» означает, что задача не готова к передаче: её надо разрезать на куски, каждый из которых проверяем.

Часть решений не отдают никогда, сколько бы времени это ни экономило: приоритеты в бэклоге, цена продукта, обещания клиенту, обращение с персональными данными, финальная приёмка релиза. На такие вопросы модель отвечает уверенно и связно — в этом и ловушка. Последствия несёт человек, и формулировкой промпта они никуда не переносятся.

Описание: техническое задание вместо просьбы

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

Постоянную часть контекста вынесите из промпта в файл проекта: в Claude Code это CLAUDE.md в корне репозитория. Внутри — стек с версиями, команды сборки, тестов и линтера, соглашения об именовании, каталоги, которые трогать нельзя. Держите его на одну страницу: раздутый файл устаревает и начинает врать. Приём переносится на любого агента — важна не конкретная реализация, а письменная память проекта, которую можно поправить одной правкой.

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

  • Контекст: стек и версии, какие файлы относятся к задаче, что уже работает
  • Результат: один глагол и наблюдаемый исход — «добавить эндпоинт POST /api/signup, который возвращает 201 и идентификатор пользователя»
  • Ограничения: что нельзя трогать, какие библиотеки запрещены, какие правила стиля обязательны
  • Форма ответа: дифф, план, таблица сравнения или список вопросов — иначе получите эссе там, где нужен патч

Оценка кода: читать дифф, а не сопроводительный текст

Объяснение модели о том, что она сделала, — самая убедительная и наименее надёжная часть ответа. Смотрите на изменения: `git diff --stat` показывает масштаб, дальше читаете построчно. Главный вопрос не «работает ли», а «что здесь поменялось ещё». Типичная картина: попросили поправить валидацию почты, а заодно переписан соседний хелпер, снята проверка прав и подтянута другая мажорная версия зависимости. Выглядит опрятно и собирается.

Порядок проверки экономит время: сначала машинное — линтер, проверка типов, тесты, аудит зависимостей (`npm audit`, `pip-audit`); потом человеческое — границы изменений, обработка ошибок, читаемость, соответствие требованию. Если падает первый слой, второй можно не начинать. И держите жёстко одно правило: код, который вы не понимаете, не мержится. Не потому, что он плохой, — просто чинить его в три часа ночи будете вы, а не модель, и «перепиши проще» здесь нормальная претензия на ревью.

  • Вызовы и параметры, которых нет в вашей версии библиотеки, и устаревшие конструкции из старой документации
  • Проглоченные исключения вроде `except Exception: pass` — ошибка исчезает молча
  • Тесты, которые мокают ровно то, что должны проверять
  • Дублирование вместо переиспользования: модель не видела готовую функцию в соседнем модуле
  • Конкатенация строк в SQL, вывод в HTML без экранирования, ключи прямо в коде, доверие к данным из запроса

Оценка интерфейсов: где генерация выглядит лучше, чем работает

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

Доступность модель имитирует, но редко доводит. Проверьте контраст основного текста (ориентир WCAG — 4.5:1), проход по форме одной клавиатурой, видимый фокус, подписи, привязанные к самим полям, размер области нажатия на мобильном, осмысленные alt у картинок. Отдельная беда — тексты: «Произошла ошибка, попробуйте позже» не сообщает ничего. Сообщение должно называть причину и следующий шаг: «Не удалось сохранить: файл больше 10 МБ. Уменьшите размер и повторите».

Здесь продуктовому специалисту достаётся самая содержательная часть работы, и код для неё не нужен. Пройдите сценарий глазами человека, который видит продукт впервые: понятно ли, что случится после нажатия, можно ли отменить действие, куда попадает пользователь после успеха и после отказа. Модель хорошо собирает макет и плохо чувствует, что кнопку «Удалить» без подтверждения нажимать страшно.

  • Пусто: ни одной записи, и вместо таблицы — подсказка, что делать дальше
  • Загрузка и ошибка сети: видно, что запрос идёт, и видно, что он не прошёл
  • Длинные значения: имя на 60 символов, сумма на девять знаков, текст на трёх языках
  • Узкий экран около 360 пикселей и тёмная тема, если она есть в продукте
  • Повторное нажатие кнопки отправки: не создаётся ли второй заказ

Приёмочные тесты: договор о том, что считается готовым

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

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

Разделяйте слои. Быстрые модульные тесты (`pytest -q`, `npm test`) ловят логику, браузерные проверки на Playwright ловят интерфейс. В браузерных ищите элементы по роли и подписи, а не по CSS-селекторам: селекторы ломаются при каждом переписывании вёрстки, а генерация переписывает её охотно. И держите хотя бы один сквозной сценарий, написанный человеком, — от входа пользователя до записи в базе.

Ответственность: кто подписывается под релизом

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

Организуйте выпуск так, чтобы ошибка стоила дёшево: флаг функциональности, чтобы выключить фичу без деплоя; понятный откат (`git revert` конкретного коммита, а не героическая починка на живом сервере); наблюдение в первые часы — логи ошибок, метрика ключевого действия, обращения в поддержку. Ведите короткий журнал прямо в задаче: что делегировали, чем проверяли, что решили не проверять и почему. Три строки, полминуты. Через месяц по нему видно, где ИИ реально ускоряет команду, а где работа просто переехала с написания на разбор чужих ошибок.

Деньги, доступ и трезвые ожидания

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

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

Практика

  1. Возьмите незакрытую задачу текущего спринта — настоящую, не учебную. Запишите в одну строку, какой наблюдаемый результат считается успехом.
  2. Выберите режим: автоматизация, совместная работа или совет. Обоснуйте выбор двумя оценками по десятибалльной шкале — цена ошибки и стоимость проверки.
  3. До первого промпта напишите шесть-девять сценариев в форме «при каком условии — что делаю — что вижу». Два отрицательных и один граничный обязательны.
  4. Заведите в корне репозитория CLAUDE.md на одну страницу: стек с версиями, команды тестов и линтера, стиль именования, каталоги, которые трогать нельзя.
  5. Соберите задание из четырёх блоков и попросите сначала план из пяти-семи шагов, а не код. Прочитайте план и поправьте его до генерации.
  6. Получив дифф, посмотрите `git diff --stat`, прочитайте изменения целиком и выпишите три замечания: лишние правки, необработанные ошибки, отсутствующие проверки ввода.
  7. Прогоните линтер, типы и тесты, затем откройте интерфейс в пяти состояниях: пусто, загрузка, ошибка сети, длинный текст, ширина 360 пикселей. Тексты ошибок перепишите руками.
  8. Сломайте одну строку логики намеренно и убедитесь, что тесты покраснели. Допишите в задачу три строки: что делегировали, чем проверяли, кто отвечает за откат.

Проверьте себя

  • Для любой задачи из бэклога я называю режим делегирования и обосновываю выбор двумя вещами: цена ошибки и стоимость проверки
  • Задание модели собрано из четырёх блоков — контекст, результат, ограничения, форма ответа — и написано до Enter, а не дополняется пятью уточнениями подряд
  • Я читаю дифф целиком и нахожу в нём правки, о которых не просил: переписанные соседние функции, снятые проверки, подменённые версии зависимостей
  • Приёмочные сценарии сформулированы до генерации, треть из них отрицательные, и на намеренно сломанной строке логики тесты падают
  • Интерфейс проверен минимум в пяти состояниях: пусто, загрузка, ошибка сети, длинные значения, экран шириной 360 пикселей
  • У каждого релиза с участием ИИ есть имя ответственного человека, готовый способ отката и понимание, что именно я проверил лично

Частые вопросы

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

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

Может ли ИИ сам писать тесты к своему коду?

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

Что делать, если модель уверенно выдумывает несуществующие функции и параметры?

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

Можно ли отправлять в модель код и данные компании?

Это вопрос договора и внутренних правил, а не техники. Секреты, ключи, персональные данные клиентов и куски продакшн-базы в промпт не кладутся по умолчанию — вместо них берите синтетические примеры той же формы. По корпоративному использованию уточните у службы безопасности, какой контур разрешён: публичный веб-интерфейс, API, облако провайдера или модель внутри компании. Пока ответа нет, безопасная граница — открытый код и обезличенные данные.

Правда ли, что с ИИ команда выпускает фичи в разы быстрее?

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

Чтобы пройти практику, нужен рабочий доступ

Подключим подписку на ваш аккаунт: оплата картой РФ, по СБП или криптой, пароль от аккаунта не нужен. Обычно за 15 минут в рабочее время.

Подключить Claude Pro — 2 490 ₽ Все уроки

Похожие уроки