Матрица компетенций: iOS

Hard skills

Skill Passport — iOS
Swift и базовая модель языкаСамостоятельно реализует модель и логику фичи, использует protocol-oriented подход и generics там, где они устраняют дублирование. Объясняет copy-on-write и захват `self` в замыкании на конкретном примере, избегает retain cycle через `[weak self]`, когда он необходим.
UI: SwiftUI и UIKitСамостоятельно реализует экран со состояниями loading/content/error, корректно связывает состояние и UI. Интегрирует SwiftUI и UIKit там, где это нужно (`UIHostingController`/`UIViewRepresentable`), выбирая подход по ограничениям проекта, а не по привычке.
Жизненный цикл приложения и iOS-платформаСамостоятельно обрабатывает возврат приложения из background, deep link или push-уведомление для фичи; сохраняет/восстанавливает необходимое состояние экрана. Объясняет, почему длительную работу нельзя безусловно выполнять в background, и выбирает допустимый механизм iOS.
Сеть и работа с APIСамостоятельно реализует сетевой слой для фичи: request/response models, кодирование параметров, типизированные ошибки, отмена задачи и загрузочные состояния. Различает ошибки транспорта, HTTP и декодирования; не отображает пользователю «сырой» текст ошибки сервера.
Хранение данных и кешированиеСамостоятельно выбирает `UserDefaults`, Keychain, файл или локальную БД под тип данных фичи; реализует кеш с понятной политикой обновления. Отличает пользовательские настройки, секреты и бизнес-данные.
Конкурентность и асинхронностьСамостоятельно организует параллельную загрузку данных с `Task`, `async let` или task group, корректно обрабатывает отмену. Различает последовательную и параллельную работу на примере времени выполнения и не блокирует UI синхронной операцией.
Архитектура, зависимости и качество кодаСамостоятельно декомпозирует фичу на UI, бизнес-логику и доступ к данным, использует dependency injection для подмены API/хранилища в тестах. Пишет unit-тесты на success/error/edge cases и UI-тест для критичного пользовательского пути.
Сборка, релиз, наблюдаемость и качество приложенияСамостоятельно настраивает signing/provisioning для тестовой сборки или исправляет типовую ошибку сборки, добавляет crash/analytics event для новой фичи без персональных данных. Проверяет экран на реальном устройстве и в Simulator, включая размер шрифта и базовую доступность.
Общее
Язык и основыУправление памятью (ARC), асинхронность (GCD, OperationQueue), паттерны MVC/MVVM
DevOpsНастраивает Fastlane, CI (GitLab CI/Bitrise), отслеживает метрики
UX/UIРазрабатывает сложные UI с анимациями, обеспечивает accessibility
Качество и Безопасность
ТестированиеИнтеграционные тесты, snapshot‑testing, TDD
Разработка ПО
Фреймворки и библиотекиCoreData, CoreAnimation, CoreLocation, интеграция сторонних SDK

Soft skills

Общее
Бизнес и коммуникацииСам оценивает время, взаимодействует с аналитиками и тестировщиками
ЛидерствоМенторит джуниоров, делится знаниями
Skill Passport — Автономность и глубина
Автономность и масштаб задачОписывает случай, когда самостоятельно довёл фичу или модуль от постановки задачи до результата в проде без пошагового контроля — включая случаи, когда сам принимал технические решения по ходу работы, а не только выполнял готовый план. Называет конкретную зону ответственности (что именно делал и за что отвечал), а не общую фразу «участвовал в проекте».
Глубина технических решенийНазывает минимум два реально рассмотренных варианта и объясняет, почему выбрал один из них — аргумент привязан к конкретным деталям своей задачи (объём данных, срок, ограничение инфраструктуры), а не общая теория без применения к ситуации.

Типовые задачи

Практические задачи для собеседования — доступны после регистрации

Зарегистрироваться