Найти работу iOS-разработчику, особенно, первую может быть не просто. Специально для джуниор-специалистов старший iOS-разработчик KOTELOV Агил Гаджиев рассказал, что делать коллегам, чтобы найти первую работу. Разбираемся, с чего начинать поиск, как оформить резюме и нужно ли накручивать опыт, а главное — как выделиться среди кандидатов.

С чего начать поиски

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

Освойте базу. Не тратьте время на поиск идеального курса или программы — изучить азы можно и по бесплатным ресурсам. Например, для знакомства со Swift хорошо подойдут ролики на канале The Swift Developers, также можно почитать стэнфордские курсы. Хороший источник информации – документация Apple — рекомендуем перевод на swiftbook.ru.

Создайте пет-проект. Это поможет разложить знания в голове по полочкам. Можно взять банальную идею в виде трекера задач, парсера новостей или счётчика калорий, можно выдумать что-то своё. В целом на первом проекте сильно не оригинальничайте, главное — набить руку в написании кода.

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

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

Как выделиться на собеседовании

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

Сразу оговоримся: вы не должны знать всё, что написано ниже, на 100%. Это знания и навыки идеального кандидата в идеальном мире: скорее всего, требования будут меняться в зависимости от заказчика. Но это те темы, благодаря которым вы сможете выделиться среди сотен других джунов.

ARC — автоматический подсчёт ссылок

Управление памятью — частая тема на интервью. Ваша цель — показать, что вы не просто знаете, что это такое, но и умеете применять на практике.

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

Что нужно знать, чтобы найти работу iOS-разработчику :

  1. виды ссылок: weak, unowned, strong;
  2. как объект держится в памяти, когда он удаляется;
  3. что такое счётчик ссылок;
  4. как решить проблему retain cycle.

Скорее всего, вас спросят про отличие слабых (weak) ссылок от безымянных (unowned). В редких случаях разговор может зайти и про боковые таблицы (side table) — если сможете объяснить, зачем этот механизм добавили в Swift, выгодно себя покажете.

GCD и многопоточность

Важная тема, знания которой дает 100500 баллов.

Нужно знать:

  1. многопоточность, асинхронность, поток, процесс. Насчёт последних двух спрашивают редко, но лучше один раз выучить и больше к этому не возвращаться — к тому же это не очень сложно;
  2. очередь в рамках GCD, отличие от потока;
  3. типы очередей в GCD;
  4. Класс обслуживания качества QoS: понимать, когда и зачем они используются;
  5. проблемы многопоточности: их много, но хватит трёх основных — deadlock, race condition и priority inversion. Нужно понимать, когда эти проблемы возникают, и уметь их решать;
  6. потокобезопасность и способы синхронизации в iOS (барьеры, семафоры, мьютексы — их больше, но этого должно хватить);
  7. DispatchGroup, DispatchWorkItem и зачем они нужны.

UIKit

Несмотря на то что Apple плавно переводит разработку на SwiftUI, большая часть приложений всё ещё использует UIKit — соответственно, и вакансий, где требуется знание этого фреймворка, значительно больше.

Как найти работу iOS-разработчику и выделиться на собеседовании

Вот какие темы следует изучить, чтобы найти работу джуниор iOS-разработчику:

  1. жизненный цикл ViewController;
  2. как работает Auto Layout;
  3. как верстать экраны кодом;
  4. TableView и CollectionView.

Общие вопросы

  1. SOLID: расшифровать, что означает каждая буква, привести примеры;
  2. ООП: рассказать обо всех концепциях, привести примеры;
  3. Типы Value vs Reference: понимать, какие типы относятся к Value, а какие к — Reference; что хранится на куче, а что на стеке, а также уметь приводить примеры исключений из этих правил;
  4. Структуры против классов: уметь называть все различия;
  5. Copy on write: что это, зачем это нужно, какие типы поддерживают по умолчанию и как этот принцип можно реализовать самому;
  6. hitTest: раньше у джунов не спрашивали про обработку нажатий, но теперь и эта тема начала встречаться на собеседованиях. Нелишним будет разобраться, как работает пропуск нажатий и для чего нужен метод point(inside:with:);
  7. Диспетчеризация: что это, какие виды диспетчеризации есть в Swift;
  8. Базовые архитектурные паттерны и алгоритмы: понимать, как устроены MVP, MVC, MVVM, уметь называть их сходства и различия;

Найти наконец работу iOS-разработчику: главное

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

Указывайте достижения, а не процесс. Вместо «делал, разрабатывал, программировал» лучше писать «создал, реализовал, придумал, разработал». Всем важно видеть итоговый результат работы. Идеально, если результат можно изменить в цифрах — например: «Ускорил загрузку экрана на N%».

Рассказывайте о пет-проектах. Если ищете первую работу, обязательно указывайте ваши пет-проекты, но не оставляйте ссылки на недоделанные работы. Пет-проекты храните на GitHub.

Пишите сопроводительные письма. Вы же не хотите отсеяться из-за того, что компания рассматривает резюме только с сопроводительными письмами? Но не стоит тратить на это слишком много времени — составьте парочку хороших шаблонов и меняйте 1–2 абзаца для каждой компании.

Нужно ли накручивать опыт в резюме, чтобы получить работу iOS-разработчику?

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

О том как на это смотрят рекрутеры, мы поговорили на подкасте с Анной Афониной.

Менторство

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

  1. Контроль. Многим нужен дополнительный пинок, чтобы чем-то заниматься, — ментор с этой функцией идеально справляется.
  2. Сокращение времени обучения. Ментор сможет сразу сказать, что вам нужно учить, а что отложить. Хороший ментор — такой, который не просто скидывает ссылки на материалы, а разбирает вопросы с нуля до уровня собеседования.
  3. Поддержка. У вас всегда будет человек, к которому можно обратиться за помощью, даже в свободное от занятий время. На первых этапах бывают затыки на несколько часов, которые человек с опытом решил бы за пару минут, — в этом случае можно спросить ментора.
  4. Индивидуальный подход. Менторство подразумевает составление программы именно под ваши нужды, с учётом ваших способностей. Выстроенная таким образом система обучения помогает не забросить занятия при первой же трудности.

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

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