Вайбкодинг vs Программист. Почему не стоит вайбкодить, если вы ничего не понимаете в программировании

от автора

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

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

Lovable принялся за дело: начал писать код, распределяя его по файлам и, на первый взгляд, делая это красиво. Потом я открыла эти файлы: во многих действительно архитектура была хорошая, но вот в ендпоинтах (они обрабатывают поступающие от пользователей запросы) был реальный смех: работа с базой данных велась прямо там — без репозиториев и сервисов. Любой более-менее нормальный разработчик, использующий FastAPI, так делать не будет, потому что при масштабировании проекта, поддерживать такое будет очень сложно.

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

Потом я решила проверить, сможет ли Lovable интегрировать написанный им проект с не очень популярным сервисом. Для теста я решила взять abcp.ru — сервис для создания интернет-магазинов для продажи автозапчастей.

Я попросила Lovable написать модуль, который будет получать список заказов пользователей с abcp

Давайте сразу обратимся к документации abcp и посмотрим, какой метод отвечает за получение заказов

Теперь давайте посмотрим на реализацию запроса, которую написал Lovable. Опустим связанные участки кода и посмотрим именно на тот, который отвечает непосредственно за отправку запроса:

async def get_orders(        self,        date_from: Optional[date] = None,        date_to: Optional[date] = None,        skip: int = 0,        limit: int = 100,        orders_numbers: Optional[list[str]] = None,        internet_orders_only: bool = False,        format_: str = "p",  # p = с позициями    ) -> list[ABCPOrder]:        """        Получить заказы текущего пользователя.        :param date_from: дата начала периода        :param date_to:   дата конца периода        :param skip:      пропустить N записей (пагинация)        :param limit:     максимум записей        :param orders_numbers: фильтр по номерам заказов        :param internet_orders_only: только интернет-заказы        :param format_:   "p" — с позициями, "short" — без        """        params: dict[str, Any] = {            "skip": skip,            "limit": limit,            "format": format_,            "internetOrdersOnly": int(internet_orders_only),        }        if date_from:            params["dateStart"] = date_from.strftime("%Y%m%d")        if date_to:            params["dateEnd"] = date_to.strftime("%Y%m%d")        if orders_numbers:            for i, n in enumerate(orders_numbers):                params[f"orders[{i}]"] = n        raw = await self._get("cp/orders", params)        if not isinstance(raw, list):            raise ABCPError("Ожидался список заказов", payload=raw)        return [ABCPOrder.model_validate(item) for item in raw]    async def get_order(self, order_number: str) -> ABCPOrder | None:        orders = await self.get_orders(orders_numbers=[order_number], limit=1)        return orders[0] if orders else None

Метод Lovable написал правильный (cp/orders), однако, не всё так радужно.

Давайте посмотрим на словарь params — именно в нём хранятся параметры запроса

params: dict[str, Any] = {            "skip": skip,            "limit": limit,            "format": format_,            "internetOrdersOnly": int(internet_orders_only),        }

Первое, что я хочу отметить, параметра internetOrdersOnly в принципе не существует у метода cp/orders. Во вторых, если мы еще раз внимательно посмотрим на документацию то увидим, что за получение заказов пользователей отвечает параметр userId, который Lovable вообще не передает. Следовательно, делаем вывод, что метод не будет работать корректно и возвращать заказы пользователей.

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

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

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

ссылка на оригинал статьи https://habr.com/ru/articles/1033198/