Как недавний выпускник учебного лагеря, я искал способы выделиться из толпы недавних выпускников учебного лагеря, выходящих из таких лагерей, как App Academy, Hack Reactor, General Assembly и (ныне несуществующий) Dev Bootcamp. Я также чувствовал, что мое образование в Академии приложений было хорошим, но было ограниченным - я научился исключительно созданию веб-сайтов. Но до того, как я поступил в Академию приложений, я думал, что создание «приложений» - это все о мобильных устройствах - я имею в виду, что ни один непрофессионал не называет веб-сайты «приложениями», верно? Но у нас на телефонах масса «приложений».

Итак, я решил дополнить свой новый опыт веб-разработки ускоренным курсом по Swift. На самом деле, позвольте мне сделать резервную копию: я уже решил немного изучить разработку для iOS, когда для своего последнего проекта в App Academy я создал приложение на React Native. Однако весь этот опыт был настолько оторван от конечного продукта - мы писали полностью на JavaScript, - что я действительно не чувствовал, что создаю приложение для iOS, а просто компилирую какой-то JS во что-то, что работает как приложение.

Так или иначе. Вернемся к этому.

После Академии приложений вам необходимо отправлять как минимум 25 заявлений о приеме на работу в неделю. Это означало, что любое время, которое я тратил на создание своего приложения, конкурировало с отправкой приложений для работы. Я также знал, что Swift не будет участвовать в проекте, поэтому мне нужно было быстро разобраться. Я решил объединиться со своим двоюродным братом, специализирующимся в области компьютерных наук в Университете Санта-Крус, чтобы мы вместе взялись за проект.

Мы решили создать приложение, которое позволит студентам колледжа обсуждать острые проблемы в своем кампусе безопасным, не анонимным, но также потенциально спорным и глубоким способом. В шутку мы назвали это «снежинки».

Через три недели у нас есть довольно функциональное приложение. Да, стиль не великолепен - пока что, но он почти полностью функционален и даже включает некоторые функции, которые мы изначально не планировали, например, фид "главных новостей", который используется в RSS-фиде Google Новостей для каждой школы. Мы надеемся развернуть его в магазине Apple в ближайшие недели.

Но - больше, чем конкретные навыки, которые я приобрел за последние недели - из этого проекта я узнал, как эффективно работать в небольшой команде, как мотивировать себя и как быстро учиться. Вот мои самые важные выводы из создания приложения для iOS за три недели:

1. Будьте организованы. Только в середине проекта мы решили создать своего рода «Scrum» лист, но нам следовало сделать это гораздо раньше. Было действительно приятно изменить цвет задач с красного, означающего «не реализовано», на оранжевый, означающий «в процессе», на зеленый («завершено»). Это было также полезное место, где можно было выкинуть новые идеи, которые у меня, возможно, не было времени реализовать (для этого мы использовали отдельную вкладку «список желаний» в документации Google).

На самом деле я постоянно удивлялся тому, насколько быстрее мне удавалось «отмечать» эти функции таблицы схваток, чем я ожидал. Это само по себе мотивировало, и вдохновил меня на разработку функций (таких как вышеупомянутый RSS-канал), которые я даже не планировал реализовывать.

2. Будьте готовы быстро переключать передачи, если этого требует проект. Мы начали с использования функции раскадровки XCode для создания нашего приложения, в котором вы можете буквально перетаскивать компоненты на холст, а затем подключите их к вашему коду через розетку. Звучит неплохо, но приводит к катастрофическим конфликтам слияния git. После пары дней попыток грубой силы заставить это работать, мы сделали шаг назад и полностью переключили передачи.

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

3. Найдите нужную технологию. Это может показаться очевидным, но это было не для нас. Как я уже упоминал, у нас не было опыта работы со Swift, и, хотя у меня был опыт работы с Rails, я понятия не имел, как подключить сервер Rails к приложению Swift. И, хотя это, вероятно, было бы хорошим навыком, который мне хотелось бы изучить, обработка как серверной, так и клиентской стороны приложения iOS показалась сложной задачей всего за три недели.

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

4. Если сомневаетесь, взломайте его. Я пришел в Swift, почти не имея опыта работы со статически типизированными языками (всего один семестр C ++ в колледже), и, помимо моего ограниченного опыта работы с React Native, нет опыт создания мобильных приложений. Тем не менее, я почти никогда не зацикливался на том, как реализовать какую-либо функцию - ну, ** в Интернете **. Существует так много ресурсов, и, хотя у них может не быть точного ответа, который вы ищете, скорее всего, у них будет какой-то ответ, применимый к проблеме, с которой вы столкнулись. Постоянно просматривая StackOverflow, я смог реализовать все, от проверки Regex до кэширования изображений, преобразования дат в формат «время назад» (то есть «один час назад») до динамического изменения размера текстовых полей по мере ввода пользователем.

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

Теперь, когда мы вроде как «закончили» приложение - хотя на самом деле ничего подобного никогда не делалось, и есть еще много функций, которые мы хотели бы создать, - я меняю приоритеты при приеме на работу (я все равно добавлю два до трех часов в день в укладке). Но я планирую извлечь уроки, которые я извлек из создания «снежинок» вместе со мной, даже когда я ищу работу. Вот как я буду их применять:

  1. Я буду организован. Я буду использовать своего рода «скрам-лист», чтобы отслеживать все задачи, связанные с приложением для работы в течение дня. Я воспользуюсь другой вкладкой, чтобы отслеживать потенциальных контактов и то, как я с ними общаюсь.
  2. Я готов переключить передачи. Если что-то у меня не работает, я не хочу тратить на это время - я предпочитаю быть максимально продуктивным. Для меня прямо сейчас это означает, что я хочу значительно снизить приоритетность отправки приложений «холодной» и больше сосредоточиться на налаживании контактов и расширении моей сети.
  3. Я попробую новые технологии. Medium - это один из способов добиться успеха, который я не планировал использовать, но теперь считаю потенциально жизнеспособным. Я также обязательно посмотрю на альтернативные платформы поиска работы, такие как Triplebyte и Hired.com.
  4. Я буду лоскутным. Я знаю, что я не самый опытный разработчик, но у меня есть трудовая этика и желание учиться. Я знаю, что смог бы составить важную часть большинства команд, если бы представился такой шанс, и я буду использовать эту уверенность в каждом собеседовании и налаживании контактов, которые я посещаю.

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