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

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

На этой неделе настолько часто натыкался на видео и посты про "Вайб-коддинг", что решил сам протестировать IDE Cursor и она, внезапно, оказался очень даже неплох (но есть нюанс, о нем в заключении).

Правила работы по сути те же, что и в прошлом посте по этой теме (его можно найти по ссылке, или поискав в блоге здесь), но немного расширены и дополнены:

Четко формулируем задачу. Конкретика убивает баги. Чем точнее запрос — тем меньше правок в сгенерированном коде.

Вместо: «Напиши функцию для сортировки» — «Напиши функцию на Go, которая сортирует срез структур Event по полю Timestamp (типа time.Time) в обратном порядке. Используй sort.Slice для сортировки, и если срез пустой — возвращай ошибку».

Определяем стиль и стандарты кода: «Следуй рекомендациям Go Code Review Comments, используй fmt.Errorf для ошибок и форматируй код с помощью gofmt».

Это позволит избежать разночтений в стиле. (В идеале, чтобы ИИ работала в вашем стиле, ей стоит скормить вашу кодовую базу, как это сделать просто и относительно быстро расскажу, в одном из следующих постов).

Ролевой режим лучше работает с контекстом: "Действуй как Senior Swift-инженер. Оптимизируй этот код для работы с большими массивами данных." (Без контекста, нейросети зачастую начинают думать, что вы хотите привнести немного Италии в код)

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

Не забываем про версию языка и контекст

Всегда указываем версию языка и фреймворк: Swift (Swift 6.1, SwiftUI): «Реализуй кастомный анимационный переход между View с использованием GeometryReader. Код должен быть совместим с iOS 18+».

Декомпозируем задачи всегда.Структурируйте запрос как ТЗ, разбивайте задачу на шаги: «Определи структуру данных для пользователей».«Реализуй функцию fetchUsers() с обработкой ошибок».«Добавь кеширование запросов».

• Ограничиваем и направляем

Задаем ограничения по объёму, времени выполнения или архитектуре :«Сгенерируй решение для парсинга JSON, не используя сторонние библиотеки, в не более чем 50 строках кода».

Четкие рамки помогут избежать лишнего функционала.

Без итераций никуда. Проверяй код и уточняй.

Первый ответ — это всегда заготовка (ну если только вам не "Hello, World" понадобился). Уточняем детали: «Добавь логирование через zap»«Сделай метод асинхронным»«Оптимизируй для работы с 1000+ запросами в секунду»

• Ограничивайте выходные данные. Нейросети очень любят пояснять свой код (хотя это и неплохо, но зачастую избыточно).

Чтобы избежать многословности: «Сгенерируй SQL-запрос для выборки пользователей с >5 заказами. Только код, без пояснений».

• Проси оптимизировать свой код для производительности и безопасности: «Оптимизируй функцию fetchUsers() для высокой нагрузки, добавь таймауты для HTTP-запросов и проверь обработку ошибок, связанных с сетью».

• Снова вспоминаем про контекст (по факту работа с ним - самое полезное, что сейчас предлагают ИИ реальным разработчикам) Выделяем участок своего кода в IDE (в Cursor, GitHub Copilot и IDE от JetBrains точно работает) и спрашиваем:«Почему этот цикл вызывает утечку памяти? Предложи фикс».ИИ проанализирует это и постарается объяснить логику.

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

GitHub Copilot — отлично подходит для быстрого автодополнения и создания шаблонного кода.

Cursor — для генерации объемных кусков кода и архитектурных решений (и пока что топ 1 в моем личном рейтинге).

JetBrains AI — для анализа, рефакторинга и поиска ошибок прямо в IDE.

Codeium, Tabnine, Kite — альтернативы, каждая со своими фишками.

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

Может ли робот написать симфонию? -Да, Может, если вы ему объясните как ее писать. А как ему объяснить, если сам не понимаешь? 😁

Подписывайтесь на мой канал - Neko.Play.Panic(), делюсь там мыслями, интересными находками и новостями об играх, IT, Lego и всяком, что меня заинтересовало.

4
2 комментария