Найти работу iOS-разработчику, особенно, первую может быть не просто. Специально для джуниор-специалистов старший iOS-разработчик KOTELOV Агил Гаджиев рассказал, что делать коллегам, чтобы найти первую работу. Разбираемся, с чего начинать поиск, как оформить резюме и нужно ли накручивать опыт, а главное — как выделиться среди кандидатов.
С чего начать поиски
Стоит помнить, что iOS-разработка — имеет не самый высокий порог входа. Вот, что можно посоветовать для начала.
Освойте базу. Не тратьте время на поиск идеального курса или программы — изучить азы можно и по бесплатным ресурсам. Например, для знакомства со Swift хорошо подойдут ролики на канале The Swift Developers, также можно почитать стэнфордские курсы. Хороший источник информации – документация Apple — рекомендуем перевод на swiftbook.ru.
Создайте пет-проект. Это поможет разложить знания в голове по полочкам. Можно взять банальную идею в виде трекера задач, парсера новостей или счётчика калорий, можно выдумать что-то своё. В целом на первом проекте сильно не оригинальничайте, главное — набить руку в написании кода.
Изучите теорию. Под теорией понимаются темы, которые обязательно будут поднимать на техническом собеседовании и без знания которых в принципе невозможна работа даже на стартовых позициях. Какие темы и где изучать, читайте далее в статье.
Готовиться можно самостоятельно, но лучше всего найти ментора на пару месяцев — это поможет не сбиться с пути и избежать банальных ошибок, которые совершают все джуны. Это не значит, что вы не сможете подготовиться сами, но с ментором обучение пойдет быстрее и проще.
Как выделиться на собеседовании
Список того, что нужно знать джуниор iOS-разработчику, чтобы гарантированно пройти техническое собеседование:
Сразу оговоримся: вы не должны знать всё, что написано ниже, на 100%. Это знания и навыки идеального кандидата в идеальном мире: скорее всего, требования будут меняться в зависимости от заказчика. Но это те темы, благодаря которым вы сможете выделиться среди сотен других джунов.
ARC — автоматический подсчёт ссылок
Управление памятью — частая тема на интервью. Ваша цель — показать, что вы не просто знаете, что это такое, но и умеете применять на практике.
Да, с одной стороны, джун вроде бы не должен знать, что ARC делает под капотом. С другой, понимание моментов, о которых обычно спрашивают только мидлов, поможет продать себя на собеседовании дороже.
Что нужно знать, чтобы найти работу iOS-разработчику :
- виды ссылок: weak, unowned, strong;
- как объект держится в памяти, когда он удаляется;
- что такое счётчик ссылок;
- как решить проблему retain cycle.
Скорее всего, вас спросят про отличие слабых (weak) ссылок от безымянных (unowned). В редких случаях разговор может зайти и про боковые таблицы (side table) — если сможете объяснить, зачем этот механизм добавили в Swift, выгодно себя покажете.
GCD и многопоточность
Важная тема, знания которой дает 100500 баллов.
Нужно знать:
- многопоточность, асинхронность, поток, процесс. Насчёт последних двух спрашивают редко, но лучше один раз выучить и больше к этому не возвращаться — к тому же это не очень сложно;
- очередь в рамках GCD, отличие от потока;
- типы очередей в GCD;
- Класс обслуживания качества QoS: понимать, когда и зачем они используются;
- проблемы многопоточности: их много, но хватит трёх основных — deadlock, race condition и priority inversion. Нужно понимать, когда эти проблемы возникают, и уметь их решать;
- потокобезопасность и способы синхронизации в iOS (барьеры, семафоры, мьютексы — их больше, но этого должно хватить);
- DispatchGroup, DispatchWorkItem и зачем они нужны.
UIKit
Несмотря на то что Apple плавно переводит разработку на SwiftUI, большая часть приложений всё ещё использует UIKit — соответственно, и вакансий, где требуется знание этого фреймворка, значительно больше.
Вот какие темы следует изучить, чтобы найти работу джуниор iOS-разработчику:
- жизненный цикл ViewController;
- как работает Auto Layout;
- как верстать экраны кодом;
- TableView и CollectionView.
Общие вопросы
- SOLID: расшифровать, что означает каждая буква, привести примеры;
- ООП: рассказать обо всех концепциях, привести примеры;
- Типы Value vs Reference: понимать, какие типы относятся к Value, а какие к — Reference; что хранится на куче, а что на стеке, а также уметь приводить примеры исключений из этих правил;
- Структуры против классов: уметь называть все различия;
- Copy on write: что это, зачем это нужно, какие типы поддерживают по умолчанию и как этот принцип можно реализовать самому;
- hitTest: раньше у джунов не спрашивали про обработку нажатий, но теперь и эта тема начала встречаться на собеседованиях. Нелишним будет разобраться, как работает пропуск нажатий и для чего нужен метод point(inside:with:);
- Диспетчеризация: что это, какие виды диспетчеризации есть в Swift;
- Базовые архитектурные паттерны и алгоритмы: понимать, как устроены MVP, MVC, MVVM, уметь называть их сходства и различия;
Найти наконец работу iOS-разработчику: главное
Мы снимали несколько видео и разборов о правильности составления резюме, поэтому не будем долго на этом останавливаться, но вот что важно знать сейчас:
Указывайте достижения, а не процесс. Вместо «делал, разрабатывал, программировал» лучше писать «создал, реализовал, придумал, разработал». Всем важно видеть итоговый результат работы. Идеально, если результат можно изменить в цифрах — например: «Ускорил загрузку экрана на N%».
Рассказывайте о пет-проектах. Если ищете первую работу, обязательно указывайте ваши пет-проекты, но не оставляйте ссылки на недоделанные работы. Пет-проекты храните на GitHub.
Пишите сопроводительные письма. Вы же не хотите отсеяться из-за того, что компания рассматривает резюме только с сопроводительными письмами? Но не стоит тратить на это слишком много времени — составьте парочку хороших шаблонов и меняйте 1–2 абзаца для каждой компании.
Нужно ли накручивать опыт в резюме, чтобы получить работу iOS-разработчику?
Холиварная тема, поэтому рассмотрим возможные плюсы и минусы. На рынке мало вакансий для джуниоров, поэтому многие накручивают или округляют опыт, чтобы привлечь рекрутеров. Некоторые разработчики и hr специалисты не считают это серьёзным обманом, потому что всё вскроется на этапе собеседования: если вы не подходите, то не пройдёте. А если вас взяли, значит, навыков у вас достаточно, чтобы покрыть недостаток опыта. Поэтому, если вы устали от того, что ваше резюме не замечают, можно добавить немного стажа, а на собеседование прийти суперподготовленным, чтобы подтвердить ваш опыт.
О том как на это смотрят рекрутеры, мы поговорили на подкасте с Анной Афониной.
Менторство
Ментор нужен не всем: практически любой технологии можно научиться самому, потратив какое-то время. Здесь лишь расскажем, чем менторство поможет вам на пути к первой работе:
- Контроль. Многим нужен дополнительный пинок, чтобы чем-то заниматься, — ментор с этой функцией идеально справляется.
- Сокращение времени обучения. Ментор сможет сразу сказать, что вам нужно учить, а что отложить. Хороший ментор — такой, который не просто скидывает ссылки на материалы, а разбирает вопросы с нуля до уровня собеседования.
- Поддержка. У вас всегда будет человек, к которому можно обратиться за помощью, даже в свободное от занятий время. На первых этапах бывают затыки на несколько часов, которые человек с опытом решил бы за пару минут, — в этом случае можно спросить ментора.
- Индивидуальный подход. Менторство подразумевает составление программы именно под ваши нужды, с учётом ваших способностей. Выстроенная таким образом система обучения помогает не забросить занятия при первой же трудности.
Минус только один – стоимость. Но с первой же айтишной зарплаты можно все эти расходы покрыть. Поэтому каждый принимает решение сам: двигаться самостоятельно или обратиться за помощью.
Узнать больше про IT-индустрию можно по ссылке на наши статьи и подкасты. Подписывайтесь на телеграмм-канал, чтобы быть в курсе самых горячих новостей.