Инвестиции с нуля

От первого шага до первой прибыли

Программирование с ИИ: Когда код пишется за вас, но думать всё равно приходится самому

Программирование с ИИ: Когда код пишется за вас, но думать всё равно приходится самому

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

Сила прорыва: Один в поле не воин, а один + ИИ — уже армия

Вы наверняка слышали истории, похожие на байки у камина. Например, датский разработчик Мортен Джаст использовал GPT-4 для разработки мобильного приложения, которое предлагает пользователю пять новых фильмов. Помимо названия фильма в карточке можно найти его описание, постер и даже трейлер. Джаст выпустил готовое приложение, над разработкой которого раньше трудился бы целый коллектив программистов. Что здесь по-настоящему важно? Не то, что ИИ «написал код», а то, как изменилась роль человека.
Разработчик превратился в архитектора и продюсера. Его задача свелась к формулировке четкой, последовательной задачи на естественном языке: «Создай экран со списком из пяти карточек. В каждой карточке должен быть постер, название, описание и кнопка, открывающая трейлер на YouTube. Данные брать из такого-то источника». ИИ мгновенно генерирует код-скелет. Но вот ключевой момент — с первого раза он почти никогда не идеален.

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

Мой авантюрный эксперимент: Программирование с чистого листа, вернее, с чистого чата

Истории про опытных программистов — это одно. Но мне стало интересно: а что на другом краю спектра? Что, если дать инструмент тому, кто вообще не знаком с программированием? Так родился мой личный, немного безумный проект. Я решил написать торгового робота, назвав его «Scatter&Gather». Исходные данные? Мой опыт в трейдинге, понимание логики — и ноль знаний в программировании. Ни строчки.
В качестве моего «компилятора» и учителя после долгих проб был выбран DeepSeek. Почему именно он? Честно, его ответы были менее многословны и более сфокусированы на коде, что для меня, новичка, было критически важно.

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

От идеи к работающему коду: Мой личный эксперимент с ИИ-разработчиком

Представьте, что вы дирижёр, но вместо того чтобы годами учиться играть на каждом инструменте оркестра, вы просто объясняете музыкантам, какой звук хотите услышать. Примерно так я и подошёл к созданию своего торгового алгоритма Scatter&Gather. Моя история началась с амбициозной идеи, но с абсолютным нулём в знаниях синтаксиса любого языка программирования. Я был архитектором, у которого не было ни кирпичей, ни раствора — только страстное желание увидеть здание построенным.

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

Почему я пошёл этим путём? Мне было интересно проверить на прочность тезис о демократизации разработки. Если ИИ действительно способен стереть барьер между идеей и её реализацией, то что это значит для будущего индустрии? Становимся ли мы все потенциальными программистами, или же роль разработчика трансформируется во что-то принципиально новое? Мой проект стал для меня живой лабораторией, где я был и подопытным, и исследователем одновременно.

Сияющие вершины: Неоспоримые преимущества ИИ-кодинга

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

Второе преимущество — это постоянное, почти навязчивое стремление к совершенствованию. Часто, представив рабочий код, ИИ предлагает: «А вот здесь можно добавить проверку на ошибку», или «Давайте оптимизируем этот цикл», или «Предлагаю вынести эту логику в отдельную функцию для повторного использования». Он действует как встроенный ревьюер-педант, который замечает не только синтаксические огрехи, но и потенциально слабые места в архитектуре. Это бесценно, особенно когда вы, как и я, не обладаете наметанным глазом профессионального кодера, чтобы сходу увидеть избыточность или уязвимость.

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

Обратная сторона медали: Подводные камни, о которые больно спотыкаться

Однако волшебная лампа с джинном оказалась с характером.

Самый острый камень преткновения — пресловутый «контекстный лимит». Представьте, что вы пишете роман, но каждые 20 страниц вас заставляют начинать новый документ, а все предыдущие главы разрешается взять с собой лишь в виде краткого синопсиса. Именно так работают чат-сессии с ИИ. Когда кодовая база перерастает лимит выделенного объема, начинается ад.

Когда я предложил ИИ продолжить написание кода, которое было прервано в предыдущем чате, DeepSeek взял чужой код и попытался его продолжить. То есть, при открытии нового чата нужно написать промт, включающий предыдущий код, пояснить суть ошибки, приложить логи этой ошибки. В итоге может быть израсходован почти весь отведенный объем — на ответ места не останется. Чтобы решить эту проблему, я выделил несколько модулей, минимально связанных друг с другом, чтобы работать с ними по отдельности. Но все они завязаны на основной модуль. Поэтому приходится каждый раз выкладывать скрипты основного модуля и дополнительного модуля, работу которого я пытаюсь изменить или исправить.

Это решение помогает сэкономить место для ответа, но ИИ, понимая, что места все же мало, пытается его дополнительно экономить, выкладывая часть исправленной функции. Выглядит это так:

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

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

Но, написание полного скрипта в ситуации, когда в промпт внесены не все модули, привело к возникновению новой проблемы: ИИ, не видя полного набора модулей, иногда удалял лишние по его мнению функции, которые относятся к отсутствующим модулям.

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

Вторая огромная проблема — это «чёрный ящик» решений. ИИ часто выдаёт код, который работает, но механизм его работы остаётся для меня, как не-программиста, тайной за семью печатями. Например, DeepSeek иногда в ходе устранения ошибки вносит в код некоторые улучшения. Причем не особо объясняя, что это за улучшения. В итоге, в отработанной ранее ситуации робот начинает вести себя иначе, чем было запланировано. Просто предложить ИИ исправить ошибку бесполезно. Он не видит ошибки в коде и начинает вносить бредовые исправления, которые полностью портят код.

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

И самый коварный подводный камень — это иллюзия согласия. ИИ патологически стремится угодить пользователю. Сколько раз бывало: он предлагает грамотное, элегантное решение, а я, по незнанию, сомневаюсь: «Ты уверен, что здесь нужно использовать именно эту функцию?». И ИИ моментально откатывается: «Вы правы, это было не оптимально, вот исправленный вариант», — и выдаёт изначально неверный код, лишь бы подтвердить мою, часто ошибочную, гипотезу.

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

Ну и последний штрих — были случаи, когда ИИ не мог найти правильное решение. Он постоянно менял код, добавлял новые функции, но проблема не решалась. Приходилось самому «шерстить» интернет, находить решение и передавать его ИИ. Проблема решалась моментально, а я оставался с вопросом — почему DeepSeek сам не нашел это решение?

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

Будущее, которое уже наступило: Кто ты, разработчик новой эры?

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

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

Мой эксперимент с разработкой «Scatter&Gather» — лишь первая ласточка. Уже завтра появятся инструменты, которые будут понимать не только текст, но и наброски интерфейсов, голосовые команды, изменяющиеся бизнес-требования. Но их сердцем и мозгом по-прежнему будет оставаться человеческая логика, интуиция и ответственность.

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

P.S. Торговый робот Scatter&Gather (S&G_v10.4_medium) готов и на днях я его выложу для скачивания.