Всем привет! Меня зовут Андрей. По профессии я занимаюсь стратегией и развитием нового бизнеса в российском телекоме. Но мне всегда была близка история создать что‑то своё, полезное, красивое и технологичное. И недавно я это сделал. Ниже, кратко расскажу про путь, который прошли я и моя идея, зародившаяся ещё в 2018 году, в эпоху отсутствия продвинутых языковых моделей, до наших дней и недавнего релиза приложения в Play Store. Возможно, эта история будет полезна или поучительна некоторым читателям с такими же планами, как были у меня.


Сначала идёт небольшая предыстория. Если вы здесь, чтобы прочитать про процесс и результаты моего вайбкодинга, переходите к разделу «Разработка. Наши дни»

Предыстория

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

Но ещё тогда задумывался об IT, разработке и запуске чего‑то своего — бизнеса, приложения, сайта. Чего‑то что можно создать и развивать, получать отклик и приносить пользу. Проблема была в том, что программирование я не знал совсем.

На дворе был 2018 год, ChatGPT не был открыт простым смертным, а из имеющихся способов чему‑то научиться в IT — видео‑уроки на Youtube, курсы и книги. Я решил попробовать.

Начал проходить один курс по Java, но после пары недель понял — не моё. Просто прикладывая усилия не видел того результата, который ожидал. Не хватило положительного по��крепления. Возможно, причина в лени, неправильно выбранной точке для старта, неправильном курсе или просто в моём майндсете. Но понял, что не быть мне разработчиком. Тогда я решил пойти по другому пути.

Решил начать с идеи, а с реализацией разобраться позже. В течение месяца я пристально наблюдал за жизнью и возможными проблемами, для которых не хватает решений. Записывал разные идеи прямо в заметки. Идеи набирались быстро, но были слабенькими и не всегда подходили к моим навыкам и возможностям.

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

И в один прекрасный день в ноябре ОНА пришла. Идея.

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

Приходилось обращаться в поисковик с запросами «Что подарить девушке», «Топ подарков маме на новый год» и так далее. И под каждый такой случай запускался цикл листания 99% стандартного треша в поисках того, что реально подойдёт.

Хотя казалось бы, достаточно собрать список всех возможных подарков в одном месте и просто соотнести человека с подходящими ему подарками.

Тогда у меня в заметках и появилась эта строка, которую я решил проработать тщательнее

  • «Подбор подарков. Анализ соцсетей, вводимых интересов, цены, тематики и тд для подбора идеального подарка»

Я решил сразу проверить, насколько это проблема вообще критична для различных людей или она ограничена небольшим кругом идей. Масштабных и качественных кастдевов я тогда проводить не умел, поэтому поступил просто. Сделал опросник в google формах и опубликовал в чате однокурсников с просьбой пройти. Удалось собрать целых 26 ответов!

Недавно, даже удалось откопать эту форму, было интересно почитать, что тогда отвечали, 7 лет назад (спасибо Google, что продолжает это хранить). Ниже парочка интересных скриншотов.

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

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

нужна реальная персонализация, связь дарителя и получателя
нужна реальная персонализация, связь дарителя и получателя

Тогда из собственного видения, результатов опроса и поиска решений, которые были на рынке, я начал формировать концепт MVP.

Сразу определил, какая должна быть ключевая фишка приложения. Парсинг и анализ соцсети получателя. Тогда я представлял, что можно просто вставить ссылку на открытый нельязграмм получателя, какой‑то волшебный парсер соберёт все изображения и подписи, проанализирует, что на фото, что в тексте и составит «Портрет получателя».

А в части подарков нужно просто собрать огромную базу подарков, как‑то её разметить. И сделать инструмент который будет соотносит�� Портрет получателя с базой подарков. Звучало просто.

Я обратился к нескольким знакомым разработчикам, получил разные термины, которые мне в теории могли помочь, и пошёл гуглить. Одним из таких терминов, для меня полностью незнакомым, был Word2Vec. Его я хорошо запомнил. Одного вечера чтения мне хватило, чтобы понять, что ни черта это не просто для меня.

Я честно попробовал что‑то сделать самостоятельно, собрал какую‑то солидную базу подарков — стандартных идей и чего‑то нишевого, не понимая в каком виде это будет нужно, записывал всё в excel в формате Подарок + связанные с ним слова. Казалось, это пригодится.

Расписал пункты, которые нужно проработать в части будущего решения — логика работы, ui, ux, монетизацию и фин модель.

И параллельно искал разработчика, который будет заинтересован на голом энтузиазме собрать что‑то такое.

К сожалению, тогда поиск не увенчался успехом и от безысходности, я остановился в своём желании запустить такое решение до лучших времён. Только время от времени мониторил, не запустил ли кто‑то что‑то подобное.


Разработка. Наши дни.

Конец 2024 года. Во всю бумит chatGPT. Начинает зарождаться термин «вайбкодинг». Помимо того, что языковые модели помогают уже опытным программистам, они ещё и открывают двери в IT для тех, кто не знает даже print(«Hello World!»).

Тогда я понял. Настало время. Сделать приложение не для публики, а хотя бы для себя. Закрыть тот гештальт, что был у меня с 2018 года.

