Найти в Дзене
Бронников

Почему AI не заменит программиста (пока что): правда без розовых очков

Каждый день лента пестрит заголовками: «ИИ напишет код лучше тебя». Но действительно ли искусственный интеллект готов похоронить профессию программиста? Разбираемся без хайпа. Искусственный интеллект продолжает имитировать мыслительные процессы, основываясь на открытых (а иногда и не вполне открытых — об этом позже) источниках. По сути, он пытается по запросу пользователя найти в своих нейронных связях аналогичный контекст и предложить решение, наиболее похожее на те, что встречались в обучающих выборках. Но чаще всего это лишь имитация интеллектуальной деятельности, не более. Во многих случаях ИИ даже не генерирует корректный — в смысле компилируемый и логически верный — код. Простой пример из личной практики: возникла задача — определить, какой ключ использовать для расшифровки JWT-токена в зависимости от заголовка запроса. Идея очевидна — составить список ключевых подстрок и проверить, содержится ли одна из них в заголовке. Попросил нейросеть сгенерировать метод. Вот что она предлож
Оглавление
ИИ не равен программисту!
ИИ не равен программисту!

Каждый день лента пестрит заголовками: «ИИ напишет код лучше тебя». Но действительно ли искусственный интеллект готов похоронить профессию программиста? Разбираемся без хайпа.

ИИ всё ещё подражает, а не понимает

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

Во многих случаях ИИ даже не генерирует корректный — в смысле компилируемый и логически верный — код. Простой пример из личной практики: возникла задача — определить, какой ключ использовать для расшифровки JWT-токена в зависимости от заголовка запроса. Идея очевидна — составить список ключевых подстрок и проверить, содержится ли одна из них в заголовке. Попросил нейросеть сгенерировать метод.

Вот что она предложила:

java:
public class Main {
public static void main(String[] args) {
String str = "Это тестовая строка";

// Список строк для проверки
List<String> wordsToCheck = Arrays.asList("это", "тест", "другая_строка");

boolean containsAnyWord = wordsToCheck.stream()
.anyMatch(str::contains);

System.out.println(containsAnyWord); // true, потому что найдено слово 'это'
}
}

И в этом фрагменте — явная ошибка. На самом деле true вернётся не потому, что найдено слово «это», а потому что найдено слово «тест». Проблема заключается в отсутствии приведения к одному регистру. str::contains чувствителен к регистру, а в данном случае строка "Это тестовая строка" не будет содержать "это", но будет содержать "тест".

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

Кто ответит за баг, который завалил сервер банка?

Вернёмся к предыдущей ситуации: программист вставил сгенерированный ИИ код в рабочее приложение. Код оказался некорректным — упал, к примеру, банковский сервер. Кто несёт ответственность? Конечно же, человек. Кто будет разбираться, искать источник ошибки, чинить и проходить всё круги продакшн-ада? Опять же, человек.

Это и есть фундаментальное отличие между инструментом и специалистом. Ответственность лежит на последнем. Разработчики того же ChatGPT честно предупреждают: «ChatGPT может допускать ошибки. Проверяйте важную информацию». Это — юридическая подстраховка. Ответственность на стороне пользователя. Всегда.

Без инженера модель — просто текстогенератор

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

DevOps-инженеры, backend- и frontend-разработчики, QA-специалисты, аналитики — все они обеспечивают работу продукта. И ни один из них не заменяется сиюминутно ИИ. Более того, успешный программист сегодня — это не только знание языка программирования. Это и коммуникация, и архитектурное мышление, и soft skills. Нейросеть не умеет договариваться на созвонах, не участвует в ретроспективах и не несёт моральной ответственности за технический долг.

Без человека, который сможет настроить, проверить и дообучить ИИ, результат его работы не имеет никакой ценности. А в ряде случаев — потенциально опасен.

ИИ не видит бизнес-контекста

Типичная ошибка генеративного кода: с виду всё хорошо, но в реальности — не подходит. Почему? Потому что решение без учёта бизнес-контекста — это просто пример из интернета. Даже если он «правильный».

Приведу ситуацию из реальной разработки. Необходимо временно сохранять пользователей перед удалением — например, для корректной работы с Debezium. Есть два варианта:

  1. Сделать триггер на уровне базы данных.
  2. Сделать триггер, запускающий Java-код с использованием Hibernate.

На первый взгляд, первый способ выглядит надёжнее и чище — вся логика в БД, без размазывания. Но на практике часто выбирают второй вариант: ORM позволяет лучше контролировать поведение объектов на стороне приложения, а Hibernate может оптимизировать запросы (пусть и не всегда эффективно).

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

Никто не даст ИИ полный контекст. И правильно сделает

Даже если бы мы захотели «скормить» ИИ весь проект целиком, сделать это безопасно невозможно. В пользовательских соглашениях многих нейросетей (и в здравом смысле) прямо говорится: всё, что отправляется в модель, может быть использовано для дальнейшего обучения. А значит — потенциально где-то всплыть.

Попробуйте сами: задайте модели узкоспециальный вопрос, потом несколько раз подскажите ей правильный ответ — и переспросите позже. Есть высокая вероятность, что она воспроизведёт его, потому что «обучилась» на вашем примере.

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

Ни один вменяемый архитектор или тимлид не разрешит загружать в ИИ исходники продакшн-приложения. Максимум — формулировка проблемы или безобидный сниппет.

Итог: ИИ — помощник, а не замена

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

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

Моё мнение: будущее — за симбиозом. Программист + ИИ — мощная связка. Но только при условии, что рулит ею всё ещё человек.

Практические советы программисту

✅ Освой инструменты на базе ИИ — это даст тебе конкурентное преимущество.

✅ Прокачивай soft skills: коммуникация, архитектура, работа в команде.

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

А вы уже используете AI в своей работе? Или считаете его угрозой профессии? Напишите в комментариях — интересно услышать мнение коллег.