iOS-разработчиком становятся после одного законченного приложения на Swift, которое ставится на устройство и объясняется без «так в туториале». Симулятор помогает, но рекрутер спокойнее, когда видно, что вы ловили разрешения, клавиатуру, плохую сеть и жизненный цикл. Магазин — плюс, не единственный билет, если GitHub честный и сборка воспроизводится.
Ниже — какой минимум Swift и платформы, как показать код без NDA, куда смотреть junior-вакансии. Зарплат «в среднем» здесь нет: коридор собирайте фильтрами на вакансиях iOS.
Коротко:
- Одно приложение со списком, деталью, сетью и пустым/ошибочным состоянием сильнее портфолио из десяти Playgrounds.
- Стек входа: Swift, SwiftUI или UIKit — по вакансиям, сеть, локальные данные, Git. Objective-C читайте потом, если легаси в слотах.
- Нужен Mac. Без него вход в нативный iOS почти закрыт; облачные Mac — костыль, не стратегия на год.
- Код с работы под NDA не выкладывайте. Учебный клон сценария и описание роли — да.
- Junior+remote узкий. Intern, гибрид, «iOS developer» без middle в заголовке.
Чем iOS-разработчик занят в первый месяц
Первый месяц: экран по макету, навигация, список, запрос, ошибка, не забыть Safe Area и тёмную тему, если её просят. Редко — свой движок и App Store-оптимизация как основная работа. Если вам интересны только анимации SwiftUI и неинтересны ревью Apple и крэши — роль всё равно упрётся в магазин и устройства.
В продукте часто одно приложение долго. В аутсорсе — чужие модули и дедлайны. На входе покупают аккуратность к жизненному циклу и умение читать чужой UIKit, даже если вы учили SwiftUI.
Соседние пути: Android и общий выбор платформы мобильная разработка. Frontend похож состояниями UI, не совпадает рантаймом и ревью.
Барьеры входа: Mac, аккаунт, язык
Mac с актуальным Xcode — практический барьер. Хакинтош и облачные CI без ежедневной практики на устройстве замедляют. iPhone для проверки жестов и сети полезнее второго курса. Аккаунт разработчика нужен для стора и части возможностей; для первой работы достаточно TestFlight позже или Ad Hoc, учебный проект может жить в симуляторе плюс видео, но устройство сильнее.
Swift — рабочий язык. SwiftUI в junior-вакансиях 2026 встречается всё чаще, UIKit никуда не делся в легаси. Смотрите ваши слоты, не Twitter. Английский помогает: документация Apple и часть команд. Русскоязычные вакансии тоже есть — читайте язык объявления.
С нуля без смежного кода горизонт длиннее рекламы буткемпов. Из Android/Kotlin вход быстрее по голове про мобильный UI, не по API Apple. Нужен iOS-артефакт, не «я уже мобильный».
Стек и что не класть в резюме
Повторяющееся в junior:
- Swift: опционалы, протоколы, конкурентность на уровне async/await или хотя бы понимание, зачем не блокировать UI;
- SwiftUI и/или UIKit — как в слотах;
- списки, навигация, формы;
- URLSession / тонкая обёртка, JSON, ошибки;
- UserDefaults / SwiftData / Core Data — одно, не все сразу;
- Git, SPM или CocoaPods — что реально использовали;
- базовые Auto Layout, если UIKit.
Можно отложить: Combine «весь», свой подмодуль SPM на 15 пакетов, ARKit, Watch, «микросервисы на Vapor», чтобы казаться fullstack. Rx — только если легаси вакансии. Не пишите SwiftUI+UIKit+Rx+TCA+Clean, если в репозитории два экрана туториала.
90 дней: одно приложение до «можно поставить»
- Дни 1–25. Swift + два экрана. Список и деталь. Если опционалы и списки путаете — не прыгайте в архитектуру из конференций.
- Дни 26–55. Сеть, пустые состояния, ошибка, простое кэширование. README: как открыть в Xcode, какая версия, чего нет.
- Дни 56–75. Устройство: клавиатура, фон/возврат в приложение, плохая сеть. Тесты на маппинг — плюс. Скриншоты или TestFlight, если есть аккаунт.
- Дни 76–90. Резюме, точечные отклики, подготовка к живому коду списка и к рассказу про приложение.
Критерий: собираете на симуляторе и на телефоне, проходите сценарий, объясняете поток данных. Стор не обязателен. Если публикуете — не копируйте чужой бренд и не кладите секреты в репозиторий.
Пример 1. Учебное приложение привычек
Вакансия: junior iOS, Swift, SwiftUI, REST как плюс.
Приложение привычек. Список, деталь, отметка за день, фильтр, экран ошибки сети. Стек: Swift, SwiftUI, async/await, URLSession, локальное кэширование. Учебный API. Нет подписок, нет виджетов, нет Watch. README: Xcode version, что сделано мной, что не сделано. Видео прохода сценария 60 секунд — если нет TestFlight.
Архитектура простая. Не выдаю за прод-банк. Ключи API учебные, в репозитории не секреты работодателя.
Это можно открыть. «Социальная сеть как Instagram» без запуска — нельзя.
Пример 2. Как показать опыт, если прод под NDA
Было:
iOS-разработчик в финтехе. Делал суперприложение. Код показать не могу. Стек: всё из вакансии.
Стало:
Junior iOS (Swift). В коммерции: экраны списка и детали в приложении с NDA — без скринов и без названия внутренних модулей. Публично: учебное приложение привычек, код и видео [ссылки]. На созвоне разберу учебный репозиторий целиком и коммерческий опыт словами: навигация, сеть, что ломалось на слабой сети.
NDA уважается, доказательство есть. Не воруйте продовые репозитории. Если коммерции нет — только учебный артефакт, это честнее пустого «конфиденциально». Письмо: без опыта. Резюме проектов: как описывать проекты.
Поиск вакансий, тестовое, интервью
Ищите junior iOS, intern, trainee, Swift iOS. Читайте SwiftUI vs UIKit. Слоты «5 лет, свой SDK, дежурства» — не вход. Каталог: вакансии iOS, junior, mobile.
Тестовое: экран + сеть + список в оговорённое время. Клон прода за выходные — отказ. Тестовое, отказ от тестового.
Интервью: опционалы, память на уровне «retain cycle», жизненный цикл, чем отличается список в SwiftUI, как кэшировали, как ловили крэш. Рассказ о приложении: как рассказать о проекте. HR: скрининг. Подготовка: вопросы.
Вилка — фильтры каталога. Удалёнка junior iOS редкая. Ожидания по зарплате. Мошенники с «оплатите лицензию Apple за нас»: проверка.