
В качестве эксперимента решил примерить на себя модное нынче развлечение - вайб кодинг. Ну и заодно понять, насколько быстро умирает профессия программиста.
Много лет назад, когда переехал с windows на мак, мне стало очень сильно не хватать музыкального плеера Winamp 2. Тогда я решил: что раз нет достойной замены, то освою разработку под мак и напишу плеер сам. Но шли годы, а руки все не доходили, проект так и остался в состоянии "hello world". И вот недавно, когда снова не нашел достойного плеера, меня посетила безумная идея - ренинкарнировать старый проект и сделать все силами ИИ, не написав ни строчки кода самому.
Так появился macAmp "true vibe coded winamp for mac". Моя цель не переписать winamp под мак, а сделать с нуля плеер, который будет выдержан в духе winamp, возьмет от него все лучшее и добавит новые возможности, не выбиваясь из оригинального стиля.
Итак, на старте есть я, полный ноль в разработке под мак ос, но неплохо справляющийся с разработкой ПО в целом. У меня есть куча идей и хотелок, что и как надо, и прообраз в виде старого плеера винамп.
День первый. Рассказываю кодексу где лежит проект и что из него надо сделать. Буквально с 1-2 промпотов у меня появляется окошко, похожее на винамп без кнопок, со стандартным ползунком от мака, но из него уже играет музыка! Далее за пару часов и стакан коньяка сжигаю доступный лимит на разные изменения функционала, чтоб приблизить болванку к плееру. Результат ошеломительный, стало понятно, что вполне реально сделать плеер, который так давно хотелось, и сделать это относительно быстро. На ночь ухожу в chatgpt писать ТЗ на то, что хочу получить в первом приближении, что называется, MVP грубыми мазками.
День второй. Если что, это не следующие сутки, а следующий подход. Весь доступный ресурс кодекса был потрачен на корректное отображение и поведение элементов скина на главном окне. Хорошим подспорьем стала подробная документация по скинам, найденная ИИ в интернете. Теперь у меня есть окно плеера, где все кнопки жмутся, ползунки ползают, часы тикают и даже работает анализатор спектра. Выглядит все хорошо, но не так как хотелось и хуже оригинала. Столкнулся с первыми ошибками и их исправлением, и это весьма не тривиально. Стало понятно, что не так все быстро и здорово, как казалось - писать промпты тоже требует немало сил. Нашел исходники винампа, надеюсь они ускорят в части алгоритмики "что как" и прочих тонких мест.
При переходе из первого во второй день я окончательно убедился в том, что кодекс десктоп - это полный унылый коричневый смайлик с глазами. И это на всех возможных платформах, причем на каждой свои недостатки, делающие работу некомфортной. Другое дело CLI, вот где настоящая сила. Попробовал его на линуксе и с удовольствием использую на маке.
День третий. Я обзавелся исходниками винампа, это стало хорошим подспорьем в части рисования элементов скина. Основное время ушло на вылизывание главного окна и режима сворачивания в заголовок. Но под занавес удалось сделать еще окно эквалайзера, которое пока ничего не делает, а только шевелит ползунками, но зато все корректно. Задумался о том, что начинает накапливаться технический долг в виде нерабочих элементов.
Собрал силами чат-гпт описание функционала эквалайзера, стало понятно как работает неведомая кнопка "Auto", но мне так не нравится и явно надо будет сделать как-то по своему, более очевидно. Вот это момент, из-за которого нейронки человека не заменят еще долго. Тем не менее, для меня, который вообще в аудио ничего не понимает, помощь нейронки в том, что как работало в оригинале и что можно сделать, была весьма ценна. На старте следующего дня у меня теперь было готовое ТЗ на эквалайзер и новую кнопку "авто".
День четвертый. Отлично! Теперь у меня есть работающий эквалайзер. Он получился неожиданно быстро, даже краткое ТЗ сильно ускоряет разработку. А вот создание окна плейлиста, которое ничего не умеет, только лишь корректно рисуется, заняло массу времени, хотя и планировалось "по накатанной". Ну и плейлист съел основную массу доступных токенов на сегодня. На функционал плейлиста точно нужно будет готовить ТЗ, поскольку хотелок у меня для него накопилось немало за годы...
День пятый. Поигрался в автоматический эквалайзер и переписал ТЗ для него. Вот теперь, похоже, автоматика действительно работает, а не просто выстраивает ползунки в диагональ. Львиная доля ресурса опять ушла на мелочи вне ТЗ: магнитизм окон, сохранение состояния и прочее. Стал записывать технический долг в список TODO, поскольку в голове уже все не удержать. До плейлиста дело так и не дошло.
Шестой день. Заранее подготовил ТЗ на плейлист (точнее на систему плейлистов), вышло много и кодекс старался делать небольшой кусок и останавливаться. Это неудобно да еще и уводит в бесконечность правок после каждой остановки. Заправил все ТЗ через /goal и сижу наслаждаюсь - он работает, а я тем временем в блоге пишу. В таком режиме доступный лимит растворился стремительно, а правок после реализации большого ТЗ осталось еще очень много.
Дальше процесс превратился в рутину фича-строения, отладки и исправлений. В общем, все тоже самое, только на новый лад. Да, здорово, что руки стали длиннее и возможностей больше, не нужно больше быть специалистом, чтоб получить результат. Однако, если нужен качественный результат, то приходится все больше разбираться и погружаться в предметную область.
Если обычно я был специалистом, который досконально разбирается в том, как работает каждый кирпичик в проекте, то здесь я превратился в менеджера, который разбирается, как должно работать на выходе, но совершенно не знает как оно там под капотом.
Профессия программиста, именно программиста-разработчика, который в своей работе использует голову, анализирует проблемы, ищет и придумывает решения, будет жива еще долго. А вот профессия кодера, который превращает качественное ТЗ в строчки кода, умирает стремительно, и ценность знания конкретных языков программирования становится минимальной, превращается в архаизм. И все большую власть над миром получают те, кто владеет и управляет большими нейросетями.
В итоге первая пригодная к использованию версия приложения получилась через 7-10 дней (точнее подходов к разработке). Для данной задачи, в условиях почти полного отсутствия знаний на старте, я считаю, что это хороший результат. При этом писать код самому становится все больше лень, а затем еще.и лень писать и промпты для ИИ. Новая жизнь теперь строится вокруг доступного лимита в кодексе.