Потеря контроля над кодом при работе с AI и высокоуровневыми абстракциями

«Когда код пишется с использованием искусственного интеллекта, вы полностью теряете контроль над своим кодом», — говорят некоторые разработчики.
В качестве примера я приведу вам один слайд для нашей внутренней презентации.

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

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

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

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

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