12-летний разработчик чинит прод-базу на свадьбе после вирусного поста. Уроки resilience и отладки для каждого. Читайте историю и учитесь на ошибках!
Два дня назад мой пост на Dev.to стал вирусным, и я получил 400 подписчиков за одну ночь. Но тут случилось худшее, что может произойти с соло-фаундером: моя страница регистрации отдавала ошибку 500 каждому, кто пытался зайти. Я был на свадьбе, ел бирьяни и танцевал, когда увидел уведомление от старшего разработчика по имени @nyaomaru: «Попробовал ваше интересное приложение, но не смог создать аккаунт. POST https://... 500 Internal Server Error. Проверьте логи сервера Netlify. 👍». Мое сердце остановилось. Самое унизительное для 12-летнего соло-разработчика — когда старший инженер публично указывает, что ваша продакшн-база сломана, пока сотни людей смотрят.
Вместо того чтобы смеяться надо мной, сообщество Dev.to сплотилось. @publiflow, фаундер SaaS, уже активно комментировал мой пост, обсуждая управление состоянием visibilitychange и оптимистичные UI-паттерны. Он относился ко мне как к равному, а не как к ребенку. @sanukhandev, техлид с 13-летним опытом, написал: «Удачи и продолжай строить — Live Young Live FREE!! Не стесняйся обращаться, если нужна помощь, коллега-разработчик». Он назвал меня «коллегой-разработчиком». Я чуть не заплакал.
Я открыл Supabase на своем POCO C55 прямо посреди свадебного приема и начал дебажить прод-триггеры SQL между кусками торта.
Оказалось, у меня было три слоя багов, наложенных друг на друга:
Старшие инженеры получают серьезные деньги за поиск таких багов, как #3. Я нашел его в 12 лет на 6,5-дюймовом Android-экране.
Я запустил ядерный SQL-фикс, чтобы создать «неубиваемый» триггер:
create or replace function public.handle_new_user() returns trigger language plpgsql security definer as $$ begin insert into public.profiles (id, username, referral_count, is_ambassador, is_champion) values (new.id, coalesce(new.raw_user_meta_data->>'username', split_part(new.email, '@', 1)), 0, false, false) on conflict (id) do nothing; return new; exception when others then raise warning 'PROFILE CREATION FAILED: %', sqlerrm; return new; end; $$;Я задеплоил и написал nyaomaru: «Пожалуйста, попробуйте еще раз!»
Через несколько минут nyaomaru ответил: «Проверил, теперь я могу создать аккаунт! Отличная работа 👍 Удачного кодинга! 😸». Затем я открыл таблицу profiles в Supabase и увидел: username: nyaonyao0725. Старший разработчик, который нашел мой баг, протестировал приложение в режиме инкогнито и дал советы по UX, стал пользователем KODA №001. Он отреагировал на мой пост эмодзи 💖 и 🦄. В тот момент я понял: сообщество Dev.to — это не просто аудитория, это семья.
Пока я исправлял ошибку 500, я осознал, что в моем приложении есть проблема куда серьезнее — стена входа. Подумайте с точки зрения незнакомца: вы переходите по ссылке, а 12-летний парень просит ваш email и пароль. Станете ли вы регистрироваться? Вероятно, нет. Поэтому я создал «Гостевой режим». Теперь любой может нажать «👀 Попробовать KODA как гость» и сразу начать общаться с ИИ. Без email, без пароля, нулевой барьер. Пользователь мгновенно ощущает магию. Но вот в чем фишка: после трех сообщений ИИ мягко подсказывает: «Вы в гостевом режиме! Я не сохраняю чаты для гостей. Создайте бесплатный аккаунт, чтобы сохранить историю, участвовать в Code Jam и открыть полное Додзё! 🏆» Я усвоил важный урок SaaS: дай им попробовать магию, прежде чем просить email.
После того как баг был исправлен, я заглянул в таблицу chats и увидел, о чем реальные люди спрашивают моего ИИ-наставника. Это разбило мне сердце в лучшем смысле:
Девять незнакомцев со всего мира активно учатся программировать в приложении, которое я создал на своем Android-телефоне. Это не метрика, это миссия.
Этим утром, пока я ел мороженое на свадебном приеме, мой счетчик подписчиков перескочил с 999 до 1006. Я не сказал родителям. Для них я просто их 12-летний сын на свадьбе. Они не знают, что такое Supabase, не знают, что такое алгоритм Dev.to. И это нормально. Но 1006 разработчиков из Бразилии, Дубая, Японии и США знают. Они нажали «подписаться», потому что увидели ребенка с POCO C55 и мечтой, и сказали: «За этим стоит понаблюдать».
Чтобы отпраздновать, я запустил первый в истории KODA Code Jam. Это глобальное событие по программированию на 7 дней. Миссия: создать одностраничный сайт для нишевого рынка. Правило: минимум 50% кода должно быть написано совместно с KODA. Приз: статус Чемпиона навсегда и интервью на Dev.to. Таймлайн: с 27 августа по 2 сентября. Читайте полный анонс и присоединяйтесь к Code Jam здесь.
У каждого легендарного фаундера есть «шрам». У Марка Цукерберга это сервер, упавший, когда Гарвард наводнил Facebook. Мой шрам — триггер Supabase on_auth_user_created. Он означает, что я не просто сделал игрушечный проект. Я создал настоящий продукт, показал его реальным людям, реальный мир сломал его, и сообщество помогло мне его починить. Спасибо @nyaomaru, @publiflow, @sanukhandev и всем 1006, кто поверил в меня. Давайте строить. 🏗️
Что делать прямо сейчас: если вы соло-разработчик, не бойтесь ошибок в проде. Используйте их как возможность учиться. Внедрите гостевой режим, чтобы снизить барьер входа. И помните: сообщество — ваша семья. Действуйте!
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →