Перейти к содержимому

Как стать ios разработчиком с нуля

  • автор:

С чего начать путь iOS-разработчику

Если в последнее время у вас возникал вопрос, востребованы ли iOS-разработчики сегодня, наш ответ — да. И еще как. На апрель 2022 года на резюме одного iOS-разработчика приходится больше четырех открытых вакансий на HH.ru. В App Store ежедневно публикуется 865 новых приложений. Сегодня в магазине находится более 2 000 000 программ. Компании заинтересованы в реализации «яблочных» приложений и найме специалистов для этого.

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

КТО ТАКОЙ IOS-РАЗРАБОТЧИК

iOS-разработчик — это специалист, который пишет приложения для операционной системы iOS.

Задачи iOS-разработчика. На старте карьеры начинающие разработчики чаще всего занимаются исправлением мелких багов и рефакторингом кода. Когда наберетесь опыта, в ваши задачи будет входить: разработка нового функционала приложения и его поддержка, релиз приложения в App Store. Опытным специалистам поручают проектирование архитектуры приложения и настройку CI/CD.

Необходимые устройства. Обязательно понадобятся MacBook или iMac. Желательно также иметь устройство, под которое вы будете разрабатывать, — iPhone или iPad, с помощью которых проверите работу приложения. Конечно, есть специальные программы, которые помогают запустить приложение с ноутбука или компьютера, но в таких эмуляторах доступен не весь функционал мобильного устройства.

Если вы хотите попробовать себя в iOS, но не имеете подходящего устройства, можете рассмотреть следующие варианты:

  1. установка MacOS на виртуальную машину VirtualBox или VMWare;
  2. сервисы для удаленной работы на Mac;
  3. сборка Хакинтош — компьютера, совместимого по железу с продукцией Apple и работающего на Mac OS.

Но для разработки коммерческих приложений эти варианты не подойдут, так как необходимые системные SDK работают только с MacOS.

ПЛЮСЫ И МИНУСЫ ПРОФЕССИИ

iOS-разработчики сейчас очень востребованы.

На апрель 2022 года на портале HeadHunter открыты 1 155 вакансий — это на 27% больше, чем в прошлом году.

Вместе с этим в профессии очень высокий входной порог знаний. На старте вам надо знать алгоритмы и структуры данных, паттерны проектирования, SOLID, Clean Architecture, Swift, основные фреймворки, уверенно пользоваться Xcode, и на этом список не заканчивается.

Разработчик всегда знает, под какие устройства и ОС он разрабатывает. Это облегчает тестирование приложений.

Но существуют сложности с приобретением необходимых устройств.

Apple предоставляет подробную документацию. При возникновении нетипичных проблем вы можете задать вопрос на форумах сообщества, например, Stack Overflow, MacRumors, Ray Wenderlich, Hacking with Swift.

Учитывайте, что большинство этих материалов на английском языке.

Xcode предназначена конкретно для iOS-разработки. Она регулярно обновляется, причем обновления часто привязаны к выходу новой ОС, что позволяет отслеживать критические изменения.

Из альтернативных IDE есть AppCode, но в ней отсутствуют важные для разработки инструменты — конструктор интерфейсов, playgrounds, проверка исходного кода, view debugger и SwiftUI Preview.

При этом разработчики часто сталкиваются с багами и проблемами с производительностью в Xcode. На данный момент оценка Xcode в App Store— 2,5 из 5.

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

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

КАКИЕ HARD И SOFT-СКИЛЛЫ НУЖНЫ IOS-РАЗРАБОТЧИКУ

Hard Skills

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

  • Алгоритмы и структуры данных (объекты, массивы/хэш-мапы, связанные списки, стеки, очереди, деревья, графы);
  • ООП, принципы проектирования SOLID, принципы программирования KISS, DRY и другие, паттерны проектирования, шаблоны GRASP и Clean Architecture;
  • Базы данных и язык запросов SQL;
  • Способы организации взаимодействия с сетью (REST, HTTP, UDP, TCP);
  • Системы контроля версий Git — позволяют вносить изменения в рабочих файлах;

Также нужно иметь представление про:

  • Архитектуры ЭВМ и UNIX-системы;
  • Методологии разработки ПО (Agile, Scrum, Kanban, XP, RAD и другие);
  • Архитектурные подходы в разработке ПО: MVC, MVVM, MVP, VIPER

Языки программирования. iOS-разработчик должен уверенно владеть Swift. Если вы только начинаете его изучение, рекомендуем приложение Swift Playgrounds, с помощью которого вы разберетесь в основах и напишите первое iOS-приложение. Также рекомендуем познакомиться с Objective-C. На этом языке написано много крупных проектов, которые сейчас переписывают на Swift.

Фреймворки и библиотеки:

  • Apple UIKit, Foundation и CoreAnimation — основные фреймворки, которые используются в iOS-разработке. Их знание обязательно.
  • GCD и NSOperation — основные фреймворки для асинхронной работы, позволяют управлять запущенными задачами и процессами. Их знание также обязательно.
  • Moya, Alamofire, RxSwift, RxCocoa, Realm — сторонние библиотеки и фреймворки. Изучите их, так как они часто встречаются в коммерческой разработке.
  • SnapKit, Swinject, Kingfisher — знание этих библиотек не требуется на входе в профессию, но станет преимуществом.

IDE и инфраструктура. Как говорилось выше, предпочтительная IDE для разработки под iOS — это Xcode. Разберитесь в ее функционале: какие редакции есть, как подключить библиотеку, как использовать плагины. Также изучите вспомогательные инструменты: Xcode Instruments app (утилита для дебага и отладки) и Fastlane (утилита для автоматизации сборок и тестирования). И познакомьтесь с горячими клавишами в XCode — их знание помогает существенно сэкономить время разработки.

UI/UX-дизайн. Создание пользовательского интерфейса на основе макета — базовый навык для iOS-разработчика. Чтобы понимать, как строить такие интерфейсы, изучите принципы проектирования интерфейсов.

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

В будущем, когда вы наберетесь опыта, вам пригодятся знания этих инструментов:

  • Core Data — фреймворк для взаимодействия с базой данных;
  • SPM, CocoaPods, Carthage — менеджеры зависимостей и инструменты для подключения в проект утилит, библиотек и зависимостей;
  • Push Notifications — сервис по отправке уведомлений на устройство Apple с вашего приложения;
  • App Store — изучите, как подготовить приложение к публикации в App Store, обновлять и поддерживать приложение, оценивать производительность.

Soft Skills

Ваше развитие как разработчика во многом зависит и от того, как вы умеете работать в команде, отстаивать позицию и доносить мысли. Мы советуем уделить особое внимание следующим soft skills:

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

Умение учиться. IT-сфера непрерывно растет, постоянно появляются новые технологии. Определите, как вы лучше усваиваете информацию,­ и учитесь — при помощи книг, курсов, блогов, каналов, общения на форумах или митапах.

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

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

Системный подход к решению задач. Научитесь оценивать время выполнения задач, соотнося их сложность со своими навыками. Разбивайте задачи на подзадачи и распределяйте время на каждую из них. Расставляйте приоритеты и ответственно относитесь к выполнению. Проявляйте любопытство и старайтесь сами разобраться в проблеме. При этом не зазорно обратиться за помощью, если зашли в тупик: объясните проблему, расскажите о возможных вариантах решения и спросите, как поступил бы более опытный коллега.

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

КАК ПОДГОТОВИТЬСЯ К СОБЕСЕДОВАНИЮ

Чтобы успешно пройти собеседование, от вас потребуются:

  • Хорошие теоретические знания — понимание основ и специфических для iOS-разработки концепций.
  • Успешное выполнение тестового задания. По его результатам работодатель поймет, насколько вам близки технологии и методы, используемые в компании.
  • Портфолио — обычно это GitHub-аккаунт. Пригодится вам для составления резюме и потенциальному работодателю для оценки ваших навыков. Подробнее о том, как составить портфолио, мы писали в статье «Как составить портфолио начинающему программисту».

Помните, что нельзя подготовиться к собеседованию за один день — необходимо не только постоянно расширять кругозор, но и углублять свои знания, возвращаться к уже изученному и практиковаться.

Теория

Чтобы освежить в голове уже пройденный материал, возьмите за основу roadmap’ы. Мы рекомендуем эти: iOS_developer_roadmap и mobile_developer_roadmap.

Также поможет просмотр публичных собеседований на YouTube — вы познакомитесь со структурой собеседований и поймете, чего ожидать.

Практика

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

Задачи на знание структур данных и алгоритмов — LeetCode и HackerRank.

Задачи по Swift:

  • «Ninety-Nine Swift Problems» — разборы задач на логику, работу с алгоритмами и структурами данных с примерами кода на Swift;
  • «Swift Interview Questions and Answers» — вопросы и задачи, которые часто встречаются на собеседованиях.

Регулярно практикуйтесь. Не сойти с дистанции поможет дисциплина: поставьте себе челлендж, создайте чек-лист, отслеживайте прогресс.

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

КАК ПРИШЕЛ В СФЕРУ НАШ IOS-РАЗРАБОТЧИК

iOS-разработчик в MediaSoft

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

Серьезно заинтересовался программированием уже после университета, когда спустя пару лет работы преподавателем, понял, что это не мое. Как-то в разговоре с другом-программистом я поднял тему, что хотел бы себя попробовать в IT, и он посоветовал посмотреть в сторону iOS-разработки.

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

Основной упор в обучении я делал на Swift и UIKit, параллельно изучая систему управления версиями Git и работу UNIX.

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

Около полутора лет ежедневного обучения мне понадобилось, чтобы получить свой первый оффер, о котором я ни капли не пожалел. «Войти в IT» оказалось сложно, но возможно. При должном рвении и приложенных усилиях нет ничего невозможного.

В ИТОГЕ

На старте не обязательно иметь все навыки, описанные в статье. Отсутствие некоторых скиллов вы можете компенсировать высокой мотивацией и развитыми soft-скиллами. Так что без паники 🙂

Учитесь, собирайте портфолио, выходите на стажировки и, вуаля, вы — iOS-разработчик!

Если вы только приступаете к изучению, обратите внимание на обучающие материалы, который мы оставили в конце статьи. Также рекомендуем пройти наш онлайн-курс разработки под iOS — регистрируйтесь на сайте, старт обучения 18 мая 🙂

ЕЩЕ РЕСУРСОВ ДЛЯ ПОГРУЖЕНИЯ

Обучающие курсы и статьи

  • Документация по разработке на Swift.
  • Наш корпоративный блог — там вы найдете 60+ обучающих статей, подготовленных экспертами Академии — разработчиками, тестировщиками и аналитиками с опытом работы на реальных проектах.
  • Блог со статьями о Swift, Xcode и iOS-разработке.
  • Каталог подкастов, статей и новостей из мира Swift.
  • Книга «Грокаем алгоритмы» (Адитья Бхаргава) — иллюстрированное пособие по работе с алгоритмами.
  • Подкаст Podlodka — еженедельные выпуски про IT.
  • Habr — крупнейший ресурс для IT-специалистов.
  • Сообщество по разработке на iOS SwiftBook.
  • #swift
  • #xcode
  • #ios
  • #карьера

Как стать iOS-разработчиком без платных курсов и найти первую работу

Всем привет! Меня зовут Анатолий Касьянов, я СТО компании Holy Water, которая входит в экосистему бизнесов Genesis и занимается разработкой мобильных приложений и игр.

Пять лет назад я начал свой путь в IT. У меня не было технического образования, знакомых или друзей в этой сфере, и я не ходил на платные курсы. Выучил разработку самостоятельно с нуля. Чтобы получить первый реальный опыт, делал проекты на фрилансе, потом перешел в аутсорс-компанию.

В Holy Water я пришел на позицию Senior iOS-разработчика более чем год назад. За это время я очень вырос вместе с проектом: стал техническим директором, у меня в команде 12 сильных специалистов.

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

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

Заблуждение 1. Нужно техническое образование. Нет, не нужно. Да, оно дает преимущество, но минимальное, все можно выучить самостоятельно. Мои рекомендации ищите ниже.

Заблуждение 2. Нужны платные курсы, 100500 менторов и 20 лет обучения. Нет, в интернете много качественных бесплатных источников и крутое, отзывчивое сообщество. В конце статьи найдете список надежных ресурсов. Если упорно заниматься, можно найти первую работу на фрилансе или устроиться джуном в компанию за месяцев с нуля.

Заблуждение 3. На работе будет сложно, меня быстро уволят. Сложно будет, но не уволят. Это нормально, если вы большую часть времени на работе будете искать решения проблемных моментов в интернете. Кроме того, вы будете постоянно совершенствовать свои знания и учить что-то новое. Потому что мобильная разработка быстро меняется, и знания, актуальные два года назад, уже устарели.

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

Что работает:

  • нужно учить не все подряд, а конкретный набор технологий;
  • для быстрого обучения лучше работают книги/статьи, в видеокурсах много воды;
  • если технология/тема сразу не понятна (что будет в 99% кейсов), тогда нужно подключать видеоуроки;
  • английский очень важен — в 90% случаях в начале работы вы будете гуглить информацию на этом языке.

Чтобы успешно пройти первое собеседование, нужно хорошо разбираться в трех основных технических темах: Swift Core, iOS SDK и иметь общие знания по Computer Science (CS). По каждой из этих тем я пропишу вопросы, которые чаще всего задают на интервью.

Swift Core

Самый быстрый способ выучить Swift — документация Apple. Она может быть местами сложная, но максимально четкая и краткая, без лишней воды. В то время как в видеокурсах вода есть, что тормозит процесс.

На мой взгляд, оптимальный подход к изучению языка такой:

Вот мой топ книг и ресурсов:

  • Swift: A Step-by-Step Guide for Absolute Beginners
  • Mastering Swift 5: Deep dive into the latest edition of the Swift programming language, 5th Edition
  • 100 Days of Swift
  • Swift 5 Tutorial 2020

