Сьогодні я запустив свій перший мобільний додаток. Ось що я дізнався

Нещодавно я пишу чудовий твір про Medium, ділячись цінними знаннями про розробку та розробку, отриманими завдяки роботі над своїм першим додатком Crypto Price Tracker, який я щойно запустив сьогодні, 28 січня.

Я хотів поділитися своєю історією роботи над цим додатком з самого початку і до сьогодні. Я сподіваюся, що ця публікація допоможе та надихне інших молодих програмістів (або насправді тих, хто зацікавлений у виробництві технічних продуктів!) Придбати цінні технічні навички, визначити потреби ринку, створити чудові продукти зі своїми навичками, які вирішують ці потреби ринку.

Трохи довідки про мене: мені 16-річний дошкільник. Я вивчаю цифровий дизайн та програмування з 13 років. Я була наймолодшою ​​практикою в Salesforce в Бангалорі взимку 2016 року.

Влітку 2017 року я відвідав літню програму MIT Launch, де ми з командою запустили Universeaty. Тоді я вперше спробував свої сили в додатках для iOS і полюбив, наскільки швидше було створювати матеріальні продукти та бачити результати своєї роботи під час створення мобільних додатків. Донести мої ідеї до програмного забезпечення було набагато простіше і веселіше!

Я почав вивчати розробку додатків Swift та iOS з онлайн-курсів на Treehouse, Udemy, переглядав відео на YouTube і практикував створення основних програм. Це заклало мої основи програмування. Я почав створювати більш серйозні та складні програми після кількох тижнів навчання та практики.

Приблизно 20 листопада 2017 року я вирішив, що хочу працювати над додатком для відстеження цін на криптовалюти, попереджень та управління портфелем. Я поділився тут трохи історією про свою мотивацію. Нещодавно я зрозумів, що ділитися своєю історією та деякими уроками, які я засвоїв під час своєї подорожі, справді корисно для інших!

Починаємо

Почати було важко: невизначеність, невідомі невідомі речі, речі, про які слід подумати, і рішення, які потрібно прийняти. Не знаєте, з чого почати і з чого. Але я знав, що моїм першим кроком було проведення досліджень ринку, щоб точно знати, чого хоче моя цільова аудиторія - особливості, дизайн і майже все, що я буду будувати в додатку.

Я розмістив повідомлення на Reddit, у групах Facebook, Quora і попросив кількох друзів, які інвестували та цікавляться криптовалютами. Я отримав добрий відгук про цю ідею і був набагато просвіченішим щодо потреб моїх цільових користувачів.

Наступним кроком було проектування програми. Я розпочав із малювання діаграм користувальницьких потоків та каркасів. Потім я перейшов до використання дизайнерського програмного забезпечення для створення макетів та прототипу. Я написав іншу історію про розробку мобільних додатків з нуля і поділився фотографіями всіх етапів проектування програми Crypto Price Tracker.

І кінцевим результатом цього процесу було наступне:

Розробка Crypto Price Tracker

Я дуже боявся досягти цього етапу, оскільки я був (і досі є) початківцем програмування. Я не знав багато Swift і не мав уявлення, як налаштувати сервер для сповіщень, серед багатьох інших технічних перешкод. У мене було так багато речей, щоб зробити для програми невеликі технічні навички. Але я був впевнений, що можу розібратися в речах і навчитися по дорозі, будуючи кожну функцію. І, заднім числом, я можу сказати, що зробив :)

Я почав з імпорту всіх дизайнів у Xcode та встановлення необробленої збірки для кожного екрану. Я розподілив свою роботу з кодування на основі функцій, які мені потрібні в програмі. Досить декілька разів мені доводилося стирати речі зі своїх специфікацій (і редагувати дизайни), оскільки вони здавалися трудомісткими для розробки (особливо якщо здавалося, що вони пропонують мало функціональних можливостей).

Я написав мережевий код для відображення даних API, якими я користувався, і створив основний інтерфейс мого додатка. Потім я перейшов до функції "Список бажань" програми. Тепер, щоб локально зберігати дані в телефоні користувача, вам потрібно створити моделі основних даних - те, з чим я ніколи раніше не працював. І з’явилося більше технічних прогалин та проблем.

