Ответ
Оцениваю себя как 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», а конкретный кусок кода, где видно, что понимаешь, зачем это нужно и как это отвязать от вьюх. Это уже не уровень «заставь кнопку покраситься».
Но вот где собака зарыта, а точнее, где может быть подвох:
-
«Глубокое знание» всего списка. Блядь, SwiftUI, Combine, UIKit, CoreData, Realm... Да ты что, сука, гений? Или просто поверхностно всё потрогал? Senior — это не про то, чтобы знать названия всех библиотек. Это про то, чтобы понимать, когда и почему одну хуйню выбрать, а другую — нахуй послать. Почему в одном случае Combine — это овердохуища, а в другом — overengineering и проще на коллбэках? Почему Realm, а не CoreData, или наоборот? Где подводные ебланы каждого решения? Вот если на этом сможешь развернуться — тогда да.
-
Ответственность за ключевые решения. Слова — они, блядь, дешёвые. Каждый второй пишет «готов нести ответственность». А на деле, когда твоё архитектурное решение через полгода приводит команду в тупик и надо всё переписывать, начинается: «ну это же требования поменялись» или «это QA недоглядели». Senior — это тот, кто не только предлагает решение, но и видит его риски на три шага вперёд, и главное — готов этот пиздец расхлёбывать лично, когда он наступит. Не просто «я предлагаю координаторы», а «я предлагаю координаторы, вот плюсы, вот минусы, вот как мы будем жить, если через полгода нам понадобится навигация через диплинки, вот где могут быть костыли».
-
Менторинг джунов. Тут важно не «участвовал», а что из этого вышло. Привёл ли твой менторинг к тому, что джун перестал писать дичь в ревью? Научился ли он сам думать? Или ты просто за него задачи делал? Разница — как между небом и землёй.
Итог, сука:
Выглядишь ты солидно, оснований для Middle+ — выше крыши. А вот до Senior’а не хватает, как мне кажется, демонстрации глубины и последствий решений. Не «я использовал Combine», а «я использовал Combine, потому что..., но пришлось вот здесь костыль прилепить, потому что..., и в следующем проекте, возможно, рассмотрю обычные коллбэки, ибо...».
Покажи, что ты не просто знаешь инструменты, а владеешь причинно-следственными связями в разработке. Тогда и разговор про Senior будет совсем другой. А так — крепкий уверенный мидл-плюс, который на верном пути. Не хуя себе, уже хорошо.