Код
#статьи

Учись как джун, собеседуйся как мидл: как iOS-разработчику найти первую работу

Чтобы быстрее получить оффер, новичкам стоит осваивать навыки мидл-уровня, считает Агил Гаджиев. Оглашаем весь список.

Иллюстрация: freepik / rawpixel / Freepik / X Wen / Michal Franczak / Unsplash / Apple Inc / Дима Руденок для Skillbox Media

Об эксперте

Агил Гаджиев

Senior iOS-разработчик в диджитал-студии Kotelov

Привет, меня зовут Агил Гаджиев, мне 22 года, я старший iOS-разработчик в компании Kotelov. В этой статье помогу ответить на вопросы джуна, который ищет первую работу в iOS-разработке. Расскажу, как оформить резюме, стоит ли накручивать опыт работы, а главное — на какие темы стоит делать упор при подготовке, чтобы выделиться на фоне других кандидатов.

С чего начать

iOS-разработка — это не что-то недосягаемое. Вот что я советую для начала.

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

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

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

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

Что изучить, чтобы выделиться на собеседовании

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

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

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

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

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

Что нужно знать:

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

Что почитать по теме: ответы на большую часть вопросов можно найти в этой статье на «Хабре». Но что-то всё равно придётся погуглить самостоятельно.

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

На этой теме можно набрать много дополнительных баллов, а материалов в Сети — предостаточно. Вот вкратце, что нужно знать:

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

Что почитать по теме: статьи на «Хабре» про многопоточность: часть 1 и часть 2.

UIKit

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

Вот какие темы следует изучить:

Что изучить по теме: статью по UIKit в документации, видеоуроки от The Swift Developers на YouTube.

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

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

Пара слов о резюме

Не буду поднимать тему правильного оформления резюме — это уже сделали миллион раз до меня, но дам несколько советов.

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

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

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

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

Холиварная тема, поэтому рассмотрим возможные плюсы и минусы.

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

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

Даже если вы сможете сразу устроиться мидлом, вам придётся пахать по 10 часов в день, чтобы удержаться, — и не факт, что получится. Я советую более спокойный путь, но если вы уверены в себе и у вас уже идёт десятый пет-проект, а вы всё ещё не работаете — то вперёд.

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

Менторство

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

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

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

Если вы дочитали до конца и у вас возникли какие-то вопросы или нужна помощь — пишите мне в Telegram: @gadzhiev_agil

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована