DEV Community

Я написал своё первое приложение в 17 лет. Вот что из этого вышло.

Мне было 17, когда я открыл Xcode в первый раз. До этого я делал сайты, ковырялся в Python и считал, что программирование — это когда текст в терминале бежит. А потом я увидел, как парень на YouTube за 20 минут собрал приложение с красивым интерфейсом, анимациями и кнопками, которые реально работают.

Я подумал: "Я тоже так хочу."

Это начало истории, в которой я потратил 4 месяца на приложение, которое скачали 23 человека. И знаете что? Я бы не поменял ни дня.

Идея, которая казалась гениальной

Как и все начинающие разработчики, я хотел сделать что-то "уникальное." Придумал приложение для трекинга привычек. Да, я знаю. Трекер привычек. Самая оригинальная идея в истории App Store.

Но в 17 лет мне казалось, что мой будет особенным. У него будет красивый дизайн (я ведь ещё и дизайнер!) и удобный интерфейс. Я даже придумал название — "AppРитм". Ритм жизни, ритм привычек, всё в тему.

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

Первая неделя: эйфория и StackOverflow

Первые три дня я летал. Создал проект, накидал экраны, подключил NavigationView (тогда ещё не было NavigationStack). Каждые 10 минут показывал маме: "Смотри, кнопка работает!"

На четвёртый день реальность ударила. Мне нужно было сохранять данные. Локально. На устройстве.

Я залез в документацию Apple по Core Data. Прочитал первые два абзаца. Закрыл вкладку. Залез на StackOverflow. Скопировал код. Не заработало. Нашёл другой ответ. Скопировал. Тоже не заработало. Третий ответ был для Objective-C. Пятый — для UIKit.

В итоге я просто сохранял данные в UserDefaults. Массив строк. Хардкор.

// Мой первый "код для хранения данных"
// Пожалуйста, не делайте так
UserDefaults.standard.set(habits, forKey: "myHabits")
Enter fullscreen mode Exit fullscreen mode

Это работало? Да. Это было правильно? Вообще нет. Но я этого не знал, и незнание — это счастье.

Месяц первый: дизайн vs реальность

В Figma мой дизайн выглядел потрясающе. Градиенты, скруглённые карточки, плавные анимации. Я потратил на макеты целую неделю.

Потом начал переносить это в SwiftUI.

Оказывается, тот градиент из Figma — это не просто "поставить gradient." Это LinearGradient с конкретными stops, в конкретном фрейме, который ведёт себя по-разному на разных размерах экранов. Анимация, которая в прототипе занимала 2 секунды, в реальности требовала понимания withAnimation, тайминговых кривых и состояний.

Мой дизайн из Figma:

  • 5 экранов
  • 12 кастомных компонентов
  • 3 анимации

Реальность через месяц:

  • 3 экрана (два я вырезал, потому что не смог реализовать)
  • 4 кастомных компонента (остальные заменил стандартными)
  • 1 анимация (.opacity — да, это считается)

Урок номер один: дизайн и разработка — это два разных мира. Рисовать можно что угодно. Реализовать — сильно меньше. Особенно когда ты учишься на ходу.

Месяц второй: баг, который чуть не убил проект

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

И тут я обнаружил Баг.

При перезагрузке приложения некоторые привычки дублировались. Иногда одна привычка превращалась в три. Иногда все исчезали. Помните UserDefaults? Вот оно.

Я боролся с этим багом две недели. ДВЕ НЕДЕЛИ. Я переписывал логику сохранения, добавлял проверки, ставил принты через каждые три строчки. В итоге проблема оказалась в том, что я сохранял данные в onAppear и в onDisappear одновременно, и при быстром переключении между экранами они конфликтовали.

Фикс занял 4 строчки кода. А поиск фикса — 30 часов.

Это был мой первый настоящий дебаг-сеанс. И я тогда понял: программирование — это не про написание кода. Это про починку того, что ты написал.

Месяц третий: App Store и бюрократия

Я закончил приложение (вернее, решил, что оно "достаточно готово") и решил его опубликовать. Зашёл в Apple Developer Program.

$99 в год.

Мне 17. У меня нет кредитной карты. У меня нет $99. У меня есть только Xcode и энтузиазм.