А вот вопросы, которыми я проверяю знание языка у кандидатов:

  • Отличие между массивом и сетом?
  • В каких целях использовать словарь?
  • Что такое non-escaping closure?
  • Примеры использования closures?
  • Отличие между структурой и классом?
  • Что такое instance-метод?
  • Когда лучше использовать структуру/класс?
  • Как работает под капотом опционал?
  • Как можно извлечь значение из опционала?
  • Что такое optional chaining?
  • Какую проблему решают опционалы?
  • Что такое протокол?
  • Зачем дженерики?
  • Как работают ссылки в Swift?
  • Что такое unowned, weak?

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

Computers Science и Architecture — общие технические знания

Когда есть хорошее понимание языка программирования, нужно получить основу по Computer Science. Это Git (основы), дизайн-паттерны и архитектура.

  • Что такое push/pull/branches?

REST/JSON

  • Что такое REST/JSON?
  • Как происходит общение клиент-сервер?

SOLID популярный вопрос, говорит о понимании основных принципов написания хорошего кода.

  • Примеры использования каждого принципа. Теория и свои примеры из работы.
  • Примеры, как этот принцип можно сломать, неправильное его использование.

Design patterns — довольно большая тема, достаточно выучить только основные паттерны, популярные в iOS, научиться ими пользоваться в pet-проектах и уметь привести примеры (Design Patterns by Tutorials By Jay Strawn & Joshua Greene).

  • Какие дизайн-паттерны популярны в iOS? (Singleton, Observable, Delegation, Factory, Builder, Facade).
  • Примеры использования этих паттернов. Минусы и плюсы.

Архитектура. От начинающего специалиста не ожидают много знаний по этой теме. Но хорошее понимание MVC даст преимущество. Как ее использовать, минусы, почему на старте от нее больше пользы и так далее.

  • Что такое MVC? Минусы/плюсы.
  • Слышал про MVVM/VIPER? (Рекомендую прочитать только поверхностно и рассказать основные принципы/отличия, в детали имплементации не лезть).

DRY/YAGNI — популярные аббревиатуры. Прочитайте и выучите, иногда могут спросить. Но если говорите, что знаете, всегда приводите примеры: как работает и как можно сломать.

iOS SDK

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

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

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

Также рекомендую использовать подход «до меня это было сделано 100 раз» и всегда искать готовые решения. С таким подходом вы сможете посмотреть реализацию более опытных людей и разобраться в теме.

Вопросы по iOS SDK

Верстка. На каждый ответ должен быть пример, как делать/не делать.

  • Что такое compression resistance and hugging priority.
  • Отличие frames от bounds?
  • Как верстать с помощью кода? Использовали какие-то библиотеки (snapkit)? Минусы/плюсы?
  • Что используете для верстки — storyboard, xib? Какие минусы у такого подхода?
  • Можете привести примеры создания custom views? Когда их используете?
  • Как работаете с навигацией в проекте? Как открываете следующий экран? К примеру, нужно закинуть uiviewcontroller в navigation stack или презентовать, как лучше реализовать?
  • Работа uicollectionview/uitableview. Какие делегаты используются? Как оптимизировать перформанс?

Application Lifecycle

  • Какой жизненный цикл есть в приложении?
  • Что произойдет с приложением, если вам позвонят?

UIViewController lifecycle

  • Опишите очередность вызова методов при появлении экрана.
  • За что отвечает viewDidLayoutSubviews?

База данных и хранение данных. Realm/Core Data/UserDefaults

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

  • Как можно хранить данные?
  • Как хранить пароли юзера?

Pet projects. Когда начинать и в чем суть

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

Считаю эффективным такой подход:

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

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

Вот пару идей: приложение по фитнесу/продуктивности/привычкам/живые обои. Можете посмотреть топ-чарты, выбрать проект, который кажется интересным.

Есть много готовых дизайнов/темплейтов. Берите любой и пытайтесь по нему работать. Сразу рекомендую начать с Figma. Примеры — здесь.

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

Структура финального проекта состоит из:

  • Приложения, которое работает и выполняет поставленную цель.
  • Чистого кода, в котором есть хорошее применение SOLID, YAGNI, DRY.
  • Хороший код-стайл — небольшие классы, отлично подобранные имена для переменных, удобная группировка файлов внутри проекта Xcode и так далее.
  • Сторонних библиотек.

Soft skills

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

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

  • Специалист хорошо реагирует на фидбэк, не сдается, проделывает много работы, чтобы пофиксить проблему и избежать ее в будущем.
  • Он настойчив — готов работать над задачей до тех пор, пока не сможет решить ее. Также он не будет легко сдаваться и бежать спрашивать, что делать.
  • Инициативный — готов выучить новую технологию, с которой никогда не сталкивался.
  • Доводит дела до конца — если сказал, что разберется/прочитает статью, закончит книгу, то обязательно сделает это.

