В прошлом видео проект был маленьким, а инструкции размытыми. А вот разберётся ли Claude в проекте с тысячами строк кода? В данном ролике увидим, что он справится, и моральные проблемы возникнут уже у программиста, которому всего через 10 минут нужно будет ревьювить 2к+ новых строк :) Запись на курс разумного вайбкодинга для программистов - https://dmitrylavrik.ru/landings/ai-web-dev/
Оглавление (9 сегментов)
Segment 1 (00:00 - 05:00)
Всем привет. Третье видео из серии разумного вайп-кодинга. И в этот раз мы попробуем показать настоящую магию с клодом. Попробуем запустить его на проекте, где более-менее нормально прописаны инструкции, чтобы он накатал как бы много новой кодовой базы, как бы технически несложной, но которую программисту вручную писать неприятно, потому что неинтересно. И чтобы он это сделал с такой скоростью, с которой программист, конечно же, никогда напечатать не сможет. Итак, я сразу запущу клод, а потом буду объяснять, как бы, в чём разница между проектами. Ну, а клод будет фоново работать. Значит, смотрите, на проекте тут Lavells инерции нужно внедрить, допустим, новые сущности, сущности инструкций. То есть у нас есть туториалы, которые состоят из разделов. Туториал равно инструкция. И, допустим, это вот такие вот как бы инструкции какие-то там гайды для пользователей, в которых есть разделы. Эти разделы можно сортировать. Соответственно, туториалы из разделов состоят. Чистая связь один ко многим. У каждого из этих туториалов, разделов есть, собственно, маркдау написание, есть разные там паля типа заголовков и прочего, есть доступы к контенту, есть статусы публикации. Там эти разделы внутри туториалов, даже платных, могут быть бесплатными. И заметьте, что это описание не похоже на такое программистское, на какой-то серьёзный план для Клода. Нет, это, знаете, как будто бы текстовый файл, который составляли на пару менеджер и программист на каком-то созвоне, потому что язык абсолютно человеческий. Просто иногда промелькивают какие-то технические вставки, буквально вот два слова: связь 1м и нам и так далее, да, где-то тут ещё написано, что был дочерний ресурс. Соответственно, программировать мы пишем ему сейчас не нужно. Просто составить детализированный пошаговый план и переводим это в Google Translate на топорный английский. Я хочу продемонстрировать именно такой подход. А это не самый правильный подход. Мы сейчас не экономим токены. Мы наоборот как раз таки такой инструкции нечёткой, заставляя его генерировать план, а где-то эти токены сжимаем. Гораздо компактнее расход был бы, если бы я ему пошагово объяснял, что делать. Но мы хотим посмотреть на скорость. Именно поэтому я сейчас, когда запущу клод, я даже не буду ставить видео на паузу. Мы с вами продолжим чуть подробнее рассматривать этот файлик, говорить про комментарии, а про стиль работы. А клод пусть начинает пыхтеть и, собственно, составляеть этот план. Почему? Мне кажется, это важно именно в таком режиме показать, чтобы вы примерно ощущали время. То есть вот клод запустили, можно ли успеть отойти за чашечкой кофе или всё равно один фиг не получится? Пусть он работает, пусть изучает проект. Соответственно, мы пока что с вами перейдём, наверное, на ваши комментарии к предыдущему ролику. Иногда будем клоду давать разрешающие команды на выполнение баши или павершела. А, ну и, значит, первая же как бы мысль, которую нужно здесь, я думаю, так вот как бы чуть притормозив объяснить, это вот в чём разница данного ролика и предыдущего. Предыдущий ролик - это действительно небольшая кодовая база, как в комментах верно заметили, да, 200 строккода и там, ну, там не 200, ладно, там уже было потом 500, а потом может быть и 700. Но если туда нолик дописать, то когда код будет в одном файле, когда, собственно, не будет никакого клода MD, а мы, ну, просто начнём токены жечь абсолютно зазря. И, ну, как бы ничего хорошего по итогу из этого не выйдет. Долг понимания будет накапливаться, токены будут жечься всё больше и всё быстрее. И где-то эта змейка без помощи программиста, без рефакторинга кода, скорее всего, завязнет. Напротив вот этот вот проект. Здесь уже десятки, сотни файлов и на бэкэнде, и на фронтде. Да, конечно, многие файлы мелкие, типа там ресурсов да и реквестов, то есть дтошки, но тем не менее к лоду приходится ориентироваться, смотрите, он бедолага носится, смотрит по подобным сущностям, да, изучает текущую структуру проекта, изучает паттерны этого проекта, то есть изучает, как здесь принято. И вот это, кстати, как здесь принято для Клода очень важно. Это же, знаете, есть старый этот самый такой, ээ, как сейчас называют, баян. или байка, как раньше называли, про обезьян, да, про обезьян, соответственно, которые, ну, как бы в комнате сидят. Ээ, сначала их там били током за то, что они банан пытались стащить и меняли обезьян, да, то есть как бы всех заменили, а им всё равно обезьян банан брать страшно, потому что здесь так принято, что током бьют за это. Ну вот как бы, ну там понятно ходят разные мнения насчёт того, реальный был такой эксперимент или байка это, но заметьте, здесь так принято. Это ключевая фраза. Клод сделает код именно так, как здесь принято. Как здесь принято, определяется файлами Clot MD, которые в большом проекте должны быть, ну, как бы разбиты на части, а нельзя, собственно, просто взять и в одном CLМ MD всё, а, ну, поместить, иначе он станет слишком большой. Нужно уже разбивать это по папкам. А, и ещё что очень важно, что Клод считывает то, как сделаны подобные сущности. То есть он
Segment 2 (05:00 - 10:00)
всегда вот перед тем, как новую сущность создавать, будет читать, как вы делали что-то похожее. И вот заметьте, мы успели обсудить только немножко разницу между проектами. Прошло там меньше там т или четырх минут, а он мне уже накатал огромный план. Огромный план, который мы сейчас с вами попробуем посмотреть и оценить вот в этом файлике. Итак, админская секция для туториалов и разделов туториалов. Значит, надо создать Permission Tutorials Control для спативского этого, да, Permission пакета. Tutorial статусы. А так с какими-то комментами нормально вроде. Значит, existing курс access нам. Ну такое себе. Ладно. А, да. То есть, допустим, вот лучше он пусть туториал access создаст. Это можно его прямо сейчас подправить, но я не буду вмешиваться в частоту эксперимента. И смотрите, погнал сущности описывать в своём каком-то формате для будущей генерации миграций. Пошёл фигачить, значит, описание моделей. сидер, который всё наполнит. Политика доступа на вот этот вот, собственно, нацеленный Permission Tutoral Control Value. А и, собственно, да, он, видите, он делает по аналогии, он говорит: "Ага, у вас там политика курсов уже зарегана, давайте политику туториалов там же зарегаем". Да, значит, реквесты ДТОшки создаёт и так далее, и так далее. Смотрите, вот это вот нормальный качественный план он накатал. По-хорошему, мы сейчас должны этот план перечитать как техническую документацию, внести в него правки, но нам интересно следующее. А что же, собственно, будет, если я ему просто скажу: "Да, дядька, давай выполняй этот план". А-а, ну я просто вот ему, знаете, так, ну, на пофиг пишу: "Оке, it is good. " Run c now, Да? То есть иди, короче, коть, задолбал ты меня своими буквами. Я тут что собрался вайп-кодер такой, да? Ну, нормальный вайп-кодер, да. Я что, буду 274 строчки кода тебе читать, что ли? Да. Вот этого PMD туториала. Иди ты отсюда. Да, давай кодируй уже раз кодер. А вот и он сейчас будет писать код. А нам будет интересно, что же он в итоге, собственно, накот. Значит, он по этому плану сейчас пошагово пойдёт. Заметьте, что пока прошло там минут 6-7 с момента его запуска. Вот. И сейчас он начнёт фигачить файлы, которые в разделе вот этого, собственно, да, там, гита будут нарастать как снежный ком. И главная мысль, которая после этого придёт в голову, я думаю, это то, что программист, ну, человек никогда не может с такой скоростью код писать. А мы давайте вернёмся к философским вопросам. Значит, э по поводу, да, большой кодовой базы, понятное дело, что нужны клоды MD. Смотрите, как раз он их считывает из папки API, из папки GS. Вложенный клод MD считывает. Вот по поводу локальных моделей, то, что есть комментарии, что сейчас вот эти вот модельки есть, которые равны там прошлогоднему сонету, но это, наверное, правда, но вот видеокарта 24 ГБ это же не просто видеокарта, к ней же нужно и оперативки, и прос ещё нормально прикупить. И сейчас это уже достаточно дорого. То есть это вот кто год назад или два урвал себе такую сборку, тот огромный молодец. Вот кто не успел, тому как бы будет тяжело. Тому как будто бы клод придётся оплачивать или другие похожие инструменты. А вот, соответственно, как бы была тут одна прямо золотая мысль, золотые слова, то, что нужно отвечать самому за каждую строчку кода, сгенерированную ишкой. Вот это вот правда. И как раз пока клод кодит, я уже перейду к этой главной мысли, да, опасности вайп-кодинга. А как бы вот как раз идеальный момент на экране возник. Вот смотрите, как правильно вайпкодить, как правильно вообще, чтобы отвечать за каждую строчку писать код. Ты нажимаешь Enter по циферке один, он пишет код, ты его как бы ревьюшь, да? А, но у нас [откашливается] у всех есть какие-то интересные дела. Пока клод кодит, хочется отойти за чашечкой кофе. Чем лучше клод кодит, чем больше ты видишь, как он кодит, тем больше тебе хочется нажать Shift. Enter. Ой, Shift T. Как бы убрать руки с клавиатуры и либо просто смотреть, как он это делает, либо уйти по своим делам. И заметьте, он просит разрешение как бы на написание кода и отдельное разрешение на выполнение PowerShell команд. А как бы если писать код ему можно разрешить, то вот пашел команды всё-таки лучше подтверждать по отдельности, чтобы не было таких историй, как вышло 2 дня назад на Хабре, когда у кого-то там агент Клодовский крутился в продакшене и, соответственно, крутился, крутился, крутился и удалил там нафиг всю протбазу и все логи. Вот. Потому что как бы одна из главных опасностей вайп-кодинга, на мой взгляд, заключается в том, что ты начинаешь слишком доверять, да, агенту, который пишет код. И ты к нему начинаешь относиться не как к жену, не как к, ну
Segment 3 (10:00 - 15:00)
как бы программе с нечёткой логикой, да, а начинаешь к нему относиться как к такому же программисту, как ты сам. Но разница огромная. У этого программиста, даже если он пишет сейчас код быстрее, чем ты это можешь делать физически, у него нет ответственности перед заказчиком и перед работодателем за тот код, который будет написан. Вот он сейчас фигачит уже, да, там сколько? Шесть файлов. На самом деле это пока мало. Я думаю, здесь будет порядка 20 или 30трицати файлов. Вот заметьте, что печатает достаточно быстро, файлы накапливаются. Мы уже даже просто всё руки убрали и не трогаем ему, не мешаем как бы кодить. Но как бы вот это вот, то, что вы сейчас видите на экране, это как бы вот и есть главная опасность. Почему? Потому что программист сначала, работая с клодом или с любой другой подобной нейросеткой, очень аккуратно нажимает кнопку yes. А спустя несколько дней или недель программист нажимает Shift T. А потом он нажимает Shift, куда-то уходит. И чем больше он так делает, тем меньше он хочет заходить и ревью то, что написано в комитах. Просто, да, что прокликал этот интерфейс в админке. Да, там в админке на клиентской части работает. Ну, работает. А что мне-то, да, вот у меня умный же этот товарищ, как бы он сам прекрасно разбирается в том, что делать. Однако, однако ревьювить его код обязательно нужно. И пока он нам здесь кодит, я как раз открою вам комита, чтобы показать, как он накосячил, допустим, в прошлый раз. И в чём вообще заключается определённый смысл работы с клодом, с любыми нейросетками. Ну вот, допустим, открываем комит на создание предыдущих сущностей, он за 10 минут нафигачил 45 файлов. Я не могу так быстро печатать. Я не могу написать 2. 800 строчек кода за 10 минут. Не, точнее могу, но такая фигня получится, как в анекдоте. Вот. Поэтому всё-таки будем считать, что не могу. И для примера давайте откроем сейчас страничку, которую он сделал Pages Admin Curses Show. Это похожий функционал на тот, что мы сейчас с вами делаем. И вот обратите внимание, что в его кодовой базе есть небольшие как бы не ну как это правильно назвать-то, мм, неоптимальности, да. Это гораздо проще сделать по-другому, вынести в отдельные функции, особенно если контент-статус - это универсальная сущность, доступная много где. А ещё, например, я его поймал на чём вовсекции, которые будут нереактивными. То есть нажимаешь на кнопку удалить секцию, она не удаляется. И визуально она удаляется в базе, а визуально на экране остаётся. А ещё он здесь напортачил в том плане, что создал отдельную функцию для фонового запроса на сервак. Прикрепил фиг знает, как CSRрф токен, как не надо делать, как это делать неправильно с точки зрения текущего проекта. У него этот запрос свалился ошибкой бы, но он об этом не знает. на уровне типов у него всё прошло, и поэтому он, собственно, ну как бы был собой удоволен. И, э, в принципе, да, вот, ээ, код-то написан нормально, кажется, что написан нормально и работает даже более-менее нормально, но если ты не будешь это ревью, то рано или поздно приключится какая-нибудь фигня. И, э, ну, как бы ещё очень важно, что вот делать, да, когда мы это ревьюм, не просто ревью, а учить. учить нашего вот этого подавана тому, как надо дальше делать, то есть учить уму разуму. А в чём заключается обучение умуразуму? Как минимум в том, что мы не просто как бы, когда он нам что-то сделал, э говорим: "Да, о'кей, ты молодец, ты поправил". Мы ещё ему говорим: "А ты в клодм MD-то, пожалуйста, занеси эту информацию на будущее". Если помните, был такой момент на первом уроке, вряд ли помните, да, это на кто вот всё все всю серию смотрел, да ещё и запомнил. Был такой момент, когда я уже показывал какой-то кусок кода, что вот Clсген генерировал там простую крутсущность в админке и что там, например, не работают сортировки в бьютифайвской таблице. Он даже не попытался их сделать, на бэкэнде сделал, на фронтэнде даже не стал ничего писать. И, например, что после этого было реализовано? Было замечено, что он тупит. И в папке, соответственно, с пати adapters, а было прописано, что вот смотри, клод, когда ты оказываешься в этой папке для работы с датами или с сортировками, да, или с детпикерами, то, пожалуйста, посмотри на инструкции. Вот тебе доп информация, как это надо делать по шаблону. И он после этого ни разу, скотина не ошибётся в этой теме. Более того, он ещё и эти инструкции сам написал. Я ему просто сказал: "Смотри, вот тебе одна строка вот такая условно, да, для вдохновения. Иди изучи вот тот файл и напиши мне, а как это надо применять. Он такой: "Ты-ты-ты-ты-тыты". Да, я всё понял. Начальника всё сделаем, как бы ставим вот такую инструкцию нормально. А потом говорит: "Так, а вот по этому композблу ну-ка накатал документацию и сохранил". Сохранил, всё сделал. Сейчас смотрите, вот когда он допилит вот эту структуру, он не ошибётся с этими инструментами. Он здесь всё сделает корректно. То есть я не уверен, я, видите, запустил
Segment 4 (15:00 - 20:00)
это в лай-режиме, чтобы вам показать, что нет никакого мухляжа, что кот пишет код при вас. Но я уверен, что именно с вот этой частью системы, именно с написанием, а, с кода, связанного со спати Range адаптером, с сорт адаптером, он справится, потому что его этому учили. Да, потому что здесь у него есть чёткий опорны инструкцию. Учили его, кстати, и тому, как с папочкой АИ надо работать. То есть фоновый запрос для какой-нибудь сортировки он тоже сделает, я уверен, нормально. Мы уже можем попытаться открыть страницу local host 8. 000. Вряд ли там что-то хорошее происходит. У нас здесь, конечно, пыхтит скрипт, да, композеровский, но вот этот товарищ добивает последние страницы, да, видите, у него сейчас идёт tutorial create. У него идёт tutтоorial edit. Ох, он файлов нам тут понаписал. Вот давайте просто посмотрим дерево. Сколько ж он бедняга тут наворотил. Вы умеете прогать с такой скоростью за 15 минут? Я нет. Да и вы, наверное, нет. И если как в анекдоте: "Да, я умею", но такая фигня получается, то вот у него-то, блин, не фигня получается, к сожалению [откашливается] или к счастью, непонятно. Пока непонятно. Значит, э, ну, мы ждём, когда он спокойно это всё докодит. Видите, как бы огромные куски кодовой базы мелькают на экране. Времени он провёл после того, как мы попросили его составить [откашливается] планы, перейти к кодингу уже там где-то 9 минут. И ждём ждём, собственно, завершения данного процесса, которое должно случиться с минуты на минуту, потому что файлов уже вроде бы по количеству, по интуиции достаточно. Вот он, видите, перезагружает модули. Может быть, в конце концов, запросит ещё а какую-нибудь операцию типа npm runck. провернуть для того, чтобы проверить корректность типов в системе. А программист, что может в это время делать? По-хорошему, он должен сидеть и непрерывно ревью. А, но зачастую программист, да, как мы знаем, уходит за чашечкой кофе и так далее. О, смотрите, что он творит. Он пишет доки. Это я ему так сказал делать, что типа в папку docs. Ну-ка иди доки пиши. Вот всё, короче, давай прогоняй npm runчек cl. Надеюсь, ни одной ошибки не найдёшь. И мы сможем зайти в админку, нажать несколько кнопок, после чего как бы сделать технический перерыв для переключения экранов там, да, для открытия на экране, скажем так, других примеров. Но вот я хочу эту часть в лайве довести. Я понимаю, что это может быть ну как бы а кому-то хочется скипнуть, кому-то хочется на ускоренном режиме посмотреть, но всё-таки я хочу, чтобы вы ощущали время, да, скорости работы клода. 48 файлов, там несколько тысяч строккода. Он уже написал. Это всё лежит, соответственно, э в обновлениях. Вот смотрите, нафигачил. И нас интересует то, как это будет работать. Я не знаю, добавил он это куда-то в админку, не добавил. Да, может быть, он это просто не прикрепил к текущему юзеру. Ну и давайте попробуем это проверить в режиме ручной отладки. То есть откроем network, перейдём на любую на другую страницу и посмотрим, какой юзер приходит. Permissions присылает с патий пакет на сторону фронтэнда. Действительно только users controls и contr на данном этапе. А в нашей кодовой базе, если мы прочитаем план, да, если мы вспомним, какие намы создавались, то в пермишнах добавлялся tutorials control. Что это значит? Это значит, что этот товарищ почему-то попросив меня запустить миграции, а, забыл запустить сидер, да, что достаточно подозрительно. Вот поэтому можно либо ему в духе вайпкодера написать, что ты забыл запустить сидер, либо можно написать самостоятельно не обломиться, да, там PHP aris DB, соответственно Se, соответственно, минус этот самый класс, а, да, который мы хотим запустить. У нас класс для сидеров. Давайте попробуем его а найти. Мне кажется, вот он Permission Seeder. А, скорее всего, это именно тот товарищ, который нуждается в перезапуске. Вот, давайте посмотрим, засидится ли база. И после этого я снова перейду на ещё одну страницу. И мы увидим, что туториалы добавились. Соответственно, нажимаем F5tify. Ну да, инерция, там все остальные ребята делают жёсткий а перезапуск. И по идее теперь у меня должен появиться доступ к этому разделу. Давайте попробуем открыть tutorials. Вот так вот. И посмотрим, что из этого выйдет. Э-э, долго страница грузится первый раз, но вот смотрите, что-то открылось, туториалы, создать туториал и так далее. Я правда не совсем понимаю юмор, почему он не добавил это в левое меню, если честно. Ну, как бы мог бы, ну, как бы добавить-то давайте мы на него, может быть, наедем на этот счёт, а то как так? Что это такое, Клод? Ты что
Segment 5 (20:00 - 25:00)
где этот элемент в левом меню? Но пока что давайте оценим перед тем, как на него наезжать, то, что за 10 минут он напечатал нам 48 файлов. э, израсходовал, значит, 31% пятичасового лимита на дешёвом тарифе, на самом дешёвом. Вот. И сейчас давайте у него спросим, э, как бы, как бы у него тут помягче-то спросить. А вот about left меню. Where is link to tutorials in там admin section? Сейчас, я думаю, он добавит. А, ну как бы вот здесь, смотрите, я запустил, кстати, техническую ошибку небольшую. У меня на экране выделена строка в дета сидере, и он как бы к вопросу её контекстно добавляет немножко. Ну, это ладно, он разберётся. Это, в принципе, относительно пофиг. Вот, значит, на что напрашивается КлоД? Как мы видим, напрашивается на то, чтобы ему где-то в плане всё-таки поставить, да, пометку, что в левое меню это нужно добавлять. Но заметьте, что он прекрасно вскрыл Vertical Sideb, и сейчас SB Item совершенно спокойно добавит эту иконку, я уверен. И мы с вами сможем посмотреть, насколько качественно он накодил. Ну вот, собственно, за свои сколько там, 10-15 минут кодинга всё это добро. При этом заметьте, что по времени такая плёвая задача, как добавление вот этой вот кнопки, заняло тоже там порядка 30 секунд. Но зато я думаю, что сейчас после перезагрузки странички у нас эта кнопочка, а, в левом меню потихоньку появится. Так, давайте проверять, что он натворил. А значит, в SB Items tutorial добавил меню Array. А вот так и поехал, добавил, если user can tutorials control, то bar tutorial item. Вот в это меню, собственно, он должен был его добавить. А значит, ну, по логике он сделал всё нормально. Значит, действительно, есть вот такой файлик, как vertical side bar. Здесь достаточно топорно, но пока что на базовом простом уровне идёт проверка пермишенов. А что вот этот сайбар айтем, он должен добавлять, а, соответственно, если у нас, э, ну, как бы а нормально привилегии отработали, и вот он должен был добавить как бы not туториалы, но тут а не это просто, ладно, это мы уже на клод зря бухтим. Это уже конкретно просто вид долго делает пересборку проекта. А так, смотрите, вот давайте оценим функционал. Я зашёл в туториалы, он сделал, значит, поиск по названию, по статусу, по доступу и по автору. Прикольно. Давайте попробуем создать туториал. Markдауредактор есть. Так, ну-ка, погнали. Там первый туториал. Что-то ля-ля-ля-ляляляляляля ему напишем. Заголовок какой-нибудь накинем. Значит, платный туториал. Цена 2. 000. Ну ладно, 20. 900. Также це на курсы надо с опечаткой, да, делать. Вот, собственно, сохраняем. Пожалуйста, туториал готов. Давайте добавляем раздел. Там добавил раздел какой-нибудь левый. Там тоже давайте первый раздел бесплатный. Да. Ага, не меньше со0ка валидацию поставил. Ладно, мы его об этом не просили, но он сам так решил сделать. Вот давайте проверять весь функционал проекта. Добавляем, добавляем, добавляем. Так, разделы готовы. Давайте попробуем их отсортировать. Поменяли местами, вышли в туториал. Собственно, вернулись обратно в просмотр. Нормально, отсортировано. Давайте снова поменяем местами. Вдруг сортировка не работает. Да, снова проваливаемся в туториал. Работает сортировка, всё нормально. Удаление сущности работает. Тоже хорошо. Редактирование сущности. Давайте попробуем тип, а, доступа сменить, допустим, на черновик или там на скрытый, на публичный. Да, всё работает нормально, как будто бы видим раздел туториалов, всё о'кей. А при этом, что интересно, ну, давайте я попробую вбивать поиск по названию как-нибудь быстро. там вбил. Нормальный лайфпоиск тоже работает. Вбил снова лайф поиск обновился, работает и так далее. И заметьте, что мы пока не видим фактических ошибок. То есть Клод как будто бы справился с задачей прекрасно и, ну, вот такой вот функциал в админке для двух сущностей наклепал нам очень-очень быстро. Ну [откашливается] что, кто из вас готов с такой же скоростью напечатать 50 файлов на какое-то совершенно нереальное количество строчек кода? И вот в этом как раз моменте, до которого мы дошли, и заключается одна из главных опасностей вейпкодинга и одна из её главных фишек, выгод, радостей, но и в том числе опасности, да, с одной и с другой как бы стороны. Вот если смотреть, значит, какая в этом радость? Ну, разумеется, радость в том, что мы нажа на напрягли клод всего на 10 минут, и он нам накатал столько строчек кода, сколько сами мы никогда за подобное время не напишем. Более того, большинство времени я просто вам что-то рассказывал, а клод работал сам. То есть я бы мог, например, пойти и со второго монитора кодить другой проект или в этом
Segment 6 (25:00 - 30:00)
проекте заниматься стратегическими вопросами. Именно это и продвигают те, кто является там фанатами вайп-кодинга или как это сейчас называют, да, вайп-кодинг типа уже не круто. Это вот те как раз, которые змейку там пишут, ничего не соображают, да. Вот сейчас это стараются называть как-то красиво, там типа аа системный промпт инженер там или да или как-то этот вот, да, там повелитель нейросетки, погончик с там веслом, который говорит, куда плыть. Но, как ты как бы не называй, один фиг, ничего не изменится. Но как бы опасность-то веб-кодинга заключается в том, что когда тебе Клод сделал столько за 10 минут, ты не хочешь сидеть и ревью это 40 минут, потому что ты понимаешь, что ты можешь ещё за 10 минут ещё столько же нафигачить, да, и в этом как бы огромная тяга. Это манит, это заставляет тебя как бы, ну вот становиться пофигистом, что ли, потому что ты видишь, вот ты не напрягаясь напечатал 50 файлов, за тебя их напечатал Клод. Но неужели мы хотим вот этим вот заниматься? Смотреть каждый файл, да, смотреть, что в нём происходит? А помните, какая мысль мелькала в середине ролика? Какую золотую мысль нам в комментах написали? Программист обязан отвечать за код. Да, за код, который он написал. Неважно, как он его писал. Писал он его руками, писал он его чужими руками, вайбкодил он его или нет. Он должен вот это всё аккуратнейшим образом проверить и нести зайкод такую же ответственность, как если бы он писал эти строки кода полностью сам. И никогда не пытаться считать уважительное отговорку то, что я не виноват, это нейросеть за меня навейпходило. Это и есть главная опасность. то, что с каждым моментом, с каждой минутой общения с Клодом, а тебе становится всё труднее заниматься ревьюшкой, потому что ты понимаешь, что время, которое ты тратишь на ревью, ты бы мог потратить на новую команду для Клода, и он бы, а-э, ну, как бы сильно продвинул бы проект вперёд. А так ты как бы сидишь и читаешь эту кодовую базу. И вот тут нужно искать баланс. Да, конечно, программистам нужно искать баланс между тем, чтобы читать каждую строчку кода или между тем, чтобы чувствовать, где клод реально может ошибиться. И по факту всё очень просто и очень хорошо звучит для хороших специалистов. Чем вы лучше разбираетесь в своей предметной области, тем быстрее вы поймёте, где клод реально может накосячить, и тем быстрее вы эти баги заметите. Но, например, когда Клод делал подобную задачу в прошлый раз, он сделал её чуточку хуже. Я уже открывал эти файлики. Давайте покажу их ещё раз. Он в файлике шоу накосячил с реактивностью в этой точке. Он, собственно, накосячил сопишкой, после чего получил, ну, немножко по шапке. Вот это исправили без внедрения новой инструкции, потому что и так типа должен соображать, а вот это вот было вынесено в отдельную инструкцию в папочку апе. как нужно работать, когда нам нужны фоновые запросы не для инерции, а именно как бы вот обычный HTTP, э, да, XML, HTTP request или А когда он накосячил, соответственно, в другой задаче, например, была у него задача сделать обёртку над Markу редактором. Элся такой замечательный компонент. А, да, замечательный компонент. Давайте его откроем. components, допустим, а Shar Markdown Editor Markdown Editor. Просто не напрягаясь, пока я пил кофеёк, он зафигачил обёртку над Easy MDE редактором. А на Интейме лежит обёртка только под VW2, вроде бы для этого редактора. Ну, как бы, по крайней мере, прогуглилась только под вторую версию. Клод тут написал всё прекрасно, сам продумал логику тёмной темы, но ошибся дважды и заставил сделать выводы. Кстати, что во вью он немножко плавает. Он, во-первых, неправильно брал ZМ через Global. Это тоже вынесли в MD файлик. И он здесь попытался начудить абсолютно люту. Он сначала вынес это в константу, например, положил выше. И когда ему скормил вьюшную ошибку, то что, мол, товарищ в Define пропсе, поскольку это макрос, ты не можешь ссылаться на константы внешние, да, лежащие в этом же файлике, он вместо того, чтобы вынести её в отдельный скрипт или заинлайнить, он перешёл к старой версии до 3. 5 с там Виз дефолтсом и как бы получил ещё кучу ошибок тайпскрипта. Ему сказал там аюф, нет, не ф, какая там буква-то более культурная, аюкиньми. А вот и как бы ему сказал: "Да залайн-ты это значение". Он его заинлайнил, сказал: "Да, о'кей, понял". И мы дописали это в CL MD, и больше он не ошибается. То есть заметьте, а какой вайп-кодинг настоящий? Какой вайп-кодинг, на мой взгляд, эффективный? Вайп-кодинг такой, в котором вы являетесь специалистом лучшим, чем Клод. Во многих вопросах у вас должен быть опыт в этой сфере. Вы должны, ну, как бы уметь программировать, знать свою предметную область, знать, где клод может ошибиться. Ну, я говорю клод, подразумеваю любую другую возможную нейросетку для программирования, понятное дело. А вот и вы ревьюте
Segment 7 (30:00 - 35:00)
поначалу много в проекте. Ревьюте, улучшаете клод МТ, учите его умуразуму. И после этого он начинает работать без особого напряга. А потому что чем больше, чем лучше составлены Cloud MD, то есть инструкция для него, тем лучше он себя чувствует, тем меньше ошибок он допускает. И вот в этом как раз, наверное, и заключается, на мой взгляд, именно как бы такой разумный подход к пайпкодингу. То есть, будучи хорошим специалистом в своей области, опытным товарищем, да, просто направлять нейросетку шаг за шагом, чтобы она начинала генерировать код всё лучше и лучше. И если клод, например, когда я 2 дня назад специально тестировал его первый раз на сущности курсов, похожий на туториалы, там он допустил, соответственно, две или три вот эти вот неточности достаточно критические, то теперь он не сделал ни одной ошибки в туториалах вообще, потому что подобные сущности он реализовывать умеет без вопросов. Значит, был ещё забавный комментарий на Ютбе, то, что о, типа, очнулся от спячки, там, неросетки, вайпкодинг давно, да, только начал что-то про них записывать. Но на самом деле тут же важно, что они преодолели определённый рубеж. Э то, что условно год назад, когда их начинали уже там как-то рекламировать, рассказывать, что вы сейчас всё завайпкодите, они не так код писали. То есть почему я выбрал именно этот стек, да? Вот чтобы показать, что клод текущий даже на средней модели прекрасно себя чувствует в монолите. Не, вот просто вдумайтесь, да? Вот год назад обсуждение же шло как будто бы немножко про другое, что контекст теряется быстрее, что идеально для нейросеток что-то типа микросервисной архитектуры, где они контекст не переполнят, где сервисы общаются друг с другом как бы по пишке, зная чёткую документацию. Что мы сделали сейчас? Мы его закинули в проект с там уже десятками тысяч строк кода получается, потому что он для одной сущности там сколько, 7. 000 написал, да, для курсов. А мы, соответственно, а как бы дали ему относительно фиговую инструкцию, попросили самого написать план. Он сам написал план, сам пошёл сделал, не допустил ни одной ошибки, кроме той, что не сообразил запустить сидер. Ну как бы ладно, простим ему. Это израсходовал 30%, а, ну, как бы тарифного плана. Это много, да, это много. Пятичасовое окно, 30% тарифного плана. Но это потому, что мы так работали, да, потому что мы ему на пофиг дали огромную инструкцию, сказали: "Делай". Если разбить это хотя бы на два этапа, а, на этап составления плана и потом запуск, допустим, каждого шага плана в новом, э, как бы контекстном окне, в новой сессии с огромной вероятностью он сожрёт меньше токенов. Не обязательно прямо каждый шаг отдельно запускать, но можно это разделить. По крайней мере запустить миграции можно самому да, по крайней мере как бы разбить это на туториалы и ээ секции для туториалов тоже можно, что должно теоретически уменьшить расход. И вот для меня главным моментом, почему я решил приобщиться к этой теме, в том числе к теме рассказа про нейросетки в программировании, стало то, что Клод стал себя хорошо чувствовать в монолите, не в микросервисах. Это ещё год назад было понятно, что да, ему стиifй с тайпспеком. из Татьспека выведе опе. И он в этой архитектуре, даже прошлогодний там клод, не клод, любой нейросетевой, да, вот этот вот помощник справится прекрасно. Но это были микросервисы, а теперь монолит с какой-то нереальной толпой файлов, и он в нём не запутывается и жрёт относительно умеренный как бы процент ресурсов. При этом можно сказать, что в какой-то мере степени, ну да, вот так вот использовать клод это из пушки по воробьям палить, а потому что мы сожрали за 10 минут 30% пятичасового окна и по сути сделали то, что, ну, могли бы сделать сами. И, ну, пока что клод стоит дешевле, да, просто клод стоит дешевле. Поэтому, если ты его так хочешь использовать, ты просто берёшь тариф Макс за 100 долларов, и тебе эти вот задачи вообще, ну, как бы, скажем так, не чувствуются, да, что они как-то сжирают usage. Но где-то можно представить себе, что мем станет реальностью. Вот мем недавно у меня в Телеграме один из бывших учеников опубликовал, э, м, по-моему, да, вот на тему того, что кто-то там пишет, что нанял джуна, чтобы простые задачи он делал, чтобы не расходовать дорогие токены. по мере удорожания токенов, как будто это может стать реальностью. Почему? Потому что Клод ещё лучше себя чувствует в, знаете, вот таких вот заданиях какого-то полуолимпиадного типа, что ли. Я думаю, потому что он был натаскан, в том числе на лидкоде. Одна из задач, которую он как бы решил вообще за буквально десятки секунд, а я бы над ней сидел достаточно долго, потому что, ну, нужно было бы думать, как это сделать, как массивы перевернуть. То есть, короче говоря, к чему сводится шахматная партия в тренажёрах? к тому, что у нас есть mainлайн. От мейн где-то
Segment 8 (35:00 - 40:00)
есть, ну, ответвление для боковых, да? А мы должны прогнать по всем вариантам учеников, чтобы они, ну, например, изучая дебют, проверили все ветки. Разумеется, в любой там ПДЖНК, даже для, ну, относительно слабого уровня этих веток намного больше. И, разумеется, я на старте, когда а это прогол, сделал вариант обхода дерева вглубь. То есть сначала идём по мейнлайну, возвращаемся к первой развилке, идём сюда, возвращаемся к вот этой той развилке. Вот. И там уже, когда мы собираем сейчас в бета-режиме первичную обратную связь, там уже кто-то сказал, что слушай, пока мы вот проходили вот эту зону, я уже забыл вообще, что было там на втором ходу или на каком-то. А есть ли какие-то альтернативы? И как бы в принципе альтернативы-то понятны, но я такой уже совсем прифигевший к Лоду пишу: "Слушай, дядь, вот у меня дерево реализовано на коря в английском ещё пишу обход дерева реализован вот туды, вот сюды как бы смотри, там ученики забывают, что было на первых ходах, предложаю альтернативы". И он, значит, катает такую простыню через там секунд 40 говорит: "А, ну понятно, вы обходите дереве вглубь, значит, давайте два алгоритма ещё вам предлагаю". Значит, первый алгоритм - это обход с начала альтернатив, с чем я, в принципе, согласен, да, запомнили этот узел, прошли альтернативы. Почему? Потому что альтернатива обычно короче, чем Mainline. Вот. А второй вариант - это значит FIFO, как он его назвал, first input, first outp. То есть типа проходишь mainла line и возвращаешься не к вот этой развилке, а к вот этой, чтобы как бы пройти сначала здесь зону по той же логике и потом заново mainлайн повторить и выйти вот сюда. То есть ученики, получается, будут по дереву путешествовать по, ну, как бы стволу несколько раз, что дольше в плане, ну, времени прохождения тренажёра для них, но что позволяет лучшую инфу запомнить. Я такой как бы ему говорю: "А давай, короче, внедряй все по паттерну стратегия". И он внедряет, а я это самое иду ревью и просто тещу. А то есть вот на таких задачках, почему я это назвал таким полуолимпиадным типом? Потому что, понятное дело, что нормальный программист должен механике обхода дерева писать и сам. Прекрасно. Но если мы считаем, что мы веб-разработчики, когда мы нафиг последний раз писали обход дерева? И, ну, как бы в такой задаче нерасетка натренированная, в том числе на лидкоде, будет в разы сильнее. Это абсолютно понятно. Мы, как кожаные мешки, ещё сильны где-то в архитектурных вопросах, да, в интуитивном предвидении ошибок, в понимании того, за счёт накопленного опыта, где они могут быть, где не могут быть. Вот. А когда тебе надо обойти дерево или распарсить там одну структуру в другую, как бы нейросетки вне конкуренции. Ещё одна задачка. Да, я вот в этом дереве в ПДЖНе опасался немножко, нет ли ссылок на Перента, например, а потому что это создаёт циклическую сущность. Ну типа дочерний узел ссылается на родительский обратно и невозможно сериализовать Джейсон. И говорю: "Ну-ка проверить, этот товарищ, есть циликуляр depпенс или нет". Он говорит: "Нет". Я говорю: "А давай всё равно мы это в плоское дерево преобразуем". Типа, чтобы узлы ссылались друг на друга по индексам, лежали на одном уровне массива. Он говорит: "Да, не проблема, через минуту сделал тест, написал, протестировал". Вот. То есть в таком режиме работать одно удовольствие. И когда ты его направляешь мелкими задачами, ты и токены не расходуешь практически никак. А и как бы результат получаешь, ну, прикольный, быстрый. Остаётся только реально это проверить тестами, как бы интуицией, опытом и так далее. Ну а то, что вы видели по разделу туториалов, я думаю, что, ну, как бы такая скорость реализации админского функционала может вызвать определённый шок. Потому что, ну, как бы это не шуточки, да, за 10 минут столько кода написать, никто из нас не сможет просто технически, физически напечатать столько символов на экране. Мы не заканчиваем серию видео, но здесь пора поставить на паузу. Да, переварите то, что вы увидели на экране. Я думаю, что те, кто с нейросетками работают, прекрасно понимали такие возможности, но подчёркиваю, что это было сделано в монолите, и он написал сейчас несколько тысяч строк кода и не спалил м как бы пятичасовой лимит. Весьма компактно мы уложились. И главное, сколько времени сэкономил программист, который бы занимался тем, что писал бы либо BHP Artisan Generate Controller Resource, потом бы вбивал туда типичные крутметоды и так далее, и так далее. И главное, что Клод здесь даёт, вот на мой взгляд, что очень интересно, чем он для меня явился таким вот очень ценным. Чего ценного, точнее, он для меня именно принёс? То, что это же решение скучных задач, неинтересных. Интересно идти реализовывать там какой-то крутой алгоритм. А то, что Клод за тебя сделал рутину, вот это вот классно же. А ты иди занимайся интересными задачами. Он, правда, блинх тоже решил, дерево там, да, обход написал. Ну ничего, найдём ещё интересных задач. А рутиной пусть вот он и занимается. Ну а чтобы рутину клод разбирал хорошо, чтобы вот эти вот 50 созданных файлов, когда вы будете ревью, доставляли лишь удовольствие, а не заставляли исправлять баги, конечно же
Segment 9 (40:00 - 42:00)
ему нужны хорошие, качественные инструкции. И в этом-то, пожалуй, заключается сейчас главное искусство. Как бы прочувствовать, как сделать архитектуру проекта в конкретном стеке технологий, выбранном. создать описание этой архитектуры грамотной, неизбыточное, именно чёткое, лаконичное, чтобы клод, стартуя с клодм MD, знал, в какие папки идти, с каких начинать. Потом в этих папках разложить клодм MD добавочные, чтобы он, заходя в решение какой-то конкретной задачи, получал автоматически дополнительную инструкцию и так далее, и так далее. И, пожалуй, только человек, который хорошо разбирается в своём стеке технологий, умеет писать на нём сам без помощи клода. Вот только он-то и сможет выстроить нормальную систему инструкций, чтобы клод работал прямо реально настолько хорошо, насколько может. То есть я не говорю о том, что клод не справится без всех этих инструкций. Нет, он справится, он будет делать по аналогии, будет неплохо решать задачи, но с этими инструкциями он будет работать ещё круче и, конечно же, жечь меньше лимитов. Потому что если допустить ошибку новичка и сложить всё в один клод MD, максимально подробно описав проект, то потом и будет 10% контекстного окна, не 1% этим клодом МД сразу забиваться, и результат будет ухудшаться, и токены на полиции, и так далее. И на мероприятии, которое будет после вводного, вот на этом курсе, да, полном разумного вайп-кодинга, мы как раз попробуем для совершенно разных стеков технологий выстроить вот эти вот чёткие системы, как я их вижу. Перед вами сейчас был примерновел инерция. И на другие стеки мы тоже будем нацеливаться. Я думаю, мы как бы инерцию не забросим. Вот эти монолиты очень интересно, особенно для написания админской части сайта. Мы как бы там и с Ларавелом, и с адонисом всё это добро прокрутим, чтобы был чисто нодовский пример, да, и пример смешанный, где и JS, и PHP. И, разумеется, заглянем в сторону работы с Фастифаем и тайпспеком, чтобы посмотреть, как миниатюрные элементы он решает, сколько токенов жрёт. И я думаю, под нес сделаем заготовку. И, конечно же, и под вью, и подряд будут развилки. То есть мы постараемся хватить очень много разных направлений, чтобы как бы, во-первых, продемонстрировать, что клод умеет работать со всем этим делом прекрасно, а во-вторых, чтобы у нас с вами набралась критическая масса инструкций, а которые, ну, вот эти вот самые МД-файлики будут позволять вам комфортно, ну, как бы подстраиваться под текущий стек, выбранный в конкретном проекте. Поэтому, кому интересно, переходите по ссылке ниже. Пока что ещё работает предзапись. Ну я думаю, что ещё какой-нибудь ролик у нас в рамках серии вводной будет, после чего как бы продолжим уже в рамках нашего мероприятия основного.