Пришлось просить маму. Она, конечно, спросила: "А это точно нужно?" Я уверенно ответил, что верну ей деньги через месяц. (Спойлер: не вернул через месяц.)

Регистрация заняла неделю. Создание сертификатов, профилей, App ID — это отдельный квест. В 2024 году Apple уже упростила процесс, но тогда я реально потерялся в их документации.

Потом — ревью. Apple Review Guidelines — это 180 страниц правил. Моё первое ревью вернули с замечанием: "Ваш скриншот показывает placeholder-контент." Я не заменил тестовые данные на скриншотах. Такие дела.

Второе ревью прошло. Приложение появилось в App Store. Я сделал скриншот и отправил всем друзьям.

Релиз: 23 скачивания и один отзыв

Первые три дня я проверял App Store Connect каждый час. Статистика загрузок обновляется не в реальном времени, и я этого не знал. Думал, что она просто показывает ноль.

Через неделю набралось 23 скачивания. Из них минимум 10 — это я сам и мои друзья. Ещё 5 — это, скорее всего, боты.

Один человек оставил отзыв: "Нормальное приложение, но зачем мне ещё один трекер привычек?" 3 звезды.

Честно? Этот отзыв убил мою мотивацию на два дня. Потом я перечитал его и понял, что чувак прав. Мой трекер ничем не отличался от 500 других трекеров в сторе. У меня не было уникальной фишки, не было маркетинга, не было аудитории.

23 скачивания. $0 дохода. -$99 за аккаунт разработчика. ROI: минус бесконечность.

Чему это меня научило

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

1. Начинай с маленького

Мой план был "5 экранов, 12 компонентов, 3 анимации." Надо было начать с одного экрана и одной функции: добавить привычку и отметить выполнение. Всё. MVP из учебника.

Сейчас, когда я начинаю новый проект, я спрашиваю себя: "Какая одна вещь должна работать, чтобы это имело смысл?" И делаю только её.

2. Не трать месяц на дизайн

Дизайн важен. Но не на первом этапе. Сначала сделай работающую штуку. Потом наведи красоту. Обратный порядок — ловушка для перфекционистов. Я знаю, потому что сам перфекционист.

3. Читай документацию (хотя бы начало)

Если бы я потратил час на чтение документации по Core Data вместо того, чтобы два дня гуглить ответы на StackOverflow, я бы сэкономил кучу времени. Документация Apple не самая дружелюбная, но она полная и точная.

4. Маркетинг > код

23 скачивания — это не провал кода. Это провал маркетинга. Приложение работало нормально. Но о нём никто не знал. Можно написать идеальный код, но если никто не видит твой продукт — какая разница?

Сейчас я начинаю рассказывать о проекте ещё до того, как напишу первую строчку кода. Посты в Telegram, статьи на Dev.to, треды в Twitter. Аудитория строится параллельно с продуктом.

5. Шип. Просто шип.

Самое главное, что я вынес из этого опыта: я отправил приложение в мир. Неидеальное. С багами. С UserDefaults вместо базы данных. С одной анимацией вместо трёх.

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

Shipped is better than perfect. Это клише, но это правда.

Что стало с приложением

Честно? Оно до сих пор в App Store. Я обновлял его пару раз — поправил критический баг и обновил дизайн под iOS 17. Скачиваний по-прежнему мало. Но мне уже не стыдно за него.

Оно стало моим первым пунктом в портфолио. На собеседованиях я рассказывал: "Я сделал приложение и опубликовал его в App Store." И людей впечатляло не приложение, а факт, что я довёл проект до конца в 17 лет.

Сейчас я работаю с SwiftUI на совсем другом уровне. Знаю SwiftData, Combine, async/await, тестирование. Но всё это началось с того кривого трекера привычек и UserDefaults.

Каждый эксперт когда-то был новичком, который просто не бросил. Банально, но факт.

Если вы думаете написать своё первое приложение

Вот мой совет: не думайте. Откройте Xcode. Создайте проект. Напишите хоть что-нибудь.

Оно будет кривым. Оно будет с багами. Кто-то оставит вам три звезды с комментарием "зачем мне ещё один трекер привычек."

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


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

Top comments (0)