Але я продовжував вчитися. Коли мені щось потрібно було, я гуглював. Зазвичай майже для всього існували корисні відповіді, фрагменти коду або відео-підручники. Кожного разу, коли я застрягав, я просив StackOverflow або надсилати електронною поштою своїх наставників за допомогою. Повільно мені стало набагато зручніше стрибати у невідоме.

Наприкінці трьох тижнів, які я витратив на кодування програми, я значно вдосконалився як програміст. Я вивчив поняття і фактично потренувався, створивши справжній додаток. Я працював із низкою цікавих технологій iOS, бібліотеками та фреймворками.

Мені ще потрібно багато вдосконалитися як розробнику. Мій додаток іноді завантажується повільно. Це не найоптимізованіший чи найшвидший додаток. Але я все ще дуже радий, що зміг створити щось корисне та цінне.

Наступним кроком, який я запланував, було локалізувати свій додаток 10 мовами. Я думав, що це легко, оскільки мій додаток не важкий для тексту. Хлопче, я помилився! Локалізація - це дуже трудомісткий процес для додатків. Я пишу окрему історію, щоб пояснити, як локалізувати технічно.

Наприкінці 8 тижнів (з дня, коли я розпочав дослідження ринку), я повністю розробив і розробив додаток, який показував у реальному часі ціни понад 1000+ криптовалют з 18 бірж у 32 фіатних валютах. Були графіки цін (відображали історичні ціни за 1 день, 1 тиждень, 1 місяць, 3 місяці та 1 рік), управління портфелем, попередження на основі часу та порогових значень. Він був локалізований 10 мовами. Я також оптимізував свій додаток для iPhone X.

Після того, як моя збірка була готова, наступним кроком було запрошення користувачів для тестування та надання відгуків про програму.

Тестування та подання програми

Я дуже пишався своїм додатком і був дуже радий викласти його там на TestFlight і запросити всіх своїх друзів та користувачів протестувати! Після довгого очікування двох днів огляд бета-версії додатка був остаточно затверджений. Я запросив своїх друзів протестувати, і їм сподобався додаток. Усі вони поділились відгуками, ідеями щодо функцій, які потрібно мати в майбутніх оновленнях, та багато іншого. У додатку було нульових збоїв!

Збірка v1.0 була готова до подання. Мої 100 знімків екрану (5 знімків екрану для iPhone 5,5 дюйма та 5 для iPhone 5,8 дюйма для кожної мови) були готові, мої метадані також були локалізовані, і моє попереднє перегляд відео було зроблено.

Під час завантаження попереднього перегляду відео було кілька несподіваних проблем, оскільки кількість кадрів в секунду (кадрів в секунду) була занадто високою. До цього моменту я вирішив прийняти несподівані виклики і зміг ефективно їх вирішити. Я зміг закінчити все і вчасно подати програму на розгляд.

Через два дні, о 4 ранку, я отримав електронний лист про відмову.

Це мене надзвичайно хвилювало. Стільки думок пробігало мені в голові, перш ніж я прочитав причини відмови. Apple відхилила додаток, оскільки дизайн не виглядав добре при перегляді на iPad. Я не мав уявлення, що додатки, призначені лише для iPhone, також повинні бути сумісними з iPad. Протягом наступних кількох годин я прочитав деякі посібники та виправив усі обмеження та проблеми з автоматичним макетом, протестував програму на симуляторі iPad, і вона спрацювала. Я знову подав збірку на перевірку.

Через день я нарешті отримав схвалення! Це було полегшенням, і тепер я міг зосередитися на продукті. Я отримав масу відгуків та помилок, повідомлених від тестувальників. Я зробив ці невеликі виправлення помилок і кілька редагувань перекладів, і завантажив остаточну збірку. Його затвердили лише за 12 годин! Зараз мій додаток став набагато кращим, і я радий, що багато людей тестували його та повідомляли про помилки, які в іншому випадку могли б потрапити в огляди додатків злими клієнтами.

За кілька днів до запуску я зібрав цю історію із зроблених заміток та свого щоденника, щоб поділитися уроками з усіма.