Пару советов насчет CV

У Junior-специалиста нет опыта работы, поэтому сосредоточиться нужно на знаниях. Несколько советов по поводу оформления резюме:

  • Стоит указывать только те технологии, с которыми реально работали. Исходя из того, что вы напишете, будут задавать почти все вопросы на собеседовании. Лишнее лучше не упоминать.
  • Можно детально расписать о своих pet-проектах, технологиях. Кинуть референсы на Git. Примеры таких работ повышают ценность резюме.
  • Можно рассказать, какие статьи/книги/видеоуроки изучили.

Что важно на первых собеседованиях

  • Уметь хорошо отвечать на все вопросы, приведенные выше.
  • Приводить примеры в своей работе и pet-проектах.
  • Уметь «сломать» любой этот вопрос и не бояться рассказать о негативном опыте.

Кажется, на этом все. Если освоите все перечисленное, но вас не возьмут на работу, приходите ко мне 🙂

Топовые iOS-ресурсы

Статьи, блоги

  • Learn Swift 5.3 for free
  • High quality programming tutorials
  • objc.io
  • Weekly Swift articles, podcasts and tips by John Sundell
  • Use Your Loaf
  • iOS Dev Weekly

Видео

Список ресурсов по разработке смотрите по ссылке.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

�� Подобається Сподобалось 15

До обраного В обраному 15

Моя история в IT: как самостоятельно изучить Swift и стать iOS-разработчиком

Максим — iOS-разработчик из Казани, который работает в компании Neti. Он рассказал, почему решил стать iOS-разработчиком и что из этого вышло.

Максим — iOS-разработчик из Казани, он самостоятельно освоил Objective-C и Swift и пишет мобильные приложения с 2017 года. Он успел поработать в стартапе и международной ИТ-компании, делал приложения для клиента из Арабских Эмиратов и Музея русского импрессионизма. С 2020 года Максим работает в Neti.

В автобусе увидел у человека iPad и решил стать iOS-разработчиком

— Максим, где ты учился?

Мне кажется, у выпускников вообще нет понимания, что делать после школы. По крайней мере, у меня не было. Я просто постарался максимально хорошо сдать ЕГЭ и подал документы на факультет, на который сложнее всего пройти по баллам. Это оказалась «Информационная безопасность» в КНИТУ-КАИ им. А.Н.Туполева: чтобы поступить на бюджет, нужно было набрать за ЕГЭ 220 баллов. Я подумал, что раз туда сложно поступить, значит, это перспективная специальность. Но сначала мне там не очень нравилось — было мало программирования.

На первом курсе мы изучали Assembler, низкоуровневый язык программирования, который мало понятен людям. Он мне казался очень странным. С третьего курса мы начали программировать на C# и стало интереснее.

— Как получилось, что ты стал именно iOS-разработчиком? Не легче ли было развиваться в разработке на C#?

Я заинтересовался разработкой под iOS на втором курсе, до С#. Тогда под iOS писали на Objective-C, Swift только появился. Помню, в автобусе увидел у человека iPad и подумал: «Прикольно делать софт для iOS, iPad, iPhone». После этого случая я начал изучать Objective-C по учебнику и видео на YouTube. Потом продал игровой компьютер, купил MacBook и стал практиковаться. Через 7–8 месяцев самообучения решил искать работу. Сначала не клеилось: без опыта никуда не брали. Я прошел 5 собеседований, прежде чем устроился в ИТ-отдел банка.

Спарсил «Википедию», чтобы устроиться в банк

— Помнишь тестовое на собеседовании в банке?

Попросили написать список городов России на Objective-C. Нужно было, чтобы в нем отображались название, герб и небольшое описание. Я справился с заданием за 6-8 часов: подтянул библиотеку парсера страниц и спарсил «Википедию».

— Какие задачи ты решал в банке?

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

Собеседование iOS разработчика: вопросы и задания

Когда увидел Swift, подумал: «Что это за прелесть?!»

— Быстро нашел новую работу?

Да. Я устроился в мультипликационную студию, где делал игровое приложение, по которому дети могли учить алфавит. Там тоже проработал недолго — несколько месяцев. На проекте я был единственным разработчиком и мне не хватало наставника, который бы научил меня хорошей архитектуре. После увольнения был перерыв около года, а потом я вернулся в разработку. Устроился в ИТ-компанию, которая делала мобильные приложения. Там я познакомился со Swift. Помню, увидел его и подумал: «Что это за прелесть?!»

