Site icon AppTractor

Как стать 10x-разработчиком с помощью проговаривания мыслей

Андрей Карпати недавно написал в X о своём новом любимом способе работы с LLM — «хорошей длинной сессии бесцельного проговаривания мыслей», как он сам это назвал.

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

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

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

Почему проговаривать мысли лучше, чем печатать?

Прежде всего, это форма сжатия информации с меньшими потерями.

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

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

Так, экран авторизации. Нужны поля для email и пароля, кнопка регистрации и кнопка входа.

Ещё пользователям нужно дать возможность восстановить аккаунт, если они забыли пароль.

Также должна быть авторизация через Google, GitHub и другие сервисы.

Хотя GitHub, наверное, не нужен. Мои пользователи не разработчики, сейчас нет смысла это настраивать.

С другой стороны, почему бы не добавить? Хуже от этого точно не будет.

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

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

Или лучше сделать авторизацию в модальном окне — тогда не придётся переводить пользователя на отдельный экран.

Ещё нужна кнопка входа через Facebook*, потому что часть аудитории там пересекается.

Для изображения можно было бы использовать ASCII-арт. Например, город из ASCII-символов. Хотя это ужасно банально. Нужно что-то более оригинальное.

Но если честно, никто не будет разглядывать экран входа. Всем всё равно, как он выглядит. Это просто моё стремление сделать красиво ради красоты.

Знаете, что я действительно ненавижу? Когда со страницы входа для регистрации приходится переходить на другой экран. Я так не хочу.

А может, вообще использовать одноразовые коды вместо паролей? Это намного проще.

Наверное, мне просто нужно что-то простое и рабочее.

И этот поток продолжается ещё долго — слишком долго для обычного экрана входа, но я отвлёкся.

В нём содержится много полезной информации, которую агент может заметить и использовать при принятии решений:

  1. Мои пользователи не разбираются в технических деталях.
  2. Для меня важна простота.
  3. Я не люблю без необходимости уводить пользователя с текущего экрана.
  4. Мне не нравятся шаблонные интерфейсы.
  5. Иногда я слишком увлекаюсь красотой ради красоты.

Теперь представим, что я хочу превратить весь этот поток мыслей в обычный промпт. Скорее всего, я написал бы что-то вроде:

«Сделай экран авторизации с полями email и пароля, кнопками регистрации и входа, восстановлением пароля и социальной авторизацией через Google и, возможно, Facebook. Используй разделённый макет с изображением на одной стороне. Интерфейс должен быть чистым».

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

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

Хорошо, это работает. Но как делать это эффективнее?

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

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

Я бы даже сказал, что этот подход стоит довести до предела. Отсюда следующий совет — коллективное проговаривание мыслей.

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

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

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

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

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

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

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

  1. Страница онбординга непонятная.
  2. Кнопка запуска не работает.
  3. Текста слишком много.
  4. Нужно добавить этап верификации.

Теперь представим, что вместо этого я начал бы проговаривать свои мысли:

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

Кроме того, кнопка запуска сломана. Она не переводит меня туда, куда должна.

Мне также кажется, что текста слишком много. Не нравится, что в нём есть слова, которые не несут никакой пользы и просто увеличивают объём. Никто не захочет всё это читать — пользователям продукт не настолько интересен. Вообще, значительную часть текста можно убрать, потому что всё это и так будет объяснено во время онбординга. Текст должен только заинтересовать пользователя, а уже онбординг должен его обучить.

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

Что касается верификации, думаю, нам нужно добавить дополнительный шаг, чтобы обеспечить безопасность. Хотя, может быть, существует способ обеспечить безопасность без отдельной верификации? Было бы здорово найти такой вариант, потому что я не хочу заставлять пользователя выполнять лишние действия. Сама по себе верификация для меня не принципиальна. Мне важно только, чтобы продукт был безопасным. Если можно сделать это проще — отлично. Если нельзя, тогда просто добавьте верификацию.

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

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

Хорошо. Как начать?

Для начала, если вы ещё этого не сделали, установите приложение для голосового ввода. Например, Wispr Flow — можете воспользоваться моим реферальным кодом, — Willow или Aqua Voice. Все они выполняют примерно одну и ту же задачу.

После этого просто начинайте говорить. Всё настолько просто.

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

А если соседи или люди, с которыми вы живёте, начнут жаловаться, скажите, что виноват я. И заодно предложите им подписаться на мой Substack. :)

Источник

Exit mobile version