Сначала я, как и многие, просто открыл chatGPT и написал, что хочу инструкцию о том, как создать своё приложение. А поскольку всю взрослую жизнь проживаю со смартфонами от компании Google (начиная ещё с Nexus линейки), то мой выбор пал на создание приложения для Android.

Начал я с установки Android Studio и создания первого проекта «first test app». Я просто начал прямо в чате писать, что я хочу увидеть на экране и получал куски кода, которые целиком копировал без понимания, что вообще они делают.

По пути столкнулся с тем, что ChatGPT часто ленится давать целые куски кода и временами допускает ошибки. Приходилось начать разбираться с тем, что и куда вставлять и по‑тихоньку вникать в код. Иначе просто упираешься в повторяющиеся ошибки. А ещё пришлось работать с тем, что он временами использует устаревшие подходы или неактуальные импорты.

Но в целом, реально собрать и покликать простенькое приложение на собственном смартфоне оказалось довольно легко. Вот несколько скриншотов из того, что получилось:)

рандомайзер и чат-бот с заложенными ответами. Попытки быстро подключить по API какую-то нейронку не увенчались успехами.
рандомайзер и чат‑бот с заложенными ответами. Попытки быстро подключить по API какую‑то нейронку не увенчались успехами.

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

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

Создание GiftAI / GIFTbase

Перед тем как начать делать приложение с умной рекомендацией персональных подарков, я провёл разведку. Посмотрел Play Store на предмет наличия чего‑то похоже. И для понимания, что есть на рынке и для «вдохновения» — взять лучшие практики и улучшить слабые места.

Что я нашёл:

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

  • Один хороший аналог с тем функционалом, который я хотел, но с очень слабым предложением подарков. В основном — что‑то стандартное, вроде «Игровые контроллеры», «Мастер‑класс по готовке».

  • Несколько сервисов, где можно прямо подобрать (без особой персонализации) и сразу заказать подарки.

Главное — не было ни одного с реально крутыми рекомендациями, приятным визуалом и всеми функциями. Тогда я начал действовать.

Создал новый файл и назвал его GIFT AI. Решил, что если что, смогу позже изменить название. Но для красоты в каком‑то генераторе за один промпт нарисовал логотип и приступил. Название, кстати, после сменил на GIFTbase, поскольку в процессе разработки кто‑то из индонезии выпустил GIFT AI — слабый сервис с очень ограниченным функционалом.

И я приступил к марафону длинною в 9 месяцев. Где почти каждый день, приходя с работы около 9, я садился и до 4–5 ночи делал приложение (благо удобный стул и молодой организм помогли это пережить). С чего же я начал?

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

Первая мысль — сделать три экрана:

  • Подбор подарков, где и будет происходит магия

  • Календарь людей и событий, где можно смотреть приближающиеся праздники

  • Настройки. А куда без них?

    Так и сделал.

быстренько прикрутил вход через sign in with google и настроил базу данных.
быстренько прикрутил вход через sign in with google и настроил базу данных.

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

Следующий месяц я сфокусировался на двух важных вещах — Реализации экранов выбора подарка и создания профилей получателей.

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

А вот в части выбора подарков ко мне сразу пришла идея. Сделать как в тиндере — удобно свайпать налево и направо. Интерактивный просмотр, который удержит пользователя и процесс не будет выглядеть, как нудное листание списка подарков.

Поэтому решил сделать дизайн как в тиндере — свайпнул вправо если нравится, влево если не нравится. А приложение всё запомнит.

Первые попытки объяснить LLM, как отрисовать экран со свайпами как в тиндере. Как видно - выглядит криповато, но работает.
Первые попытки объяснить LLM, как отрисовать экран со свайпами как в тиндере. Как видно — выглядит криповато, но работает.

Ещё сразу решил создавать приложение на двух языках, мало ли как захочется его дальше развивать. Чуть больше работы в процессе, но при необходимости добавить любые другие языки — будет сделано намного быстрее.

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

Не все эксперименты с внешним видом были успешны. Но они дали опыт.

тут зачем-то решил, что градиент на background - красиво. Ошибся.
тут зачем‑то решил, что градиент на background — красиво. Ошибся.

Время от времени переключался между LLM, в итоге использовал три: Grok, Gemini и ChatGPT.

Grok хорош, если нужно большие куски кода исправить и ты не хочешься копаться в отдельных строках, может хоть 2 тысячи строк исправить и ни одной ошибки не допустить.

Gemini намного лучше понимает визуал и лучше остальных отрисовывает UI. Все сложные и нестандартные UI элементы создавал именно в нём. Так же, почти весь backend был настроен им.

ChatGPT использовал в самом начале и обращался к нему, только когда и grok и gemini не справлялись, но в конце таких моментов почти не было уже.

В один момент понял, что не лишним будет реализовать функционал вишлистов. Поскольку лайкнутые подарки сразу все не подаришь и захочется вернуться к реально хорошим идеям.

Доработки визуала, реализация вишлиста у каждого получателя и функционала пуш-уведомлений о прибрижающихся праздниках.
Доработки визуала, реализация вишлиста у каждого получателя и функционала пуш‑уведомлений о прибрижающихся праздниках.

