G
Gustav
Команда форума
Администратор
- Сообщения
- 26.406
- Лайки
- 51.216
Кейс из России: Как за 3 месяца стать iOS-разработчиком и попасть в топ App Store
Не так давно моё первое приложение «Тело в лето» влетело в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.
За полтора месяца публикации его скачали 5 тысяч раз, и на протяжении всего этого времени оно остается в подборке «Игры и приложения по 15 рублей» от Apple.
Как это возможно? Вы часто видите заголовки вроде «Если вы хотите научиться программировать, будьте готовы потратить на это 10 лет своей жизни». И да, в этом есть доля правды.
Дело лишь в том, что за 10 лет вы не просто научитесь программировать, а станете настоящим профессионалом в этом деле, который способен как гуру отвечать на StackoverFlow.
На деле же вы можете начать создавать простые приложения уже через 2-3 месяца в зависимости от вашей усидчивости, упорства и мозга. Всё должно начинаться с идеи, которая вас зажигает.
Итак, я полез в дебри программирования.
Шаг первый. Зарождение идеи
Не буду скрывать, что кое-какой опыт в работе над проектами у меня был. Тут можно вспомнить и о проектах в сфере дизайна, и об агентстве рекламы в Twitter twiPR, которое мы запустили три года тому назад (и которое вскоре закрылось), и о многом другом.
В общем, навык запуска и вывода проектов в свет уже был прокачан, пускай и на начальном уровне. Но движение конкретно в сторону разработки приложений началось с колонки Степана Светлого о приложении «Мотивация дня».
После прочтения меня посетила интересная мысль: в отличии от веба, в App Store действуют другие правила.
Вам не обязательно создавать что-то новое если вы хотите, чтобы приложение покупали. Например, если вы давно регулярно заглядываете в App Store, то явно могли заметить – есть сезонные категории приложений.
Приложения с тренировками становятся актуальными каждую весну, но каждую весну сами приложения сменяют друг друга. И их всё равно покупают.
Шаг второй. Ищем, как будем учиться
Как я говорил, мой опыт в программировании под iOS был равен «0». Поэтому – вначале был Google. Вообще, если вы хотите назвать себя разработчиком (вас очень не будут любить за это «нормальные» разработчики, но это вы поймете позже), вам придется научиться получать информацию не от преподавателя.
Вы будете находить десятки и сотни строк кода на самых различных ресурсах, и да, в большинстве случаев никто не описывает «как эта штука работает». Поэтому будьте готовы разбираться во всем сами.
Пробежавшись по ссылкам в поисковой выдаче реально найти один сайт, предлагающий видеоуроки по Swift. Этот язык в три раза труднее HTML. Для тех, кто не знает HTML, перефразирую — Swift выучить чуть легче, чем научиться играть в пинг-понг.
Возможно, он будет сложен вам на старте, когда только предстоит понять, по каким принципам он работает. Дальше — все трудности описывает фраза: «Я знаю, как это должно происходить программно, но я не знаю, как это написать». Тут вас спасёт уже упомянутый Google.
Касательно поиска – большинство кода, который вы будете находить, будет написано на Objective-C. Это потому, что Swift — относительно молодой язык, а до него весь App Store был в приложениях, написанных на Objective-C. Сейчас в магазине приложений доступно около 2 млн приложений, и только 100 тысяч из них написаны на Swift. Это лишь 5%.
Из этого можно сделать предположение что 95% всей информации по iOS-разработке, что вы найдете, — вам не подходит. Но. На этот случай есть крутой
Для тех, кого сейчас посетила мысль «А почему бы не учить Objective-C вместо Swift?» — ответьте себе на вопрос: хотите ли вы писать быстро и понятно, или иметь большее количество информации и примеров, но с непонятным синтаксисом и c огромным количеством знаков препинания? То-то же. Поэтому выбирайте Swift.
Шаг третий. Создаем идею и основу приложения
Первые клики по коду были чертовски нелепы и важно то, что это были именно клики. В глубине мозга я отлично понимал: программирование подразумевает то, что нужно писать.
Но, чёрт побери, я предпочел разобраться в Xcode исконно русским методом — «тык-тык». Не вышло. Позже я, как человек, который быстро учится на ошибках, перешел к изучению уроков. И начал писать приложение для изучения ПДД. Идея была в том, чтобы не создавать идею. А взять популярную, и воплотить её чуть более круто, чем она представлена сейчас.
Это продолжалось примерно полторы недели. Тогда же я столкнулся кучей вопросов. Как я и писал, ответы на них очень сложно найти в варианте под Swift. Кроме того, я понял, что выбрал слишком неподъёмную для новичка сферу с точки зрения объёма — ПДД. А ведь это теория, тесты на время, игра, в которой даются случайные вопросы до трёх ошибок. Стало очевидным: я буду делать это приложение до конца лета. Слишком долго.
И тут в голову пришла идея №2 — приложение для ежедневных тренировок. В App Store есть тысячи аналогов, но вот что интересно: в топе висят висят простейшие приложения с кнопочкой «Старт». Жмёшь и видишь, что и сколько тебе нужно сделать. Всё.
Почему приложения от Nike и подобные, которые обходят конкурентов по функциональности, не висят в топе? Идея проста, а реализация — слишком сложная.
Так я и решил делать простое со всех сторон приложение, которое будет помогать людям с зарядкой.
Шаг четвертый. Рисуем «вкусную» обложку
На этапе проектирования «оболочки» приложения в голову пришёл отрывок из книги «Дизайн-мышление в бизнесе» Тима Брауна, где описывается ситуация с покупкой велосипеда.
В нём дизайнеры осознали: люди просто хотят взять удобный велосипед для катания, а не слушать нытьё продавца консультанта о суперсовременном техническом решении и прелестях его внешнего вида. На том и решил: дизайн будет максимально простым и понятным.
Как я уже говорил, у меня заранее был навык «склепать интерфейс за час». Навык был применён успешно. Если интересно — использовал Sketch 3 в противовес продукту от Adobe, который считаю слишком перегруженным.
В дополнение к интерфейсу заказал у иллюстратора-фрилансера картинки с упражнениями. Техническое задание звучало так: хочу видеть обычного парня на зарядке, а не накачанный стереотип в обтягивающей майке с торчащими сосками.
Шаг пятый. Программируем
Когда вы начнете, вам предстоит разобраться с функцией AutoLayot (это что-то из разряда «программирования мышкой»). Она позволяет сделать так, чтобы одна надпись находилась на одном месте на разных поколениях iPhone и iPad.
Я не нашел стоящих уроков по AutoLayot, а во всех примерах на YouTube его применяют как-то вскользь. Искренне желаю вам удачи и стрессоустойчивости, чтобы не удалить всё связанное с программированием к чертовой матери на этом этапе.
К слову, у меня с этой функцией сразу не сложилось, и я включил её за два дня до конца работы над приложением. Это были два самых скучных дня за всю разработку, потому что они состояли из одной и той же последовательности итераций: «пробуем — смотрим — работает? — повторить».
Отдельного внимания заслуживает момент, когда вам нужно будет заставить какой-то элемент двигаться (например, по нажатию кнопки). Чтобы облегчить будущим разработчикам жизнь, я пишу одну техническую подробность: господа, я тоже пытался двигать View при включенном AutoLayot, и это была ошибкой. Нужно менять Constraint. Потом поймёте, что всё это значит.
Еще один важный совет: в Xcode есть песочница — Xcode Playground. Вы, конечно, можете залезть туда, но я настоятельно не советую: копаясь в ней, можно быстро потерять мотивацию, потому что вы ничего не создаете.
Я сторонник мнения, что человек должен видеть результат своих трудов при обучении, а песочница — это обучение ради обучения. Но есть и хорошая сторона — в песочнице вы сможете познакомиться со Swift в вакууме. Хотя, опять-же, по моему опыту, вам пригодится UIKit, CoreData – и сложность будет в них.
Swift же учится по ходу, и в своем большинстве представляет из себя простой английский — даже не уча Swift можно понять, что сделает строчкаprefersStatusBarHidden() -> Bool { return true }.
Итак, я посчитал, что на мой проект у меня должно уйти два дня. Но не тут-то было! Первым был главный экран, и на него ушло 4 часа. Затем я перешел к самому важному — тренировкам.
Если бы я сейчас писал на узкоспециализированный технический блог, люди бы от души посмеялись над первым вариантом кода. Но оставим это для технических блогов. Скажу лишь то, что только на одни тренировки у меня ушла неделя.
Затем пошли всякие обзоры и описания упражнений, и, наконец — встроенные покупки и настройки (приложение напоминает вам о тренировке в назначенное время).
Как итог: на разработку приложения ушел месяц.
Шаг шестой. App Store Review
Первая попытка отправить приложение на проверку была сразу после того, как я запустил его на своем телефоне и всё проверил. Вполне ожидаемо, я получил отказ. Оказалось, что в моем приложении нет кнопки «Восстановить покупки».
Ок, попытка номер два: добавляем «Восстановить покупки» и отправляем приложение. Снова отказ. Оказывается, в первый раз я проглядел еще и претензию к скриншотам приложения, которые создают «ложные ассоциации с продуктами Apple». На форуме мне посоветовали почитать гайдлайны, в которых я ничего не нашел — либо потому, что плохо искал, либо там действительно ничего нет.
Еще мне скинули скриншот, который создаёт эти ложные ассоциации. Это был экран блокировки.
Слева экран с ложными ассоциациями, справа — сделанный прямо с моего телефона (который приняли)
Изменил скриншоты по образу и подобию тех, что в других приложениях. Убрал название оператора, добавил сигнал и значок Wi-Fi. Угадаете, что было дальше? Отказ.
Пройти, наконец, это Review мне помог уже упомянутый Степан Светлый, который сказал: «Скриншот должен быть именно таким, каким он был бы на реальном девайсе». Возвращаем оператора, добавляем сигнал, Wi-Fi и значок камеры вниз. Отправляем. О, чудо. На утро мне приходит заветное уведомление «Приложение ожидает выпуска разработчиком».
Тут стоит упомянуть один интересный лайфхак: приложение прошло четыре проверки за пять дней, а средний срок проверки приложений, как я понял – неделя или две. Хотите также? Пишите специальную просьбу быстро проверить приложение в Apple.
Итоги
Время
От начала до конца ушло два с чем-то месяца, и если бы периодически меня не заставал «паралич» воли, всё получилось бы несколько быстрее.
Вложения
1 тысяча рублей – подписка на уроки по Swift, 10 тысяч — на все иллюстрации и столько же на вывод приложения в топ App Store с помощью мотивированных закачек.
Показатели
5 тысяч скачиваний за месяц, и больше 1000 долларов «чистыми» за вычетом комиссии и налогов. Средняя оценка — 4,5 балла (причём, это уже вторая версия приложения). Попадание в топ-1 категории «Здоровье и фитнес» и топ-3 отечественного App Store по платным приложениям.
По факту, приложение полностью окупило все вложения и вышло на прибыль уже в первую неделю после публикации.
Планы
План остался прежним — делать простые и актуальные на все времена приложения. Кроме того, есть идея разработки игры. Для которой, кстати, сейчас ищу художника-иллюстратора с опытом в сфере.
Не так давно моё первое приложение «Тело в лето» влетело в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.
За полтора месяца публикации его скачали 5 тысяч раз, и на протяжении всего этого времени оно остается в подборке «Игры и приложения по 15 рублей» от Apple.
Как это возможно? Вы часто видите заголовки вроде «Если вы хотите научиться программировать, будьте готовы потратить на это 10 лет своей жизни». И да, в этом есть доля правды.
Дело лишь в том, что за 10 лет вы не просто научитесь программировать, а станете настоящим профессионалом в этом деле, который способен как гуру отвечать на StackoverFlow.
На деле же вы можете начать создавать простые приложения уже через 2-3 месяца в зависимости от вашей усидчивости, упорства и мозга. Всё должно начинаться с идеи, которая вас зажигает.
Итак, я полез в дебри программирования.
Шаг первый. Зарождение идеи
Не буду скрывать, что кое-какой опыт в работе над проектами у меня был. Тут можно вспомнить и о проектах в сфере дизайна, и об агентстве рекламы в Twitter twiPR, которое мы запустили три года тому назад (и которое вскоре закрылось), и о многом другом.
В общем, навык запуска и вывода проектов в свет уже был прокачан, пускай и на начальном уровне. Но движение конкретно в сторону разработки приложений началось с колонки Степана Светлого о приложении «Мотивация дня».
После прочтения меня посетила интересная мысль: в отличии от веба, в App Store действуют другие правила.
Вам не обязательно создавать что-то новое если вы хотите, чтобы приложение покупали. Например, если вы давно регулярно заглядываете в App Store, то явно могли заметить – есть сезонные категории приложений.
Приложения с тренировками становятся актуальными каждую весну, но каждую весну сами приложения сменяют друг друга. И их всё равно покупают.
Шаг второй. Ищем, как будем учиться
Как я говорил, мой опыт в программировании под iOS был равен «0». Поэтому – вначале был Google. Вообще, если вы хотите назвать себя разработчиком (вас очень не будут любить за это «нормальные» разработчики, но это вы поймете позже), вам придется научиться получать информацию не от преподавателя.
Вы будете находить десятки и сотни строк кода на самых различных ресурсах, и да, в большинстве случаев никто не описывает «как эта штука работает». Поэтому будьте готовы разбираться во всем сами.
Пробежавшись по ссылкам в поисковой выдаче реально найти один сайт, предлагающий видеоуроки по Swift. Этот язык в три раза труднее HTML. Для тех, кто не знает HTML, перефразирую — Swift выучить чуть легче, чем научиться играть в пинг-понг.
Возможно, он будет сложен вам на старте, когда только предстоит понять, по каким принципам он работает. Дальше — все трудности описывает фраза: «Я знаю, как это должно происходить программно, но я не знаю, как это написать». Тут вас спасёт уже упомянутый Google.
Касательно поиска – большинство кода, который вы будете находить, будет написано на Objective-C. Это потому, что Swift — относительно молодой язык, а до него весь App Store был в приложениях, написанных на Objective-C. Сейчас в магазине приложений доступно около 2 млн приложений, и только 100 тысяч из них написаны на Swift. Это лишь 5%.
Из этого можно сделать предположение что 95% всей информации по iOS-разработке, что вы найдете, — вам не подходит. Но. На этот случай есть крутой
Вам необходимо зрегистрироваться для просмотра ссылок
.Для тех, кого сейчас посетила мысль «А почему бы не учить Objective-C вместо Swift?» — ответьте себе на вопрос: хотите ли вы писать быстро и понятно, или иметь большее количество информации и примеров, но с непонятным синтаксисом и c огромным количеством знаков препинания? То-то же. Поэтому выбирайте Swift.
Шаг третий. Создаем идею и основу приложения
Первые клики по коду были чертовски нелепы и важно то, что это были именно клики. В глубине мозга я отлично понимал: программирование подразумевает то, что нужно писать.
Но, чёрт побери, я предпочел разобраться в Xcode исконно русским методом — «тык-тык». Не вышло. Позже я, как человек, который быстро учится на ошибках, перешел к изучению уроков. И начал писать приложение для изучения ПДД. Идея была в том, чтобы не создавать идею. А взять популярную, и воплотить её чуть более круто, чем она представлена сейчас.
Это продолжалось примерно полторы недели. Тогда же я столкнулся кучей вопросов. Как я и писал, ответы на них очень сложно найти в варианте под Swift. Кроме того, я понял, что выбрал слишком неподъёмную для новичка сферу с точки зрения объёма — ПДД. А ведь это теория, тесты на время, игра, в которой даются случайные вопросы до трёх ошибок. Стало очевидным: я буду делать это приложение до конца лета. Слишком долго.
И тут в голову пришла идея №2 — приложение для ежедневных тренировок. В App Store есть тысячи аналогов, но вот что интересно: в топе висят висят простейшие приложения с кнопочкой «Старт». Жмёшь и видишь, что и сколько тебе нужно сделать. Всё.
Почему приложения от Nike и подобные, которые обходят конкурентов по функциональности, не висят в топе? Идея проста, а реализация — слишком сложная.
Так я и решил делать простое со всех сторон приложение, которое будет помогать людям с зарядкой.
Шаг четвертый. Рисуем «вкусную» обложку
На этапе проектирования «оболочки» приложения в голову пришёл отрывок из книги «Дизайн-мышление в бизнесе» Тима Брауна, где описывается ситуация с покупкой велосипеда.
В нём дизайнеры осознали: люди просто хотят взять удобный велосипед для катания, а не слушать нытьё продавца консультанта о суперсовременном техническом решении и прелестях его внешнего вида. На том и решил: дизайн будет максимально простым и понятным.
Как я уже говорил, у меня заранее был навык «склепать интерфейс за час». Навык был применён успешно. Если интересно — использовал Sketch 3 в противовес продукту от Adobe, который считаю слишком перегруженным.
В дополнение к интерфейсу заказал у иллюстратора-фрилансера картинки с упражнениями. Техническое задание звучало так: хочу видеть обычного парня на зарядке, а не накачанный стереотип в обтягивающей майке с торчащими сосками.
Шаг пятый. Программируем
Когда вы начнете, вам предстоит разобраться с функцией AutoLayot (это что-то из разряда «программирования мышкой»). Она позволяет сделать так, чтобы одна надпись находилась на одном месте на разных поколениях iPhone и iPad.
Я не нашел стоящих уроков по AutoLayot, а во всех примерах на YouTube его применяют как-то вскользь. Искренне желаю вам удачи и стрессоустойчивости, чтобы не удалить всё связанное с программированием к чертовой матери на этом этапе.
К слову, у меня с этой функцией сразу не сложилось, и я включил её за два дня до конца работы над приложением. Это были два самых скучных дня за всю разработку, потому что они состояли из одной и той же последовательности итераций: «пробуем — смотрим — работает? — повторить».
Отдельного внимания заслуживает момент, когда вам нужно будет заставить какой-то элемент двигаться (например, по нажатию кнопки). Чтобы облегчить будущим разработчикам жизнь, я пишу одну техническую подробность: господа, я тоже пытался двигать View при включенном AutoLayot, и это была ошибкой. Нужно менять Constraint. Потом поймёте, что всё это значит.
Еще один важный совет: в Xcode есть песочница — Xcode Playground. Вы, конечно, можете залезть туда, но я настоятельно не советую: копаясь в ней, можно быстро потерять мотивацию, потому что вы ничего не создаете.
Я сторонник мнения, что человек должен видеть результат своих трудов при обучении, а песочница — это обучение ради обучения. Но есть и хорошая сторона — в песочнице вы сможете познакомиться со Swift в вакууме. Хотя, опять-же, по моему опыту, вам пригодится UIKit, CoreData – и сложность будет в них.
Swift же учится по ходу, и в своем большинстве представляет из себя простой английский — даже не уча Swift можно понять, что сделает строчкаprefersStatusBarHidden() -> Bool { return true }.
Итак, я посчитал, что на мой проект у меня должно уйти два дня. Но не тут-то было! Первым был главный экран, и на него ушло 4 часа. Затем я перешел к самому важному — тренировкам.
Если бы я сейчас писал на узкоспециализированный технический блог, люди бы от души посмеялись над первым вариантом кода. Но оставим это для технических блогов. Скажу лишь то, что только на одни тренировки у меня ушла неделя.
Затем пошли всякие обзоры и описания упражнений, и, наконец — встроенные покупки и настройки (приложение напоминает вам о тренировке в назначенное время).
Как итог: на разработку приложения ушел месяц.
Шаг шестой. App Store Review
Первая попытка отправить приложение на проверку была сразу после того, как я запустил его на своем телефоне и всё проверил. Вполне ожидаемо, я получил отказ. Оказалось, что в моем приложении нет кнопки «Восстановить покупки».
Ок, попытка номер два: добавляем «Восстановить покупки» и отправляем приложение. Снова отказ. Оказывается, в первый раз я проглядел еще и претензию к скриншотам приложения, которые создают «ложные ассоциации с продуктами Apple». На форуме мне посоветовали почитать гайдлайны, в которых я ничего не нашел — либо потому, что плохо искал, либо там действительно ничего нет.
Еще мне скинули скриншот, который создаёт эти ложные ассоциации. Это был экран блокировки.
Слева экран с ложными ассоциациями, справа — сделанный прямо с моего телефона (который приняли)
Изменил скриншоты по образу и подобию тех, что в других приложениях. Убрал название оператора, добавил сигнал и значок Wi-Fi. Угадаете, что было дальше? Отказ.
Пройти, наконец, это Review мне помог уже упомянутый Степан Светлый, который сказал: «Скриншот должен быть именно таким, каким он был бы на реальном девайсе». Возвращаем оператора, добавляем сигнал, Wi-Fi и значок камеры вниз. Отправляем. О, чудо. На утро мне приходит заветное уведомление «Приложение ожидает выпуска разработчиком».
Тут стоит упомянуть один интересный лайфхак: приложение прошло четыре проверки за пять дней, а средний срок проверки приложений, как я понял – неделя или две. Хотите также? Пишите специальную просьбу быстро проверить приложение в Apple.
Вам необходимо зрегистрироваться для просмотра ссылок
просьбы так далеко спрятана на сайте скорее всего для того, чтобы ей пользовалось меньше разработчиков. Причиной просьбы выбираем Time-Sensitive Event и пишем, что «у нас, вообще-то, уже началась запланированная рекламная компания, и мы тут деньги теряем!». Если вы отправляете не новое приложение, а обновляете старое — советую писать, что исправили критический баг и не хотите, чтобы люди его видели.Итоги
Время
От начала до конца ушло два с чем-то месяца, и если бы периодически меня не заставал «паралич» воли, всё получилось бы несколько быстрее.
Вложения
1 тысяча рублей – подписка на уроки по Swift, 10 тысяч — на все иллюстрации и столько же на вывод приложения в топ App Store с помощью мотивированных закачек.
Показатели
5 тысяч скачиваний за месяц, и больше 1000 долларов «чистыми» за вычетом комиссии и налогов. Средняя оценка — 4,5 балла (причём, это уже вторая версия приложения). Попадание в топ-1 категории «Здоровье и фитнес» и топ-3 отечественного App Store по платным приложениям.
По факту, приложение полностью окупило все вложения и вышло на прибыль уже в первую неделю после публикации.
Планы
План остался прежним — делать простые и актуальные на все времена приложения. Кроме того, есть идея разработки игры. Для которой, кстати, сейчас ищу художника-иллюстратора с опытом в сфере.