Паттерны в эпоху AI

Нужны ли GoF, SOLID, GRASP, если LLM пишет код общими мазками? автор: именно сейчас они нужнее, чем раньше.

Главный аргумент

«AI выдаёт решение общими мазками. Без знания паттернов вы не сможете направить его и проверить.»

AI знает все паттерны из книжек, но не понимает применимость. Эксперимент автора:

  • Скормил AI свою реализацию Unrolled List с 3 указателями (Head/Tail/Current)
  • Скормил FixedQueue из Node.js для сравнения
  • Описал идею: список сам может быть пулом (старые узлы возвращаются в head)

Результат: AI «не понимает, начинает делать Object Pool» — стандартный паттерн из книжки, игнорируя авторский инсайт.

Почему AI выбирает шаблоны

  • LLM обучен на массиве кода → выдаёт самые частые решения
  • Не понимает контекст: «список как пул» — концепция выше шаблона
  • Применяет GoF-Object Pool по букварю вместо изящного решения

Что это значит для разработчика

  1. Паттерны = общий язык с AI. Можно сказать «сделай через Flyweight», и AI поймёт.
  2. Без знания паттернов нельзя проверить AI-код. Это «правильно» или «классический шаблон»?
  3. AI не придумает новый паттерн — только пережёвывает известные. Senior знает, когда выйти за рамки.
  4. Senior работа = моделирование, а не написание кода. Моделирование тренируется на паттернах.

Конкретные навыки эпохи AI

  • Опознать паттерн в чужом коде (включая AI-сгенерированный)
  • Подобрать паттерн под задачу — это AI делает плохо
  • Знать границы применимости — когда паттерн НЕ нужен
  • Распознать антипаттерны в AI-выводе (Singleton на каждый чих, ORM, middleware)

автор о ценности паттернов

«Паттерны полезны как тренажёры — на них можно оттренировать студентов»

«Между языком и фреймворком должно быть моделирование. Этот этап все пропускают»

«AI знает структуры данных, очереди, паттерн Strategy — но не понимает, что список сам может быть пулом»

Связь с архитектурой

Паттерны GoF — это уровень кода в одном процессе. На макроуровне:

  • GRASP → общие принципы проектирования
  • SOLID → принципы между классами
  • GoF → конкретные структуры
  • Enterprise Patterns / DDD → уровень приложения
  • Архитектура (Clean, Hexagonal) → уровень системы

Senior должен видеть все уровни. AI работает только на нижних — выполнение по описанию.

Главные тезисы автора

  • Паттерны = общий язык с AI — без них вы не контролируете генерацию.
  • AI не понимает применимость — знает синтаксис, не семантику.
  • Senior = моделирование, тренируется на паттернах.
  • AI без паттернов не построит «золотое решение» — он делает «типичное».
  • Тренажёры из паттернов заменить нечем — теория без практики бесполезна.
  • Паттерны устойчивее фреймворков — фреймворк меняется каждые 3 года, паттерны живут 30 лет.

🎓 Источники

См. также