Деякі уроки, які я вивчив

  1. Локалізація - чудова ідея. До цього часу я шкодував про своє рішення локалізувати свій додаток 10 мовами. Я написав декілька відповідей на Quora про те, як це було найбільш трудомістким процесом, який я зробив для свого додатка, і я б не радив жодному інді-розробнику, який не має бюджету, віддавати сторонніх організацій на локалізацію. Але зараз моя думка змінилася. Локалізація вашого додатка на 10–12 мовах за допомогою Google Translate і наявність коректури друзів - це чудовий спосіб охопити більшу аудиторію для вашого додатка. Apple також більше любить локалізовані програми. Ви не завжди можете отримати все правильно і всі можливі рядки локалізовані. Але ви можете отримати 80% результатів (тобто перекладений текст), отримавши 20% роботи.
  2. Люди набагато охочіші вам допомогти, ніж ви думаєте. Я дуже вдячний, що маю низку друзів та наставників, які мені дуже допомогли у цій подорожі. Але я просто був здивований, як стільки незнайомих людей відгукнулися на мене, коли я звернувся до них і допоміг мені. На самому початку моєї подорожі, коли у мене був лише невеликий прототип основного інтерфейсу мого додатка, я звернувся до Карли Уайт після того, як прочитав її дивовижну книгу. Вона вчила мене та допомагала порадами щодо програми. Оскільки я локалізував свій додаток, мені потрібні були коректори для кожної мови, щоб переконатися, що переклади (зроблені за допомогою Google Translate) є якісними та мають конкретний контекст. Паскаль прокоментував мою історію на Medium, пропонуючи свою допомогу з перекладами німецькою мовою. Я зв’язався з ним і за дуже короткий термін він справді відредагував мої німецькі переклади!І ще багато зовсім незнайомих людей запропонували свою допомогу.

    Одним із важливих ключових висновків із цього буде: люди готові вам допомогти. Зверніться до них, будьте щирими, і вони допоможуть вам, чим можуть! : D

  3. Відгуки користувачів на ранніх етапах надзвичайно важливі. Не тільки добрі слова ваших шанувальників чи віруючих мотивують вас, але багато ваших ранніх користувачів дадуть вам ідеї щодо функцій, вдосконалення дизайну та набагато більш цінних відгуків. Однією з помилок, яку я допустив, було тестування дуже пізно. Я завантажив свою збірку для тестування TestFlight лише ~ за 1 тиждень до запланованого запуску, коли додаток був майже готовий, і я не зміг внести серйозних змін. Якби я попросив своїх користувачів розпочати тестування кілька тижнів тому, коли у мене був лише основний інтерфейс, я б отримав багато відгуків та покращив би його. І повторював, що для кожної основної функції мій додаток був би набагато кращим. Досить багато тестерів згадували речі, які можна було б виправити за 2-3 дні, якби я раніше відправляв збірку на тестування. Тож моя порада усім буде такою:Отримайте свій додаток в руках своїх користувачів і попросіть його тестувати його якомога швидше та отримати відгук!

Деякі корисні інструменти, якими я користувався

  1. AppLaunchPad для швидшого створення декількох наборів скріншотів (для багатьох локалізацій).
  2. Какаоподи. SwiftyJSON та Alamofire для написання кращого мережевого коду, діаграми для створення графіків цін. Існує кокапод майже для всього!
  3. Firebase для сервера push-сповіщень та сервера кешування для зберігання цін кожні 5 хвилин для оновлення графіків цін.
  4. Два API для цін: cryptowatch і CoinCap. Цей API для курсів валют для конвертації.

Приємно відчути можливість поділитися отриманими уроками та своєю подорожжю з великою аудиторією. Я сподіваюся, що це служить натхненням для інших людей спробувати вивчити програмування та створювати програми або щось, що їх цікавить. Я особисто почну вивчати ML та науку даних після мого додатка - так що не будьте боїться експериментувати з різними сферами! Спробуйте щось складне і щось, від чого вам стає незручно. Найважче зробити, як правило, найцікавіше і найкорисніше зрештою. :)

Якщо вам сподобалось читати це і у вас є відгуки чи думки, якими ви хочете поділитися, не соромтеся писати мені електронною поштою [email protected]pps.com І якщо вам подобається мій додаток, ви можете завантажити його з App Store тут. :)