"Наследник рода, принявший иную сторону и хранящий в себе сокрытую силу, вступит в борьбу. На пути будет немало тайн и опасностей. Но он будет не один. Каждому из братства выпадет шанс внести свой вклад в победу над врагом."
О возможностях современных нейросетей в программировании на личном опыте
Небольшая преамбула. Так уж сложилось исторически, что в нашем небольшой астрономическом сообществе практически нет чистых программистов. Ядро нашего коллектива состоит всего из трёх человек: собственно, профессионального астронома-астрофизика, инженера (наш технический директор) и физика-теоретика (в моём лице). Да, наш техдир обладает впечатляющим практическим опытом в самых разных областях работы с аппаратным и программным обеспечением, не исключая и web-разработки, но ни по образованию, ни по основному месту работы именно программистом не является. Остальные же участники нашего сообщества представлены преимущественно студентами или недавними выпускниками, чей профессиональный опыт ещё не слишком велик.
В связи с этим у нас регулярно возникают проблемы с разработкой программных средств. Практически любая современная научно-исследовательская задача в области астрономии, астрофизики и теоретической физики так или иначе связана с написанием программного кода. И если написать несложные в программном смысле python-скрипты для численного решения дифференциальных уравнений сможет любой, то с настоящим программированием, в смысле разработки программных продуктов, предназначенных для сколько-то широкой аудитории, у нас всегда были проблемы. Нормальные опытные программисты не по карману нашему скромному сообществу, а со студентами (даже очень мотивированными и одарёнными) постоянно возникают непредвиденные сложности из-за отсутствия должного опыта. Конечно, суровая производственная необходимость вынудила нас за последние несколько лет с горем пополам сформировать небольшую команду молодых программистов, но полностью проблемы разработки это не решило.
Фабула. Естественно, стоило появиться вайб-кодингу (т.е. разработке через нейросети), как тут же возникла идея переложить на нейросети всю работу по разработке нужного нам программного обеспечения. Больше всего эту идею критиковала та часть нашего сообщества, которая имела сколько-то значимые представления о программировании и web-разработке, но, по мере прогресса нейросетей с одной стороны и обострения потребности в переработке наших сетевых ресурсов – с другой, сдалась и она.
Так что, с помощью бубна, Временного Переселения в Нидерланды (посредь родных осин половина нужных решений недоступна) и платёжных средств иностранных граждан нами была приобретена Pro-подписка на нейросеть Claude (которую я для простоты буду по-русски именовать Клодом) от Anthropic, которая считается лучшей из массовых нейросетей в задачах написания кода. Подписка обошлась нам в $109 в месяц, с учётом банковских комиссий и издержек, вышло около 10 тыс. руб. За эти деньги мы получили доступ к самой новой версии нейросети под названием Fable 5 и довольно щедрые лимиты – за четыре рабочих дня интенсивного использования небольшой командой из нескольких дилетантов вайб-кодеров мы потратили около половины от еженедельно обновляемого лимита доступа к этой версии.
За это время Клод под нашим чутким руководством успешно:
- Перевёл сайт на актуальную версию сторонней CMS.
- Отрефакторил код сайта, избавился от множества неиспользуемых зависимостей, обновил и упростил действующие зависимости и вообще выполнил большой объём работ "под капотом" сайта.
- Разобрался в весьма своеобразной системе обмена данными между сайтом, расчётными серверами и серверами хранения данных с многократными проверками безопасности, и внёс множество важных изменений в неё.
- Отрисовал с нуля светлую тему сайта (раньше у него была только тёмная) со всеми интерфейсными элементами, иконками и т.д.
- Нарисовал несколько анимаций для различных интерактивных элементов пользовательского интерфейса сайта и терминала расчётного сервиса.
- Полностью пересобрал систему управления динамическими элементами сайта, добавив несколько новых типов элементов.
В итоге за два дня взаимодействия непрофессиональных разработчиков с нейросетью она справилась с набором задач, изначально оценивавшимся в две-три недели работы высококвалифицированного full-stack разработчика или команды из трёх профильных специалистов чуть более скромной квалификации.
Теперь о самом интересном: как именно Клод справился с поставленными задачами. Сразу скажу, что вообще весь код, непосредственно добавленный или отредактированный им, был написан на совершенно нормальном, человеко-читаемом языке программирования высокого уровня, том же, на котором была написана старая версия сайта (у нас там микс из JS, TS и Rust для разных модулей). Клод успешно использовал обычные для таких задач фреймворки и сервисы, аккуратно контейнеризировал новые программные модули, делал коммиты в выделенную для него ветку репозитория, добавлял комментарии к создаваемым им функциям и зависимостям, писал вполне информативные Readme к новым блокам и модулям, проводил необходимые проверки и тесты. В общем, внешне его работа выглядела вполне на уровне топового программиста, которого мы никогда не смогли бы себе позволить.
Конечно, то как именно Клод вносил все эти правки, вызывало у знающих людей (в лице нашего техдира) много вопросов. Постоянные обращения к регулярным функциям, хитроумные протаскивания данных по совершенно неочевидным маршрутам для внесения правок, вызов сторонних сервисов из непредсказуемых мест... Но все эти чудаковатости происходят только в ходе самих правок – финальный результат неизменно написан на нужном языке высокого уровня, хорошо структурирован, человеко-читаем, не содержит никакой бинарной абракадабры и вообще никак не отличается от кода, написанного хорошим программистом.
Само собой, иногда случались сбои, которые не замечали встроенные тесты Клода, но описание обнаруженной проблемы следующим промптом, предоставление логов или банального скриншота с заметным визуально косяком приводило к тому, что Клод оперативно исправлялся и вносил требуемые правки. Лишь единожды умная железяка сломалась – когда наш любознательный астрофизик захотел добиться от неё подключения к нашему сервису крайне специфического расчётного модуля для численного решения каких-то заумных уравнений магнитогидродинамики. Клод долго думал, сожрал под сотню тысяч токенов, самостоятельно докопался до научных статей про использованный в модуле расчётный метод и, в конце концов, предложил... написать авторам модуля письмо с вопросом, как его правильно подключать!
В целом, результат применения Клода вышел закономерным. Наиболее типовые и распространённые задачи web-разработки (вроде работы с JS и CSS, настройки CMS, работы с визуальными элементами) Клод решает отлично, более редкие задачи взаимодействия и обмена данными с научными системами и сервисами заставляют его задуматься, а узкоспециальные задачи оказываются ему не по силам.
В итоге даже наш техдир, изначально настроенный по отношению к вайб-кодингу весьма скептически, был вынужден изменить своё мнение и согласиться с мыслью о том, что Клод за пару дней смог закрыть весь значимый для нас набор задач web-разработки, некоторые из которых пребывали в подвешенном состоянии несколько лет!
Само собой, вайб-кодинг обладает большим количеством изъянов и особенностей, которые стоит учитывать. Для сколько-то продуктивного его использования необходимо обладать достаточным опытом если не в самой web-разработке, то хотя бы в управлении ею, чтобы хорошо ориентироваться в используемых технологиях, методах и инструментах. Крайне не лишним будет понимать логику работы разрабатываемого сайта или приложения, в полной мере представлять сценарии его использования и интересы его пользователей. Кроме того, по очевидным причинам нежелательно перекладывать на нейросети вопросы безопасности, резервного копирования и управления версиями. К примеру, у нас Клод исправно коммитил свои исправления в выделенную для него ветку vibe, но сливание изменений в dev-версию сайта, не говоря уж об общедоступной prod-версии, осуществлялось нами строго вручную.
Самая большая проблема вайб-кодинга в том, что внешне он выглядит максимально дружелюбным именно к непрофессионалам. Мы-то запускали Клода через VS code и писали промпты в консоли, но ровным счётом ничего не мешает общаться с нейросетью в чат-режиме, как с любой генеративной LLM, вроде ChatGPT или DeepSeek. Клод исправно ведёт беседу на русском языке, понимает профессиональный сленг и даже справляется с распознаванием скриншотов, схем и набросков. То есть ему буквально можно сказать "поиграться с шрифтами" и получить вразумительный результат. Это порождает у разного рода некомпетентных менеджеров соблазн вообще избавиться от программистов, дизайнеров и специалистов тех.поддержки, переложив всю их работу на железные плечи нейросетей.
Проблем с таким решением две: локальная и глобальная. Локальная состоит в том, что без присмотра квалифицированных разработчиков, обладающих большим опытом работы, нейросеть рано или поздно столкнётся с проблемой, которую самостоятельно не сможет решить. Да, с наиболее распространёнными типами задач нейросети уже сейчас отлично справляются, а по мере их дальнейшего совершенствования наверняка смогут разобраться и в более сложных случаях, но пока что без указующей длани человека доверять им сколько-то серьёзный проект "под ключ" нельзя. Чего, увы, могут не понимать далёкие от разработки руководящие кадры, видящие в нейросетях всемогущего джина из бутылки.
Ну, а глобальная проблема очевидна, и о ней в последние годы не говорит только ленивый. Нейросети бодро заменяют собой разработчиков низшего звена, беря на себя большую часть рутинной работы. А ведь кроме риска лишения работы сотен тысяч программистов, девопсеров и дизайнеров, это означает, что ломается механизм воспроизводства высококвалифицированных специалистов, без которых нейросети пока что не могут эффективно работать над сколько-то сложными проектами. Иными словами, если нейросети заменят всех джунов и мидлов, откуда возьмётся новое поколение сеньоров?
Оптимисты уверены, что совсем скоро нейросети заменят программистов любой квалификации. Пессимисты возражают, что в таком случае люди вообще утратят контроль над разрабатываемыми программными средствами и прочат всякие ужасы – от цифрового концлагеря до восстания машин.
Лично я остался очень доволен своим опытом вайб-кодинга. Для решения сугубо прикладных задач Клод нам очень и очень помог, по сути, закрыв за несколько дней все актуальные потребности нашего коллектива в области web-разработки. Философских же вопросов последствий засилья нейросетей в программировании я как неспециалист предпочитаю не касаться.