Все понятно и логично. Не нужно писать кучу кода в отличие от Objective-C. Объявления переменных и функций в Swift гораздо легче и проще. Я перешел с Objective-C на Swift быстро, за пару дней.

— Какие проекты ты делал в ИТ-компании?

У меня было несколько сложных и интересных проектов. Например, мы сделали приложение для Музея русского импрессионизма, в котором можно посмотреть видео или послушать аудио о картинах. Еще запомнилось приложение «Зеномания» для фанатов волейбольного клуба «Зенит». В нем можно почитать новости, посмотреть матчи, купить мерч с символикой команды. А еще там можно «примерить» шарф или кепку и сделать «зеноселфи».

— Тебе нравилось в ИТ-компании?

Да. Там интересный коллектив, классные проекты, коллеги помогали другу другу и обучали новичков. За полтора года, что я там работал, прокачался до начинающего мидла.

— Что было дальше?

Из ИТ-компании я ушел в стартап — делали социальную сеть наподобие «ВКонтакте» для Арабских Эмиратов. В нем было очень много функционала: чат, фото, видео, посты, группы, внутренняя валюта, видеозвонки.

— С реализацией какого функционала возникли сложности?

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

— Сколько ты проработал в стартапе?

Около года. В один момент прекратилось финансирование и все загнулось. Больше я в стартап не пойду. После этого я полгода работал в интернет-магазине, а после устроился в международную ИТ-компанию Luxoft.

Как вместо Москвы переехал в Питер и устроился в Luxoft

— Как ты вышел на Luxoft?

Я планировал переехать из Казани в Москву и искал работу в столице через hh.ru. Мне позвонила HR-менеджер Luxoft. Мы поговорили, и она уже собиралась назначить собеседование, когда я спросил: «Вы находитесь в Москве?» Она ответила, что нет. Я сказал, что тогда ее предложение мне неинтересно, а HR-менеджер спросила: «А если мы вот такую зарплату предложим?» Так вместо Москвы я переехал в Питер.

— Я слышала, что в Luxoft очень жесткий отбор и сложные собеседования…

Собеседование действительно было сложным, но интересным. Оно проходило не в формате вопрос-ответ: мы просто разговаривали с другим разработчиком о разработке, iOS, Git.

— Как тебе в Luxoft?

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

В Luxoft я занимался интересным проектом — делали приложение для клиентов сети АЗС. По-моему, мы одними из первых добавили в приложение возможность использовать виртуальную карту лояльности вместо физической. Тогда эта фича еще не была распространенной.

— Почему ты оттуда ушел? Это крутое место, многие хотят работать в Luxoft.

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

— Одиноко было, наверное?

Ну да. В общем я решил вернуться в Казань и устроиться в Neti.

Как пришел в Neti

— Почему именно в Neti?

Я начал сотрудничать с Neti, еще когда работал в Luxoft. Осенью 2019 года мне написал руководитель проектов и спросил, могу ли я помочь с приложением для застройщика. Клиент хотел загружать в приложение тяжелые документы в формате pdf и оставлять в них замечания. РП вообще не был уверен, что это возможно сделать, а я реализовал функционал нативно, без библиотек. После этого я остался на проекте, а летом 2020 года перешел в штат Neti.

— И как тебе здесь?

Здорово. Очень комфортно, все нравится. Много интересных задач. Например, решал прикольную задачку с шахматкой квартир в приложении для риелторов. Делал список, который скроллится вправо, влево, вверх и вниз. Самым сложным было синхронизировать вертикальный и горизонтальный скроллы.

Советы начинающим разработчикам

— Трудно ли учить языки программирования самостоятельно?

Когда я начал учить Objective-C, у меня еще не было программисткой базы. Она появилась через год, когда на третьем курсе вуза нас познакомили с ООП, SOLID на примере С#, наследованиями, объявлениями классов, объявлениями методов. Это сильно пригодилось. На самом деле, без базы непросто. Поначалу вообще непонятно что происходит. Потом, где-то через полгода, появляются какие-то проблески и становится более-менее ясно. Но вообще тем, кто хочет стать разработчиком, я рекомендую идти на курсы, если есть такая возможность.

При самостоятельном обучении ты, конечно, чему-то научишься, но не факт, что будешь делать хорошо и правильно. Можно научиться так, что потом долго придётся переучиваться. А на курсах изначально закладывают правильную базу.

Большая подборка практических и обучающих материалов по Swift

— У тебя, как у самоучки, была проблема, что ты чему-то неправильно научился и потом пришлось переучиваться?

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

— Что еще ты мог бы посоветовать начинающим программистам?

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

— Последний вопрос. Стал ли ты адептом Apple: iPhone, MacBook, Air Pods, iPad? Только Apple и никакого Android.

