OffshoreLabs Studio
RUEN
Меню

Разработка приложений с ИИ · Часть 3

Кто тут интеллект?

Иллюстрация: Алекс и его собака у рабочего стола на Пхукете собирают идеи в связанную схему

Код пишет ИИ. А я тогда что делаю? В словосочетании «искусственный интеллект» первое слово дороже второго.

В прошлый раз я рассказал, как мы делали EasyStayTH: агент читал файлы, писал код, запускал проверки, а я объяснял, чего хочу, смотрел на результат и говорил, что надо переделать. Звучит удобно, особенно если не знать, что на объяснение «карточки должны быть прозрачными» у меня ушло часов десять.

Вот здесь можно сделать паузу в истории приложений и разобраться, а кто из нас вообще разработчик?

Мне всегда нравилось понимать, как всё устроено. С ManiTalk я начинал с ручного переноса кода и по дороге учился разбираться в том, что переношу, потом агент научился сам работать с файлами, но моё любопытство от этого никуда не делось. Мне всё равно хотелось понимать связи между частями приложения, логику и причины его решений — иначе как я проверю то, что он сделал?

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

Мне хочется, чтобы получилась вещь, которой удобно пользоваться, и тут выясняется, сколько всего скрывается в этом слове — «получилась».

Сами по себе идеи у меня появлялись и раньше. ManiTalk вообще несколько лет лежал где-то в памяти, пока не появился инструмент, с которым я смог попробовать его сделать. Между «было бы удобно» и работающим приложением долгое время стояло простое обстоятельство: я не знал, как за это взяться.

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

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

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

Даже с полезной записью приходится разбираться: ночью решение казалось очевидным, а утром надо понять, что я имел в виду, где это пригодится и не придумал ли лишнего. Что-то выкидывается, что-то откладывается, к чему-то потом возвращаешься, и постепенно из этого начинает получаться мысль, которую уже можно объяснить кому-то другому.

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

Кому понятно? Мне-то не до конца))

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

Я не считаю себя шибко умным, а тем более - гением, а агентов не считаю ни гениями, ни идиотами. Можно (и нужно!) выслушать второе, пятое, двадцать пятое мнение и, возможно, пересмотреть своё решение: от собственного авторства идея лучше не становится. А 90% идей — велосипеды, которые не стоит изобретать заново. Но это не точно))

В этом смысле разговор с агентом мне очень полезен: он может найти ограничение или готовую реализацию (если сказать ему - поищи готовое), проверить реализуемость, иногда - предложить другой путь, и для такого разговора совершенно не обязательно сначала самому знать правильный ответ. Было бы странно, если бы я пришёл разбираться с новым для себя инструментом, а от меня требовалось заранее знать всё, что я хочу у него выяснить. Так бы и остался сидеть со своей идеей про озвучивание переводов.

Собственно, я же всё это время учился: разбирался в операционных системах, читал, сравнивал подходы, проверял чужие советы на своих задачах. Какие-то принимал, какие-то переделывал под себя, какие-то выкидывал. Самоучка — это значит, что учиться надо самому, но не значит, что без чужого опыта, просто у меня обучение происходило прямо во время работы, а поводом разобраться в очередной теме обычно становилось что-нибудь, что опять не работает))

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

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

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

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

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

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

Вот тут вопросы уже другие: удобно ли, понятно ли, выглядит ли так, как хотелось, а это что за фигня такая? Агент может выполнить техническую часть задачи, а я смотрю и понимаю, что пользоваться результатом всё ещё не хочу. Причём и моё собственное представление может измениться: в голове было прекрасно, а на экране - хочется переделать.

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

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

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

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

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

В следующей сериях: промт-инжиниринг и почему он сразу родился мертвым или DO NO MISTAKES!!!