На какой грейд (уровень) iOS-разработчика вы себя оцениваете?

Ответ

Оцениваю себя как Middle+/Senior с уклоном в архитектуру.

Обоснование:

  • Опыт: 4+ года коммерческой разработки на iOS, включая сложные проекты в медицине и финтехе.
  • Полный цикл: Участие во всех этапах: проектирование, разработка, тестирование, публикация и поддержка.
  • Технологии: Глубокое знание Swift, UIKit, SwiftUI, Combine, CoreData, Realm.
  • Производительность: Опыт профилирования и оптимизации с помощью Instruments, работы с GCD/Operations.
  • Командная работа: Активное участие в код-ревью, менторинг junior-разработчиков.

Пример архитектурного подхода (Координатор):

protocol Coordinator: AnyObject {
    var childCoordinators: [Coordinator] { get set }
    func start()
}

class AuthCoordinator: Coordinator {
    private let router: Router
    private let factory: AuthModuleFactory
    var childCoordinators: [Coordinator] = []

    init(router: Router, factory: AuthModuleFactory) {
        self.router = router
        self.factory = factory
    }

    func start() {
        let viewController = factory.makeLoginViewController()
        router.setRootModule(viewController)
    }
}

Готов нести ответственность за ключевые технические решения и архитектуру проекта.

Ответ 18+ 🔞

Ну что за хуйня, опять про уровни спрашивают? Ладно, слушай сюда, разберём твой случай, как есть.

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

Архитектурные подходы вроде координатора — это хорошо, это правильная мысль. Показал не просто «я юзал MVVM», а конкретный кусок кода, где видно, что понимаешь, зачем это нужно и как это отвязать от вьюх. Это уже не уровень «заставь кнопку покраситься».

Но вот где собака зарыта, а точнее, где может быть подвох:

  1. «Глубокое знание» всего списка. Блядь, SwiftUI, Combine, UIKit, CoreData, Realm... Да ты что, сука, гений? Или просто поверхностно всё потрогал? Senior — это не про то, чтобы знать названия всех библиотек. Это про то, чтобы понимать, когда и почему одну хуйню выбрать, а другую — нахуй послать. Почему в одном случае Combine — это овердохуища, а в другом — overengineering и проще на коллбэках? Почему Realm, а не CoreData, или наоборот? Где подводные ебланы каждого решения? Вот если на этом сможешь развернуться — тогда да.

  2. Ответственность за ключевые решения. Слова — они, блядь, дешёвые. Каждый второй пишет «готов нести ответственность». А на деле, когда твоё архитектурное решение через полгода приводит команду в тупик и надо всё переписывать, начинается: «ну это же требования поменялись» или «это QA недоглядели». Senior — это тот, кто не только предлагает решение, но и видит его риски на три шага вперёд, и главное — готов этот пиздец расхлёбывать лично, когда он наступит. Не просто «я предлагаю координаторы», а «я предлагаю координаторы, вот плюсы, вот минусы, вот как мы будем жить, если через полгода нам понадобится навигация через диплинки, вот где могут быть костыли».

  3. Менторинг джунов. Тут важно не «участвовал», а что из этого вышло. Привёл ли твой менторинг к тому, что джун перестал писать дичь в ревью? Научился ли он сам думать? Или ты просто за него задачи делал? Разница — как между небом и землёй.

Итог, сука:

Выглядишь ты солидно, оснований для Middle+ — выше крыши. А вот до Senior’а не хватает, как мне кажется, демонстрации глубины и последствий решений. Не «я использовал Combine», а «я использовал Combine, потому что..., но пришлось вот здесь костыль прилепить, потому что..., и в следующем проекте, возможно, рассмотрю обычные коллбэки, ибо...».

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