Я всегда был адептом Apple. У меня всегда был iPhone. Может, это тоже повлияло на то, чем я занимаюсь. Сейчас у меня просто больше разных Apple-устройств, потому что они связаны с работой. Но я не против Android — на самом деле есть крутые «андроиды».

Следите за новыми постами по любимым темам

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

Как стать iOS разработчиком с нуля? Мой путь.

ios-dev-roadmap

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

Самые главные качества которые понадобятся они из разряда Soft Skills. Это, прежде всего целеустремленность и сила воли.

Тебе знакомо чувство, когда ты вроде бы что-то изучаешь, читаешь, тратишь много времени на материал, а понимания либо нет, либо оно везде настолько поверхностное, что не даёт начать самостоятельную разработку? Кругом пробелы, и заполнить их довольно трудно. Закрадываются мысли: «Блин, возможно iOS разработка(программирование) не для меня. «

Я тоже прошёл через это. Так получилось в жизни, что моя основная работа прямо не связана с IT. И на самостоятельное обучение я потратил не один год.

Так вот, чтобы избежать прокрастинации и выйти из бесконечного цикла обучающих материалов (а сейчас всяческих курсов выпускают все больше и больше) я хочу поделиться своей дорожной картой становления iOS разработчиком. Самое главное – ПРАВИЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ, и методичное следование заданному плану. На каждый пункт этой карты я сделаю видео материал на YouTube и статью на сайте. Пожалуйста, подписывайся и добавляй в закладки.

iOS Developer Roadmap

  • Изучаем основы
  • Синтаксис языка программирования
  • Принципы построения мобильного интерфейса
  • iOS технологии
  • Cocoa паттерны проектирования
  • Клиент-серверное взаимодействие
  • Базовые фреймворки
  • Погружаемся глубже
  • Хранение данных
  • Отладка, Тестирование
  • Собираем проект
  • Вывод

Прежде всего хочу сказать, и даже скорее призвать тебя, дорогой читатель – УЧИ АНГЛИЙСКИЙ ЯЗЫК! Английский язык пригодится тебе в жизни во многих сферах, но для программирования он жизненно важен. IT это такое направление, где все развивается очень стремительно. Технологии постоянно обновляются и совершенствуются, выходят новые фреймворки. И ко всему этому документация и литература появляется прежде всего на английском языке. Множество различных API просто не имеют русского перевода, а их функционал тебя удивит. Что касается книг на русском, то в большинстве случаев перевод очень посредственный, либо эта информация уже устарела.

Изучаем основы

Основы – это касается прежде всего базовых школьных знаний алгебры. Математические операции: сложение, вычитание, умножение, деление, деление с остатком, округление, возведение в степень. Хорошо бы понимать что такое логарифмы и интегралы. Понятия инкремента, декремента.

Дальше системы счисления, базовые типы данных (символьные, строковые, числовые, логические).

Неплохо так же иметь представление об основах устройства компьютера (или по старинке ЭВМ), его основные элементы, как работает процессор, как устроена память (ОЗУ, ПЗУ). Знать и понимать, как работают Операционные Системы (ОС), что такое ядро, драйвера. В нашем случае нужно подружиться с MacOS, ведь весь процесс разработки происходит именно под этой системой.

Сюда же относится изучение Интегрированной Среды Разработки (IDE) XCode, SwiftPlayground.

  • Числа и системы счисления
  • Конвертация десятичного числа в двоичное и наоборот
  • Алгоритм бинарного поиска

Синтаксис языка программирования

Для разработки под iOS используется два языка программирования:

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

Swift очень дружелюбный язык для новичков, в нем нет странного запутанного синтаксиса. Все достаточно очевидно. Мне очень нравится этот язык, тем более что поддержка его вышла за пределы Apple, и можно начать изучать и практиковаться на Swift не имея компьютера на MacOS. О том, как это сделать я расскажу в отдельной статье.

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

  • Официальная документация Swift
  • Документация на русском

Принципы построения мобильного интерфейса

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

iOS технологии

Базовые вещи, такие как структура каталогов приложения, жизненный цикл приложения, как соединить пользовательский интерфейс с кодом с помощью ViewController, как расположить элементы пользовательского интерфейса с помощью AutoLayout так, чтобы приложение выглядело одинаково красивым на различных устройствах очень хорошо отражены в основном БЕСПЛАТНОМ учебном курсе от Apple.

Я рекомендую начинать с секции UIKit, это основной фреймворк для построения интерфейсов на котором работает 90% всех приложений на данный момент. Он очень хорошо документирован, и на любую не стандартную ситуацию можно найти решение на различных форумах. В отличии от SwiftUI. Это новая технология, безусловно классная, но на данный момент еще сырая. В России 99% работодателей на собеседовании устроит такой ответ на вопрос про SwiftUI:

