Ios разработка с чего начать
Перейти к содержимому

Ios разработка с чего начать

  • автор:

iOS-разработка: способы быстрого старта

Когда мы задумываемся о разработке под iOS, чаще всего в голове возникает пятизначная сумма входного порога: как минимум нужно iOS-устройство на последней версии ОС и Mac. Если вы уже пишете под iOS, вам наверняка известны альтернативные варианты, а если нет — посмотрите, вдруг пригодится? Приведенный ниже обзорный пост — как раз на этот случай. Под катом вы найдете довольно простую информацию, так что если хотите хардкорчика, вам не сюда!

  • Берем Mac (точнее, нам нужна OS X), берем Xcode с iOS SDK, берем Objective-C или Swift, делаем проект, и на выходе получаем самое настоящее, «нативное», iOS-овское приложение, которое даже можно со спокойной душой засабмитить в App Store, и радоваться показу баннеров тому, что наша небольшая разработка приносит людям радость.
  • Берем хоть Mac, хоть Windows-машину, выбираем фреймворк, позволяющий писать мобильные приложения на более знакомых многим языках (JavaSctipt, C#). Заботу о том, как наш код выполнится на устройстве, возьмет на себя фреймворк: для обеспечения выполнения с нашим кодом будет слинкован механизм исполнения кода (runtime), в задачи которого, среди прочего, входит трансляция вызовов используемого языка программирования в API мобильной платформы. Плюс подхода состоит в определенной независимости от конкретной мобильной платформы (с которой нас связывает только сам runtime), минус же — в меньшей, чем у «родного» приложения, скорости работы.
  • Берем Блокнот любой редактор текстовых файлов, ваяем веб-страницу, должным образом ее обустраиваем, и на выходе получаем веб-приложение, которое, по сути, будет запускаться в полноэкранном окне браузера (как самое настоящее приложение на платформе — без адресной строки браузера), но работать будет, конечно, со скоростью и отзывчивостью обычной веб-страницы. В первую очередь это будет видно при отсутствии нормального интернет-соединения, однако, согласитесь, даже такой вариант иногда удобен. Веб-приложение, кстати, имеет тот плюс, что для доступа пользователей к нему страницу не требуется отправлять в App Store, достаточно дать людям ее URL и предложить добавить себе «на домашний экран».

Путь от Apple

Путь настоящего джедая тру iOS-разработчика лежит в плоскости следования идеям Apple. Свежий SDK, свежая же версия Xcode, документация от Apple по технологиям Apple, форумы разработчиков на технологиях Apple – если вдуматься, а что ещё нужно для создания отличного приложения, кроме толики времени? Польза очевидна: разработка идет самым близким к платформе и к идеологии Apple образом, с использованием всех новинок, предлагаемых Apple в текущем (и будущих) iOS API, так что постоянное изучение нового приносят больше хорошего, чем плохого.

Новинки Apple озвучивает регулярно. На последней конференции для разработчиков WWDC 2017 были показан новый SDK и новая версия среды для разработке Xcode. Список изменений довольно обширен (тем более в преддверии выхода iOS 11):

Xcode

Текстовый редактор в Xcode переписали на Swift, сделав его надёжнее и быстрее. Можно ли это почувствовать? Да! Подсветка синтаксиса работает (почти) моментально, открытие и навигация по файлу теперь без заметных задержек, а сообщения об ошибках больше не перекрывают исходный код. В beta все выглядит очень приятно, посмотрим, что нас ждет в релизе!

В Xcode появилась поддержка Markdown. Разметку можно использовать при документировании кода, и функциональность эта, на первый взгляд, косметическая, довольно заметно облегчает чтение кода, особенно чужого:


(Источник)

Редактор, кстати, научился подсвечивать блоки кода, удобно при изучении большого объёма кода.

Ещё одной важной фичей Xcode 9 стал рефакторинг кода на Swift, Objective-C, Objective-C++, C. Рефакторинг позволяет переименовывать классы, переменные, а также дробить методы на менее крупные.

Из менее выделяющихся, но тем не менее полезных фич, можно назвать:

  • Новую систему сборки (кстати, написанную на Swift);
  • Поддержку GitHub;
  • UI debugger стал показывать UIViewController;
  • Добавили больше проверок (например, main thread API checker и undefined behavior tracking);
  • Параллельный запуск тестов на разных устройствах и симуляторах, UI-тесты нескольких приложений;
  • «Беспроводную» отладку на нескольких устройствах для проверки приложений под iPad и iPhone.​

Swift 4

Это изменение стоит особняком. Все, кто уже пережил чувство «в Swift 2 было, в Swift 3 пропало?!», могут ощутить дежавю, но сейчас ожидаются изменения, скорее, в лучшую сторону (впрочем, замечу вполголоса, когда это было не так, по мысли авторов-то?)

  • Приложения, написанные на Swift 4, станут меньше в размерах.
  • Swift 4 получит встроенную поддержку кодирования/декодирования в/из JSON. До Swift 4 приходилось много писать много кода самому, либо использовать сторонние кодогенераторы. Сейчас этот код генерирует компилятор. Отдельное спасибо!
  • Возврат к удобной модели работы со строками, которая была реализована в Swift 2 и убрана в Swift 3. Вместе с этим изменением строки станут лучше поддерживать Unicode («чтобы ваши любимые приложения корректно показывали все ваши emoji»), а работа с ними ускорится.
  • Проекты, в которых используется и Swift, и Objective-C, будут собираться на 40% быстрее за счёт улучшений в Xcode 9 и его системы сборки.​
  • Apple (как обычно) обещает простую миграцию на Swift 4, и одновременную поддержку разных кодовых баз (3.2 и 4.0).

«Гибридное», «не совсем нативное» приложение

Уточню: термин, вынесенный в заголовок, даже по сути своей не очень верен. Приложения, которые мы получим в результате, самые что ни на есть нативные в смысле того, что они исполняются на той же iOS, на том же железе, что и любое другое ПО для iOS, просто сам процесс разработки позволяет использовать не только предложенные Apple технологии и языки программирования. Если человек умеет писать, скажем, на JavaScript, и не хочет разбираться в Swift, то Apple ему ничем не поможет (кроме, конечно, хорошего учебника по Swift), а вот вариант написать, условно говоря, приложение на JavaScript, а потом запустить его на iOS, как если бы оно было написано в Xcode (получив, таким образом, некий «гибридный» вариант) существует, и вполне востребован.

Ionic


Ionic – один из самых известных фреймворков для кросс-платформенной разработки. Он построен на базе Apache Cordova, что обеспечивает доступ к различным функциям устройства, таким как геолокация, push-уведомления, камера и прочим, и позволяет разработчикам создавать приложения для iOS и Android с веб-технологиями, такими как HTML, CSS и JavaScript.

В дополнение к фреймворку, Ionic может похвастаться целой экосистемой, облегчающей разработчикам-новичкам процесс изучения и вхождения. Ionic Cloud предоставляет разработчикам различные инструменты для управления, развертывания и масштабирования приложений на Ionic. Ionic Creator представляет собой визуальный редактор, который позволяет разработчикам быстро прототипировать и создавать мобильные приложения методом drag&drop. Наконец, существует Ionic View — бесплатное приложение для iOS и Android, которое позволяет разработчикам легко делиться своим Ionic-приложением с пользователями, тестерами и клиентами без необходимости развертывать приложение в магазине приложений конкретной мобильной платформы. Разработчики просто отправляют пользователям приглашение из приложения Ionic View, и как только оно принято, пользователь может загрузить и запустить конкретное приложение в своей копии Ionic View — так, как если бы приложение было установлено на его телефоне из магазина приложений.

Увы, есть и «ложка дегтя». Приложения, написанные с использованием Ionic, используют WebView, в результате мы получаем самое натуральное веб-приложение, со своей обычной (обычно не самой впечатляющей) скоростью работы. За счет этого трудно считать его подходящим для создания тяжелых приложений, таких, как игры, либо программы с интенсивным использованием графики. Разработка с Ionic требует хороших знаний Angular, по крайней мере при желании «выжать» из фреймворка как можно больше.

PhoneGap / Cordova

PhoneGap исходно был создан компанией Nitobi. В 2011 году, Adobe приобретает Nitobi и бренд PhoneGap. Adobe затем передает одну из версий PhoneGap (назвав её Cordova), в Apache Foundation, оставив себе бренд PhoneGap и его как продукт. В результате Cordova можно рассматривать как движок, стоящий под капотом PhoneGap (а также некоторе другие гибридные фреймворки). PhoneGap, в свою очередь, добавляет к возможностям Cordova свои, дополнительные, функции.

PhoneGap во многих отношениях очень похож на Ionic. Он так же дает разработчикам возможность создавать кросс-платформенные приложения при помощи веб-технологий, и так же построен на базе Apache Codova. Однако PhoneGap не привязан к какому-то определенному Javascript-фреймворку, поэтому разработчики имеют бОльший выбор, на чем и как они будут создавать свои приложения. У PhoneGap имеется десктопное приложение, мобильное приложение, и облачный сервис под названием PhoneGap Build, который позволяет собирать и деплоить приложение.

Увы, подобно Ionic, PhoneGap использует WebView (который в iOS работает довольно медленно), так что со скоростью у приложений, созданных на базе этого фреймворка, дела не всегда обстоят блестяще.

Xamarin

Основанная в 2011 году компания Xamarin, выпускающая семейство продуктов Xamarin через пять лет своего существования была купена компанией Microsoft. Сегодня продукты Xamarin представляют на рынке очень интересный подход к разработке кросс-платформенных мобильных приложений: приложения пишутся на C#, затем Xamarin компилирует его в нативное приложение для iOS, либо для Android, при этом в качестве базовой технологии Xamarin использует Mono, чем кросс-платформенность и обеспечивается. Разработчики Xamarin говорят, что полученные на выходе приложения используют нативное API платформы, для которой приложение компилируется, так что поведение полученного приложения никак не отличается от поведения любого другого приложения на этой же платформе. Разработку, кстати, можно вести при помощи Visual Studio (что совсем неудивительно).

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

React Native

Проект React Native появился на свет в Facebook, и построен на основе React. Наше JS-приложение крутится на встроенном в iOS движке: на нем выполняется код и производятся все манипуляции с нативными виджетами ОС. React Native сопоставим с Xamarin, при этом приложения, созданные с помощью React Native, очень похожи на нативные приложения iOS и Android (потому что они собственно, оперируют нативными UI-элементами).

Синтаксис React довольно прост, что облегчает изучение фреймворка, а Стандартная библиотека UI-компонентов в поставке React Native содержит много полезных компонентов, однако самым большим отличием React Native от других JavaScript-фреймворков называют возможность использования кода на на Objective-C и Swift (чаще для для улучшения производительности или более тонкого взаимодействия с мобильной платформой). На практике это означает, что разработчики могут использовать существующие собственные библиотеки в своих приложениях React Native.

Веб, чистый веб

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

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

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

Если вы любите мобильную разработку так же, как любим ее мы, рекомендую обратить внимание на следующие доклады Mobius 2017 Moscow (да-да, в ноябре Мобиус едет в Москву, если вы еще не знали):

Весь гайд iOS на русском

Ruslan Sharipov

Привет. Меня зовут Руслан. Я UX/UI дизайнер в Siemens. У меня есть ютуб-канал, на котором записано несколько плейлистов по основам UX/UI дизайна (лайк, подписка, колокольчик и тд).

В этом посте я собрал все части своего вольного перевода гайдлайна iOS на русский язык. Также доступно в notion здесь. Оригинальный гайдлайн iOS на англ. яз. здесь.

Кстати, любые комментарии с поправками на лучший перевод, а также ссылки на полезные инструменты по теме iOS и т.д. — приветствуются.

Как выучить Swift и стать iOS-разработчиком: пошаговый план от roadmap до собеседований

Правда или вымысел: реально ли вкатиться в iOS-разработку за 8 месяцев?

Иллюстрация: Apple / Trello / Figma / Colowgee для Skillbox Media

Мария Даровская

Кирилл Дутов

iOS-разработчик, любит спорт, ведёт блог на YouTube и администрирует чат «Ждунчики в iOS». Интересуется фотографией, кулинарией, медициной и наукой.

Ссылки

Swift — это язык программирования от Apple, на котором разрабатывают мобильные приложения под iOS / iPad OS, десктопные под macOS и даже server-side-приложения. Раньше главным языком экосистемы Apple был Objective-C, но более современный Swift на его фоне выглядит понятнее и удобнее для старта в программировании.

Существует немало комьюнити iOS-разработчиков, где можно задать вопросы или понаблюдать за интересными дискуссиями, и куча событий — как независимых, так и корпоративных, а также куча учебных материалов, в том числе на русском языке. Всё это делает Swift отличным языком для новичков в IT.

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

И вот в очередной раз я захотел заняться чем-то новым — так я и выбрал iOS-разработку. Найти первую работу мне удалось через восемь месяцев упорной учёбы. Из них два я учился параллельно с работой, а оставшиеся шесть — корпел над курсами и книгами фул-тайм.

Расскажу, какой путь я прошёл, чему научился и как можно использовать мой опыт, если вы тоже хотите стать iOS-разработчиком.

1. Составьте план

Есть несколько разных способов. Вот основные: курсы, на которых вам будут помогать преподаватели, и самостоятельное обучение, когда вы будете много ошибаться, пропускать через себя кучу информации и страдать.

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

Чтобы выучить язык до того уровня, когда можно получить первую работу, необходимо составить чёткий план обучения — roadmap, дорожную карту. Весь первый месяц у меня ушёл на то, чтобы отобрать все открытые материалы, верхнеуровнево пробежаться по ним, отсеять то, что мне точно не подойдёт, оценить необходимое для изучения время и составить предварительный план.

Благодаря этому я смог поставить примерные сроки по каждой образовательной задаче, а потом, через год, структурировал всё с учётом полученного коммерческого опыта и упаковал в универсальный план:

Подробная инструкция, как стать iOS-разработчиком с нуля в 2022 году

Я заранее запланировал всё, что нужно изучить, и внёс задачи в Trello, а потом приоритизировал и отмечал выполненные шаги в чекбоксах.

Каждую карточку я подробно описывал, помещал в неё ссылки на материалы для изучения. И обязательно указывал, какое количество времени займёт изучение материала. Время я оценивал так: брал заявленную продолжительность курса и умножал её на три.

Однако важно планировать не только обучение, но и отдых. Перед началом учёбы советую посмотреть курс Learn how to learn на Udemy или почитать книгу «Думай как математик».

2. Запаситесь ресурсами

Понадобится время, чёткий план, финансовая подушка и инструменты для разработки. Разберём каждый компонент подробнее.

Время. Чтобы освоить необходимые для junior-позиции знания, понадобится примерно от 700 до 1000 часов. Если у вас есть качественное профильное образование, то при должном усердии вы сможете уложиться в два месяца, но лучше рассчитывать на полгода — это более реальный срок. Последние пару месяцев я рекомендую заниматься полный день и по возможности уволиться с работы.

Финансовая подушка. Так или иначе вам понадобится финансовая подушка. Я два месяца учился и работал одновременно, а потом ещё полгода занимался программированием дома в режиме фул-тайм — по 4–5 часов активного обучения в день.

Инструменты. Для обучения понадобятся макбук и айфон, потому что функциональность симулятора ограниченна (но iPhone можно взять чуть позже — на старте хватит среды разработки Xcode). Это тоже создаёт барьер для входа в профессию для ребят, которые не могут потратить 100–200 тысяч рублей (а теперь и гораздо больше) просто на то, чтобы попробовать новую специальность.

Но есть и хорошая новость — существуют онлайн-компиляторы (например, replit), в которых можно попробовать базовый синтаксис языка, плюс сам язык Swift и компилятор к нему можно установить и на Linux (версии под Windows нет) — правда, полноценные программы для iOS писать там не получится.

Это поможет соприкоснуться с языком и не остаться без денег с бесполезной дорогущей техникой, которая вам не нужна.

Ежедневное планирование. Я вёл списки задач в блокноте — составлял их на каждый день в соответствии с доской в Trello и личными планами. Вот как это выглядело. Выполненные задачи я вычёркивал или отмечал галочкой.

На моём примере можно увидеть, что я довольно часто не успевал выполнить все поставленные задачи — даже несмотря на то, что старался планировать всё максимально точно. Поэтому советую закладывать на обучение больше времени, если у вас есть такая возможность.

3. Читайте книги и решайте задачи

Для обучения есть фундаментальная литература, которая не стареет и не теряет актуальность. Однако вкатиться в разработку пытаются разные люди, и надо понимать, к какому типу вы относитесь.

Например, есть студенты МФТИ, Бауманки или других профильных вузов с сильной фундаментальной подготовкой — они могут учиться по более серьёзным книгам, глубже погружаться в предмет.

А есть взрослые мужчины и женщины, которые работали бухгалтерами или стояли у станка на заводе, — они могут вообще не иметь представления об IT. Им придётся учиться по более лёгким и базовым материалам.

Вот что я могу порекомендовать:

Основы Computer Science и программирования. Если раньше вы никогда не писали код, начинать лучше с основ программирования в целом. Например, посмотреть гарвардский курс CS50 или прочесть книгу «Код. Тайный язык информатики», чтобы понимать, как работает компьютер.

Книги по Swift. Рекомендую серию книг от Ray Wenderlich, серию книг от objc и книгу Programming iOS 14. Российские авторы тоже пишут про Swift — например, есть отличная книга Василия Усова. Но надо готовиться к тому, что 90% всех книг и статей по Swift выходят на английском языке. Современные переводчики помогут вам понять большую часть материала.

Видеокурсы. Советую видеокурс Алексея Скутаренко по Swift — там есть домашка и разборы домашних заданий других ребят. Если вы решите сразу пойти по сложному пути, то после курса по Swift смотрите курс Алексея по Objective-C — так вы дополнительно освоите язык, на котором всё ещё написано много кода в iOS-приложениях, и получите более глубокое понимание платформы.

Вводная лекция из курса Алексея Скутаренко

Официальная документация от Apple. Со временем вам обязательно придётся читать официальную документацию от Apple — и она написана на английском. Правда, существует и её неофициальный перевод на сайте swiftbook.ru. Там же вы найдёте базовые материалы по языку и даже курс по основам разработки на Swift.

Задачи. Одной только теорией не обойтись — обязательно нужно решать задачи. Начните с задачника по программированию на Swift от Владислава Самойлова, выполняйте упражнения уровня easy на LeetCode и тесты в приложении Swifty, придумывайте самостоятельно. Чем больше практики вы получите, тем лучше.

4. Разберитесь с ​​Xcode и UIKit

Чему важно научиться:

  • Работать с playground. Это можно сделать по курсам Скутаренко. А изучить основные модули​​ Xcode и список горячих клавиш — по англоязычному туториалу.
  • Разобраться с UIKit. Рекомендую курс от SwiftBook и курс от The Swift Developers.
  • Работать с дебаггером, отладкой и View Debugger, Interface Builder.
  • Создавать сниппеты. Рекомендую хорошую статью Ильи Школьника.
  • Стоит разобраться, как работает жизненный цикл UIViewController. Сделать это можно по следующему видео:
  • Создавать первые приложения. Начать можно с курсов SwiftBook «Мои первые приложения» и «Приложения на основе коллекций». А ещё в этот период стоит освоить нативную вёрстку.
  • Можно освоить один из фреймворков: SnapKit, BoxView, TinyConstraints. А ещё важно разобраться, как работает Auto Layout, — сделать это можно с помощью книги Modern Auto Layout и статей.
  • Из каких слоёв состоит иерархия view и что такое layer. Сделать это можно по книге iOS Core Animation: Advanced Techniques. Попробуйте самостоятельно комбинировать разные элементы UIKit и соединять их друг с другом. Помимо книги и курсов, не забудьте изучить официальную документацию по UIKit.

5. Научитесь работать с дизайном и консолью, изучите архитектуру ПО и Git

Попробуйте начать работать с Figma, Sketch, Zeplin. Следующим шагом будет изучение Apple Human Interface Guidelines for iOS — у него есть неофициальный перевод на русский язык.

На этом этапе можно освоить вёрстку экранов в Pixel Perfect, когда все размеры точно соответствуют макету. Сравнивать их можно, наложив два скриншота друг на друга и настроив прозрачность на скрине макета. Макеты можно брать на sketchappsources.com, а интересные макеты проектов для мобильных приложений — на Behance.

Также понадобится навык работы с командной строкой и Git. Учиться этому можно в игровой форме на следующих ресурсах: ostechnix.com, redhat.com, bashcrawl. По Git я рекомендую читать официальную документацию и проходить тренажёр learngitbranching.js.org. Важно уметь работать с Git в Xcode, а также освоить один из сервисов: GitHub, GitLab или Bitbucket.

После этого рекомендую погрузиться в архитектуру. Стоит разобраться с MVC, MVP, MVVM, VIPER. Про последний Rambler даже выпустил целую книгу. Чтобы закрепить понимание того, чем отличаются архитектуры, делайте учебные проекты.

6. Разберитесь с многопоточностью, принципами ООП и работой с сетью

Для работы с многопоточностью я рекомендую курс The Swift Developers «Multithreading в Swift с нуля»:

Курс «Multithreading в Swift с нуля»

На Stepik также есть русскоязычный бесплатный курс от «Авито». А в этом видео можно найти ответы на интересные вопросы:

Ответы на каверзные вопросы о многопоточности

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

Чтобы усвоить базовые принципы работы с сетью, рекомендую пройти на swiftbook.ru курсы «Работа С API» и Networking. Отдельно прочтите статьи про архитектуру REST, JSON, XML и изучите, как работает Codable — с помощью статей и официальной документации. Стоит также разобраться, как правильно работать с URLSession и Alamofire.

Следующим этапом попробуйте создавать простые приложения, которые будут выводить данные из API в TableView или CollectionView. Публичные API для этого можно взять на сайте apptractor.ru. Также посмотрите материалы про WebSocket и асинхронный веб и изучите сервисы-помощники, которые ускоряют создание моделей для парсинга.

Отдельная большая тема — основы ООП в Swift. Рекомендую посмотреть об этом видео и закрепить знания с помощью курса по паттернам. Также паттерны можно изучать на портале refactoring.guru и по книге «Паттерны проектирования» издательства O’Reilly. Подробные и интересные лекции есть у Тимофея Хирьянова.

Лекция Тимофея Хирьянова про ООП

Разобравшись, что такое SOLID, попробуйте написать примеры, которые нарушают принципы, а потом пофиксить ошибки.

7. Изучите алгоритмы и структуры данных, принципы хранения данных

Самая доступная по этой теме — книга «Грокаем алгоритмы». Пригодятся и примеры из книги Data Structures & Algorithms in Swift, а также задачи на LeetCode. Они могут показаться сложными для новичков, однако в них можно разобраться с помощью решений других людей и многочисленных видео на YouTube.

У Тимофея Хирьянова из МФТИ также есть лекция про алгоритмы на Python — хоть это и другой язык, рекомендую посмотреть и попробовать повторить всё на Swift:

Лекция Тимофея Хирьянова об алгоритмах

Для корректной работы с хранением данных важно освоить UserDefaults, Core Data, Realm, Firebase и выучить основы SQL. Также полезно прочесть книгу «Семь баз данных за семь недель». Для практики попробуйте сделать собственные тестовые приложения, которые будут хранить данные на устройстве.

8. Запомните правила оформления кода и научитесь писать тесты

Для этого придётся работать с линтером — например, SwiftLint. Разобраться, как писать понятный и красивый код, помогут книги «Чистый код» и «Совершенный код».

Отдельно рекомендую понять, что такое технический долг и как правильно проводить рефакторинг. Для практики советую написать «грязный» код, а потом его исправить. Также отлично работает практика на чужих тестовых проектах — их можно найти на GitHub.

Зачем и как писать качественные юнит-тесты, можно понять из доклада Алексея Солодкого:

Видео доклада с Badoo PHP Meetup

А про UI-тесты в iOS-проекте послушайте рассказ Михаила Домрачева:

Видео доклада с AppsConf

9. Проходите собеседования

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

Я пошёл по собеседованиям, когда у меня закончились деньги. У меня не было особого выбора: мне нужно было срочно искать работу. Нашёл я её, пройдя восемь собеседований, — и одновременно получил два оффера. На это ушло примерно два месяца ежедневных поисков.

Первый оффер был от студии, которая делала клоны приложений с агрессивной монетизацией. Они сходу предложили 100 000 рублей на руки. Для Петербурга и такого маленького проекта это очень хорошие деньги — и они особенно привлекательны для человека, который ушёл в долги. Но клонирование приложений со встраиванием навязчивых дорогих подписок— очень скользкая тема, поэтому я отказался.

Второе предложение было из компании поменьше с совсем скромной зарплатой — в районе 50 000 рублей. Однако продукт был интересным, а команда — хорошей. Поэтому я принял их оффер. А через полгода перешёл в другую компанию — там я работаю над банковскими приложениями.

Мне нравится такой формат работы, потому что он позволяет больше времени уделять своим задачам. Не надо тратить два-три часа в день на дорогу. Когда я работал в Москве, то приходилось ездить в центр города из Балашихи — на дорогу у меня в среднем уходило четыре-пять часов.

Сейчас это же время я трачу на учёбу и личные дела. Так гораздо комфортнее. Ещё мне нравится, что можно спокойно работать — у меня практически нет созвонов и организационных встреч, кроме дейликов.

Советы тем, кто мечтает разрабатывать приложения под iOS

Если вы хотите попасть в разработку, начинайте учиться как можно скорее. Потому что благодаря текущей ситуации и дисбалансу в спросе и предложении, вакансий для джуниор-разработчиков становится всё меньше и найти работу сложнее, чем год назад. Растут требования со стороны работодателей, растёт конкуренция между новичками.

Возникает парадоксальная ситуация: работодатели хотят, чтобы к ним приходили опытные программисты, но при этом мало кто готов их выращивать и вкладываться в обучение. Так компании сами создают дефицит.

Новичкам я советую пробовать все возможности и ходить на собеседования везде, где зовут, не бояться искать работу и получать отказы. Когда я искал первую работу, то оставлял по 40–50 откликов в день. Мне приходило по 20–30 отказов. Для некоторых это может быть слегка демотивирующим фактором, но каждое собеседование — это важный опыт.

И самое главное — это дисциплина и постоянные усилия. Я знаю ребят, которые годами учатся на разработчиков просто потому, что для них это не очень важно и они не особо стремятся сменить профессию. А есть те, кто очень быстро обучается и выходит на новую работу.

Поэтому, по моему мнению, в достижении цели самый эффективный способ мотивации — поместить себя в условия, когда у вас просто нет иного выбора, кроме как достичь её.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *