Я недавно выпустил свое первое приложение для iOS в App Store (ура!), И в процессе я узнал некоторые вещи, многие вещи, которые, возможно, кто-то прочитает, может оказаться полезным.

Подождите, какое приложение?

Позвольте мне быстро подключить мое совершенно бесплатное приложение под названием GradePoint, о котором и пойдет речь в этой статье.

GradePoint - это простое и удобное приложение для iOS для учащихся, которым может понадобиться помощь в отслеживании своих оценок в школе.

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

Хорошо, давайте поговорим о том, что я узнал, и, надеюсь, другие новички, такие как я, могут кое-что узнать.

Разработка достойного приложения требует времени

Это может показаться очевидным, но, конечно, разработка приложения требует времени, и все это знают. Но это занимает еще больше времени, когда вы единственный, кто занимается этим, и вы студент / стажер дневного отделения. Когда мне впервые пришла в голову идея создать это приложение, я подумал, что это займет не больше месяца или двух, и уверен, что что-то подобное можно легко сделать в те сроки. Однако я хотел все написать сам (никаких сторонних библиотек, кроме Realm). В конце концов, это был опыт обучения, я хотел узнать как можно больше об iOS, Cocoa Touch и Swift.

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

Я не только убедился, что не недооцениваете продолжительность первоначального времени разработки, но и то, что когда оно появилось в App Store, это приложение, за поддержку которого я должен нести ответственность. Я думаю, многие новички, вроде меня, этого не совсем понимают. После того, как проект или какой-то фрагмент кода стал доступным для других, вы теперь несете определенную ответственность за то, чтобы этот проект продолжал поддерживать и работать, и это определенно может стать проблемой. Так что в следующий раз, когда у вас будет супер крутая идея, убедитесь, что вы готовы посвятить следующий год или два, работая / поддерживая эту идею.

Первые 90 процентов кода составляют первые 90 процентов времени разработки. Остальные 10 процентов кода составляют остальные 90 процентов времени разработки.

- Том Каргилл, Bell Labs

Создавать собственные представления - это весело

Прежде чем я начал работать над этим приложением, у меня не было большого опыта создания каких-либо пользовательских представлений для iOS. Я использовал все встроенные представления, которые Apple любезно предоставила нам с UIKit. Однако эти встроенные представления не могут делать все. Для этого приложения мне нужно было какое-то круговое кольцо прогресса, которое отображало бы процент оценок для класса. На GitHub есть пара таких библиотек представлений, но помните, я хотел создать все эти вещи сам, поэтому я решил это сделать.

Я просмотрел несколько онлайн-сообщений и вопросы StackOverflow о создании пользовательских представлений и о том, как работает рисунок. Оттуда я быстро прототипировал то, что хотел построить, а затем потратил следующий месяц или около того, делая это представление как можно лучше и приятнее в использовании. Я потратил на это так много времени, что решил разместить его на GitHub и CocoaPods, и теперь он стал довольно популярным (что возвращает нас к проблеме поддержки и ответственности за обновление). Но в целом я узнал огромное количество интересных вещей, которые можно сделать с помощью настраиваемого UIView, и это помогло мне подумать о том, как создавать свои приложения по-другому. Если вы никогда не создавали собственный вид, попробуйте его.

Я не умею проектировать

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

Привет, Siri, напомни мне пройти несколько курсов по дизайну.

План, план, план

Вероятно, это первое, что я узнал, работая над этим проектом. Я все еще новичок и учусь, поэтому я не совсем все планировал, я имею в виду, конечно, у меня было представление о том, что я хотел построить, но не совсем то, как я собирался это построить. Также со мной не работал руководитель проекта. Это самая большая ошибка, которую я совершил во время работы над этим приложением, и она произошла еще до того, как началась работа. Планирование имеет решающее значение, потому что оно помогает вам сосредоточиться, а также не дает лишним функциям отнимать вашу жизнь. Очевидно, что все меняется, и планы необходимо обновлять, но постарайтесь начать с твердого плана того, что вы хотите. Не просто идея, это действительно план. Вы можете использовать онлайн-планировщик программ, например проблемы Trello или даже GitHub, и закрывать их, когда закончите.

Заставь себя закончить

Это то, с чем я постоянно боролся, работая над этим проектом. Мне легко отказаться от того, над чем я работаю какое-то время, и перейти к чему-то более интересному или веселому. Были недели, когда я ничего не делал и решал заняться чем-нибудь другим. Поддерживать равновесие - это здорово, но всегда старайтесь не дать себе чего-то полностью уронить.

Заставляя себя закончить, также постарайтесь добиться значимого прогресса, я имею в виду, что не тратьте день на рефакторинг всей базы кода только потому, что вас действительно раздражает то, как вы называете определенные вещи (я сделал это). Значимое изменение будет заключаться в реализации той функции, которую вы разместили на своей доске Trello, или исправлении ошибки, обнаруженной вами несколько дней назад. Нам, разработчикам, легко взглянуть на код и захотеть сделать его лучше, но на самом деле я не думаю, что когда-либо буду на 100% удовлетворен кодом, который пишу, всегда будет лучший / более чистый способ что-то сделать. . Конечный пользователь не заметит разницы, если это что-то незначительное. Я вовсе не пытаюсь защищать плохой код или дизайн, но, возможно, оставлю рефакторинг и очистку на период после выпуска.

Никто не умеет взламывать ваше приложение лучше, чем другие

Серьезно, если вы можете передать свое приложение другим до того, как решите, что в нем нет ошибок, сделайте это! Как разработчики, мы иногда сосредотачиваемся на более мелких аспектах разработки и дизайна. Я не могу сказать вам бесчисленное количество раз на работе и во время работы над этим приложением, что я думал, что функция работает нормально, прежде чем я дал ее моему брату или другу, чтобы они попробовали ее, и они немедленно что-то сломали. И это хорошо, я не хочу, чтобы функция ломалась, пока она публикуется. Я хочу узнать об этом и исправить как можно скорее. Хм, может мне стоит написать еще тестов ...

Если у вас нет близких друзей, которые могли бы протестировать ваше приложение, попробуйте опубликовать его в Xcode Flight Test и разместить ссылку на некоторых платформах социальных сетей с просьбой помочь вам в тестировании. Что касается GradePoint, у меня было 20 человек, которые просто пробовали приложение, и хотя не все давали мне отзывы, некоторые из них давали, и я слушал, я чувствую, что это определенно помогло сделать приложение лучше.

Не бойтесь критики.

Последние мысли

Было определенно весело работать над GradePoint, хотя временами это было очень сложно и разочаровывающе, но в целом это был хороший опыт. Я многому научился, и, надеюсь, другим теперь понравится то, что я создал. Если вы новичок в разработке программного обеспечения, просто сядьте на несколько дней и попробуйте что-нибудь построить. Не просто идите на занятия и ожидайте, что выйдет отличный разработчик. Старайтесь изо всех сил заниматься чем-то вне школы / работы и продолжайте улучшать свои навыки. В этом не должно быть ничего удивительного или великого, но обучение никогда не бывает плохим. Если вам нужен совет или кто-то поможет вам протестировать приложение, не бойтесь связаться со мной!