— «Я знаю что SwiftUI существует, и готов уделить изучению данной технологии свое время.«

Отдельно стоит отметить многопоточность и NSOperation. Это важная тема, информация тут:

  • Apple Dev Docs – NSOperation
  • Использование NSOperation и NSOperationQueue в Swift
  • NSOperation and NSOperationQueue To Improve Concurrency in iOS

Cocoa паттерны проектирования

Cocoa – это фреймворк, созданный Apple для написания приложений на устройствах под управлением MacOS и iOS. За базовую архитектуру Apple выбрала Model-View-Controller (MVC). Все остальное, можно сказать, ее наследники. Архитектура нужна приложению, чтобы структурировать свой код и не потеряться в нем. Для того, чтобы код был читаем для других программистов, и когда тебе через 2 недели понадобиться вернуться к нему, не составит труда понять, что есть что.

На своем YouTube канале я уже рассказал на примере как использоваться MVC, MVP, Делегирование в своем проекте.

Клиент-серверное взаимодействие

Современные приложения практически все так или иначе взаимодействуют с удаленными серверами. Будь то загрузка пользовательских данных, хранение файлов в облаке, подгрузка изображений в ленту. Это все относится к серверной части. Так называемый backend. А вот само приложение чаще всего является frontend’ом. Оно выполняет роль посредника между действиями пользователя и сервером. Нужно уметь понимать и разграничивать frontend и backend, понимать как прилолжение общается с сервером, какие запросы формирует, и как это использовать себе во благо.

Существует огромное количество различных API сторонних сервисов, которые совершенно бесплатно можно интегрировать в свои проекты.

  • Что такое API?
  • Коллекция публичых API

Базовые фреймворки

Эти вещи должен знать (ну или хотя бы понимать и знать где взять информацию) каждый iOS разработчик. Сюда можно включить CoreFoundation, SwiftFoundation, SwiftStandart, Cocoa Touch, UIKit, UIDynamics, CoreAnimations, DispatchQueue.

  • Хорошая бесплатная книга про iOS – iOS notes for professionals

Погружаемся глубже

Приложения становятся все больше и сложнее. Количество модулей в проекте увеличивается. Встает вопрос об оптимизации написания кода. И тут на смену MVC приходит паттерн MVVM.

  • Model-View-ViewModel for iOS
  • Освоение MVVM на iOS
  • What is MVVM?

VIPER – еще один архитектурный паттерн.

  • Разбор архитектуры VIPER на примере небольшого iOS приложения на Swift 4
  • Сравнение архитектур Viper и MVVM: Как применить ту и другую

Coordinator – паттерн разработки iOS приложений, который целиком отвечает за навигацию между контроллерами, исключая Segue’s в Interface Builder. На эту тему у меня есть хороший видео-пример написания простого приложения:

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

  • Зачем нужно реактивное программирование на Swift?
  • Узнать И Овладеть ⚔️ Основами RxSwift За 10 Минут

Данные темы тоже очень важные, но их можно на время пропустить, чтобы уделить больше времени практике и отработать уже пройденный материал.

Хранение данных

Рано или поздно, при проектировании приложения встанет вопрос о том, что нужно каким-то способом сохранять состояние приложение после его завершения. Или даже удаления. Есть много разных способов достичь этой цели. UserDefaults, CoreData, Sqlite, Realm, Serialize, Cloud.

Чуть позже я обязательно освещу эти темы подробно. Добавляй в закладку и подписывайся на Youtube канал. Статья будет обновляться и обрастать ссылками.

  • Что такое SQL? Введение в базы данных.
  • Базовые команды SQL часть 1.
  • Базовые команды SQL часть 2.

Отладка, Тестирование

В процессе написания кода неизбежно будут возникать ошибки. Не стоит из-за этого огорчаться. Прямо сейчас я рекомендую пойти на StackOverFlow и завести себе аккаунт. Там есть много ответов на типичные вопросы и ошибки новичков.

Собираем проект

Финиш. Сборка проекта. Тут стоит создать учетную запись iOS разработчика, присоединиться к программе Apple. Изучить правила и тонкости публикации приложений в магазине AppStore. Научиться работе с сервисами аналитики приложений.

Вывод

Шаг за шагом, изучай технологии описанные выше. Главное поставь цель. Начни с языка Swift. установи Xcode. Начни создавать приложения. Обязательно нужна практика, чтобы картина стала целостной в голове. Будь активным учеником, старайся сразу закреплять усвоенный материал примерами. Не нужно хвататься сразу за все. Так ты сможешь минимизировать трату времени в пустую. У тебя все получится. Удачи.

P.S. А если возникнут вопросы, не стесняйся оставлять комментарии тут на сайте, и под моими видео на YouTube. Буду рад помочь.

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

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