Привет, коллеги по несчастью! 👋 Вы когда-нибудь ловили себя на мысли, что провели 4 часа в диалоге с Deepseek/Qwen/ChatGPT, пытаясь заставить его починить очередной баг в сгенерированном коде? И в итоге вместо элегантного решения получили монстра из костылей, который работает, но вызывает ужас?

Я тоже. И знаете что? Это не ваша вина. Просто никто не рассказывает, как правильно пользоваться LLM для программирования. Давайте исправим это!


🔥 Совет №1: Не ввязывайся в диалог с демоном костылей

Что НЕ делать:
Представьте: вы дали LLM задачу написать веб-приложение. Она сгенерила код, но забыла про валидацию форм. Вы говорите: “Исправь форму”. Теперь валидация есть, но сломалась авторизация. Вы: “Почини авторизацию”. Теперь всё работает, но приложение стало в 3 раза медленнее. И так 15 итераций… В итоге у вас Frankenstein-код, который вы боитесь трогать.

Что делать вместо этого:
➡️ Вернитесь к началу! Удалите весь диалог и перепишите ПЕРВОЕ сообщение с уточнениями. Например:

"Напиши веб-приложение на React для управления задачами. Требования:
- Форма добавления задачи с валидацией (поле не может быть пустым, макс 100 символов)
- Авторизация через JWT
- Производительность: приложение должно обрабатывать 1000 задач без лагов
- Используй TypeScript и следуй принципам SOLID"

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

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


📝 Совет №2: Пусть LLM напишет ТЗ, а не код

Что НЕ делать:
Копипастить условие лабы из методички + 5 ссылок на документацию + скриншоты требований и кричать: “НАПИШИ КОД!!!” 🤯

Что делать вместо этого:
➡️ Сначала попросите LLM составить ТЕХНИЧЕСКОЕ ЗАДАНИЕ! Например:

"Я студент 4 курса. У меня есть такое задание: [короткое описание]. Вот материалы: [ссылки/скриншоты].
Пожалуйста, проанализируй всё это и составь детальное ТЗ на русском языке, включая:
- Функциональные требования
- Нефункциональные требования (производительность, безопасность)
- Ожидаемую архитектуру
- Технологический стек с обоснованием
- Потенциальные риски и как их избежать"

После этого я посмотрю ТЗ и скажу, что нужно изменить."

Почему это гениально:

  • Вы сразу видите, как LLM поняла задачу (часто оказывается, что не так, как вы думали!)
  • Редактировать текст ТЗ в 10 раз проще, чем править 500 строк сгенерированного кода
  • Вы учитесь правильно формулировать требования — это ценнее любого сгенерированного кода!

🧠 Совет №3: Используй LLM как мозговой штурм, а не как клавиатуру

Что НЕ делать:
Сразу кричать: “Напиши код для сортировки массива!” и получать стандартный quicksort, который вы и сами могли написать.

Что делать вместо этого:
➡️ Попросите LLM проанализировать ВАРИАНТЫ решения:

"Мне нужно отсортировать массив из 1 млн строк на Python.
Проанализируй разные алгоритмы сортировки для этой задачи:
- Какие алгоритмы подходят лучше всего?
- Сравни их по времени выполнения, памяти, стабильности
- Какой алгоритм выберешь ты и почему?
- Какие есть edge cases, на которые нужно обратить внимание?"

Золотое правило: Сначала разберись в задаче, потом пиши код. LLM отлично подходит для системного анализа!


🔍 Совет №4: Читай мысли LLM (да, это возможно!)

Секретный трюк: Думающие LLM показывают свое “мышление” перед ответом. Это золотая жила!

Что делать:
➡️ ВСЕГДА читай раздел “thinking” или “анализ” перед кодом. Там LLM часто пишет что-то вроде:

"Пользователь не уточнил, нужно ли сохранять данные между перезапусками приложения.
Предположу, что да, и буду использовать localStorage.
Также не указаны требования к безопасности — добавлю базовую валидацию ввода."

Почему это важно: Здесь LLM озвучивает скрытые допущения! Если вы с ними не согласны — Остановите процесс и уточните требования. Иначе получите код, который “работает не так, как надо”.


🏗️ Совет №5: Архитектура сначала, код потом

Что НЕ делать:
Просить LLM написать “просто клиент-серверное приложение” и получать монолитный файл на 1000 строк.

Что делать вместо этого:
➡️ Сначала опиши АРХИТЕКТУРУ:

"Хочу создать клиент-серверное приложение для чата.
Сначала опиши полную архитектуру:
- Какие компоненты будут на клиенте?
- Какие на сервере?
- Какие протоколы передачи данных?
- Как будет организовано хранение сообщений?
- Как обрабатывать одновременные подключения?

Только после моего одобрения архитектуры переходи к написанию кода."

Преимущество: Исправить архитектуру проще, чем переписывать код. Поверьте, это сэкономит вам недели мучений!


🧪 Совет №6: Пусть LLM тестирует сам себя

Что НЕ делать:
Проверять код только вручную или надеяться, что “оно работает”.

Что делать вместо этого:
➡️ Проси LLM написать тесты СРАЗУ:

"Напиши код для функции валидации email.
Сразу после кода напиши unit-тесты для этой функции на pytest, покрывающие:
- Валидные email (gmail, yandex, корпоративные)
- Невалидные email (без @, без домена, с пробелами)
- Edge cases (очень длинные email, специальные символы)"

А если ваша IDE поддерживает агентный режим (Cursor, Continue.dev, GitHub Copilot Labs):

"Теперь запусти эти тесты и автоматически исправь все найденные баги.
Покажи diff изменений и объясни, почему тесты падали."

Почему это круто: Тесты — ваша страховка. А автоматическое исправление багов экономит часы отладки!


💡 Бонус: Как я перестал бояться LLM и начал получать удовольствие

LLM — это не волшебная палочка, а интеллектуальный усилитель. Правильно настроенный диалог с ИИ:

  • ✅ Экономит время на рутине
  • ✅ Помогает увидеть слепые зоны в архитектуре
  • ✅ Учит аргументировать технические решения
  • ✅ Дает мгновенный feedback по коду

Главный секрет успеха: Не позволяйте LLM думать ЗА вас. Пусть она думает С вами!


🎯 Заключение: Стань архитектором, а не копирайтером кода

Когда вы в следующий раз откроете Deepseek/Qwen/ChatGPT для выполнения лабы, вспомните этот гайд. Помните: ваша ценность — не в умении генерировать код, а в умении правильно задавать вопросы и принимать решения.

LLM никогда не заменит программиста, но программист, который умеет с ней работать, заменит того, кто не умеет. 😉