Как не стать жертвой "LLM-зависимости": гайд для IT-студентов, которые хотят писать код, а не костыли
Привет, коллеги по несчастью! 👋 Вы когда-нибудь ловили себя на мысли, что провели 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 никогда не заменит программиста, но программист, который умеет с ней работать, заменит того, кто не умеет. 😉