После решил всё таки заняться экраном входа и первым экраном, который превратил в дашборд и центр управления. Многим вдохновлялся на dribbble.com — реально полезный ресурс с крутыми визуалами.

Приложение начало обретать приемлимый визуальный вид. И хотя бы выделяться на фоне аналогов в Play Store
Приложение начало обретать приемлимый визуальный вид. И хотя бы выделяться на фоне аналогов в Play Store

После в течение месяца активно финализировал визуал, отображение и кэширование изображение, оптимизировал backend насколько мог. И активно улучшал модель рекомендаций.

Чтобы получить итоговый инструмент рекомендаций, который заложен в приложение сейчас, пришлось перепробовать множество различных подходов — от простых и сложных промптов, до мини‑агентов, внедрить историю рекомендаций и многое другое.

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

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

Из языковых моделей тестировал 2 — Яндекс GPT и OpenAI. По качеству получаемых подарков разницы не заметил. И первая и вторая как предлагают на одинаковых настройках хорошие идеи, так и обе иногда могут уходить не туда и предлагать то, что не существует. Поэтому остановил выбор на Яндекс, проще с оплатой, работает без VPN, и нет сложностей с передачей данных за рубеж.

внешний вид приложения в конце лета
внешний вид приложения в конце лета

В начале этой осени приложение уже было на том уровне, который я был готов отправлять в Play Store. Хотелось закрыть гештальт и довести приложение до продакшена. Чтобы всё проделанное за эти месяцы было не просто apk у меня в телефоне, а имело полноценную страницу в сторе.

Публикация в Play Store

Процесс публикации был извилист для новичка, пришлось немного поразбираться. Но огладываясь назад, понимаю, что всё довольно просто, особенно с помощью LLM.

Основных сложностей две:

  1. Если ты публикуешься как российский разработчик, твои возможности монетизации ограничены почти до нуля. Отключена внутреняя оплата через google play уже давно. Чтобы встроить альтернативный способ оплаты, всё равно нужен платёжный профиль в аккаунте разработчика, а для российских разработчиков его создать не дают (либо я пока что не смог разобраться как его создать).
    Я это знал заранее, поэтому монетизации в приложении на старте нет. Просто ограничено количество генераций, чтобы рандомные пользователи не могли обнулить баланс в Yandex Cloud.

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

Быстро в Canva набросал картинки для страницы в Play Store и нажал опубликовать. Два дня ожидания и вуаля, приложение доступно всем для скачивания. Гештальт закрыт.

Картинки для стора и самая страница, доступная всему миру
Картинки для стора и самая страница, доступная всему миру

Так же, за пару вечеров собрал сайт mygiftbase.ru, с простым лендингом и функционалом просмотра вишлистов другими людьми — пользователь внутри приложения создаёт вишлист и публикует его, а его близкие могут по ссылке посмотреть подарки и забронировать их.

страница сайта с опубликованым вишлистом
страница сайта с опубликованым вишлистом

Lessons Learned

Сейчас, оглядываясь назад на весь пройденный путь, вижу и ошибки, которые допустил в процессе, и моменты, которые неправильно приоритизировал или слишком затянул.

Что хочется подсветить:

  • Главное — ТЗ. Максимально на старте описать весь возможный функционал и идти по этому флоу. Часто помогает отрисовать экран «на коленке» и после показать LLM, как ты его видишь — я использовал powerpoint (часто работаю в нём на работе) и отрисовывал некоторые экраны в нём.

  • Правильно давать контекст модели и не забывать обновлять чат. LLM может начинать путаться в большом диалоге с кучей кода в истории, начинает зависать не на том и предлагать нерелевантное. Всегда помогало начать новый чат, дать весь только нужный контекст и поставить детальную задачу — справлялась моментально.

  • Начинать писать код на Flutter или сразу с прицелом на обе платформы. GIFTbase сейчас написан только для Android, поскольку я делал приложение для себя в первую очередь. Но если я захочу дальше развивать его, то придётся, как минимум, весь UI переписывать под iOS.

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

  • Использовать готовые инструменты вроде Replit, Cursor и так далее Когда я начал разработку, они ещё не были такими умными, как сейчас. Так что возможно следующую разработку я бы попробовал сделать на них.


Заключение и послесловие

Необычность истории, как мне кажется, в том, что всё приложение я сделал с помощью чатов Grok и Gemini, без использования комплексных инструментов вроде Replit, Cursor и Lovable, которые видят весь код и опираются на него.

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

Я не могу отнести себя к полноценному званию «разработчик». GIFTbase сейчас находится на ранней стадии и ещё предстоит много работы по улучшению, оптимизации и обеспечению безопасности.

Главную мысль, которую хотелось донести этим постом — программирование с помощью слов — реально. Ты можешь построить и понятный, красивый UI и работающий Backend. Главное, что важно — чтобы продукт приносил ценность. GIFTbase лично для меня это делает и я этим доволен.

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

Всё в руках людей с крутыми идеями и желанием их реализовать.


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

Комментарии (0)