Создаю музыкальный сервис с ChatGPT: Миссия выполнима?
Вступление
Привет! Недавно я решил всерьез вкатываться в IT и вдохновился видео, где создают соцсеть с помощью ChatGPT. Решил провести похожий эксперимент и превратить свой курсовой проект в MVP музыкального сервиса.
Я не полный новичок в программировании, но и экспертом себя не назову. Моя оценка себя - даже не 3 из 10.
Получилось ли написать сервис с помощью ChatGPT? Спойлер: Нет. Но я сделал важные выводы и готов ими поделиться.
Шаг 1. Запрос в ChatGPT.
Первым делом я решил выбрать свой стек разработки. В голове у меня было, что я хочу использовать Java и React для проекта.
И в итоге мой запрос выглядел так:
В ответ я получил инструкцию из нескольких пунктов, в котором ChatGPT по порядку рассказал что мне необходимо сделать.
Шаг 2. Прохожусь по пунктам.
Пункт 2. Исследование и планирование.
1.1 Функционал: Определи основные функции сервиса (например, стриминг музыки, создание плейлистов, рекомендации, социальные функции и т.д.).
Первым делом нужно было определиться с функционалом. Я хотел, чтобы мой сервис умел:
- Регистрация/авторизация
- Воспроизведение музыки
- Добавление треков
- Составление плейлистов
- Поиск по сервису
- Одинаковый уровень громкости
Дополнительные функции:
- Визуальное сопровождение музыки
- Показ текста песни
- Социальные функции
- Комментарии и оценки
- Поддержка различных аудиоформатов
- Настройка кастомной палитры сайта
- Караоке
- Рекомендации
Пункт 2. Исследование и планирование.
2.1 Техническое задание: Напиши подробное техническое задание, в котором опиши все функции и требования к проекту.
В этом пункте мне также помог ChatGPT, я подробно описал ему что я хочу получить на выходе.
ChatGPT помог мне составить довольно неплохое ТЗ, которое я затем доработал и оформил.
2.2 Выбор технологий: Определи, какие технологии и библиотеки будешь использовать (например, Spring Boot для Java, Redux для управления состоянием в React и т.д.).
Я был вообще не знаком с технологиями и библиотеками, поэтому доверил выбор ChatGPT.
Ответ:
Я решил все это перенести в 1 место, создал проект в Miro и объединил все туда. Выглядело это так:
Пункт 3. Проектирование архитектуры.
3.1 Архитектура приложения: Определи архитектуру (например, микросервисная архитектура, монолит и т.д.).
3.2 База данных: Выбери подходящую СУБД (например, PostgreSQL, MongoDB) и спроектируй схему базы данных.
Я был знаком с монолитной архитектурой и работал с PostgreSQL, поэтому выбрал их.
Если бы я не знал как работать с SQL, на этом этапе эксперимент мог закончиться.
Проектирование базы данных оказалось самым сложным этапом. ChatGPT путался в своих ответах, и мне пришлось долго править его сообщения. В конце концов, я утвердил финальную версию БД.
3.3 API: Спроектируй RESTful API или GraphQL для взаимодействия между фронтендом и бэкендом.
Для взаимодействия фронтенда и бэкенда я решил использовать RESTful API. И снова мне пришлось поправлять ChatGPT, чтобы получить корректные запросы.
Все API-запросы я также задокументировал на доске в Miro.
Пункт 4. Разработка бэкенда.
4.1 Настройка окружения: Установи необходимые инструменты (JDK, Maven/Gradle, IDE).
Смешно, но на этом этапе возникли трудности с версией JDK, благо они решились 1 запросом.
4.2 Создание проекта: Создай новый проект на Java с использованием Spring Boot.
Я попросил описать структуру проекта, так как вообще не знал никаких паттернов.
Ответ ChatGPT:
4.3 Реализация API: Реализуй основные эндпоинты для работы с пользователями, музыкой, плейлистами и т.д.
Я имел лишь базовые знания Java, поэтому просил ChatGPT написать код для каждой модели и эндпоинта. Постепенно я задавал вопросы о том, что происходит в коде, и понимал только часть.
Таким способом я, используя ChatGPT написал всю логику эндпоинтов, без ошибок конечно не обошлось.
После того как я все написал, меня осенило, что нужно было все это тестировать :))
Решил запустить сервер. И, конечно же, не с первого раза все заработало. Ошибки, исправления, новые ошибки...
Как вдруг я увидел долгожданную надпись:
Но... Даже если сервер запустился, это не значит что он не упадет спустя секунду xD. Ну конечно же он упал.
На этом этапе я решил завершить свой эксперимент, так как нашел ответ на свой вопрос.
Шаг 3. Какой же итог?
Может ли ChatGPT заменить программиста?
Мой эксперимент подтвердил: ChatGPT - не замена программисту, а мощный помощник. Он может сгенерировать код, предложить архитектуру и даже спроектировать базу данных. Но без понимания основ программирования и умения формулировать четкие запросы, добиться результата сложно.
Код проекта на GitHub: https://github.com/droptrigger/music-app
Мой Telegram-канал: t.me/CreateTrigger