На что в первую очередь смотрят в резюме iOS-разработчика? Главный критерий — это то, насколько описанные в резюме знания и навыки соответствуют требованиям вакансии. Чтобы облегчить ребятам процесс составления резюме и получить «то самое долгожданное» CV, мы в NIX указываем в описании вакансий список умений, которые хотели бы видеть в потенциальном кандидате. Проверяя резюме, уже на этом этапе мы поймем, не поленился ли человек прочитать наши требования, и на сколько он себя с ними соотносит.
Резюме помогает экспертам составить портрет соискателя и еще до личного знакомства с ним понять, подходит ли кандидат на указанную позицию. Поэтому относитесь к составлению резюме со всей скрупулезностью.
Чего мы ожидаем от Junior iOS Developer
Если считаете, что соответствуете требованиям вакансии, опишите свои навыки в резюме и дерзайте. А если у вас еще есть наработки, которые можно показать, то смело добавляйте ссылки на репозитории с тестовыми проектами.
Техническим экспертам они дадут понять, что вы действительно пробовали программировать и умеете применять теорию на практике. Просматривая проект, мы оцениваем аккуратность написания кода, а также анализируем уровень сложности задачи и чистоту реализаци (использование паттернов, модульность кода, отсутствие code smellsКод, который плохо пахнет — термин, обозначающий код с признаками (запахами) проблем в системе). Если резюме нас заинтересовало, на собеседовании мы проходимся по ссылкам и подробнее расспрашиваем кандидата, как он реализовывал проект.
Не менее важно понимать, как работает написанный код, а не формальное «сделал по туториалу». Пусть проект будет меньше и проще, но зато кандидат будет уверенно разбираться в написанном.
Что делать, если не хватает скиллов
Если на собеседовании мы видим, что человеку не хватает знаний, то все равно поможем кандидату попасть в нашу команду. Перспективным ребятам мы предлагаем подтянуть навыки на нашей программе обучения. Попасть в группу могут и те, кто уже был у нас на интервью, и те, кто еще не знаком с нами и хочет перенять опыт практикующих разработчиков.
Для этого необходимо пройти технический тест. Для тестирования на некоторые потоки обучения можно даже выбрать непрофильный язык программирования. Обычно Swift изучают для нативной разработки, а JavaScript — для кроссплатформенной. Новичок же может выбрать тот язык, которым владеет лучше всего. Например, C++, PHP, ObjectiveC или C#. На этих потоках мы углубляемся в основы языка. Здесь нам важно проверить, что у человека есть опыт взаимодействия с любым высокоуровневым языком программирования. После успешного завершения учебы кандидат может еще раз попробовать свои силы на вакансию.
Чего ждут от middle/senior?
Рассматривая резюме опытных iOS-разработчиков, мы обращаем внимание на их предыдущий опыт. Мы понимаем, что из-за NDA не всегда получается указать конкретные названия проектов и приложений. В таком случае добавьте хотя бы поверхностное описание своих самых масштабных проектов (домен, основные фичи), не раскрывая коммерческой тайны. Экспертам будет очень интересно взглянуть, с какими задачами вы сталкивались в ходе реализации проекта, какую роль в команде выполняли, с какими технологиями работали и какие трудности преодолевали.
Если вы засабмитили десять версий приложения в App Store без единого реджекта, гордитесь реализацией сложной анимации, выступали в роли ментора или принимали участие в оценивании проекта — обязательно напишите об этом.
Будьте искренними, когда составляете резюме. Чем меньше заявленные знания соответствуют реальности, тем меньше шансов успешно пройти собеседование.
О чем забывают новички
Часто ребята, сделав простенькое приложение, добавляют его в портфолио, приходят к нам на интервью и не могут ответить на простые вопросы по написанному ими же коду. Так может случиться, если вместо того, чтобы в первую очередь ознакомиться с документацией, спецификой языка и платформы, алгоритмами и базовыми паттернами, начинающие программисты сразу переходят к верстке UI и копированию решений со StackOverflow.
Не стоит торопить события. Для начала получите инженерную базу: поймите принципы ООП, познакомьтесь с паттернами, структурами данных и алгоритмами, прочитайте документацию по языку, на котором хотите программировать. И уже тогда более осознанно приступайте к написанию простых и спустя время — более сложных приложений. Только имея хорошую основу, вы сможете постепенно наращивать сложность своих разработок без потери контроля над ситуацией и с четким пониманием того, что вы делаете.
Цель собеседования — услышать не книжные ответы, а увидеть, как рассуждает кандидат
Довольно популярные вопросы на собеседовании — расшифровать аббревиатуру SOLID или объяснить, что такое полиморфизм (вариант для начинающих разработчиков). Здесь не столько важно дать четкое книжное определение, сколько объяснить своими словами, в чем польза того или иного подхода, привести пример использования из собственного опыта. Если видим, что человек затрудняется ответить, то всегда поможем наводящими вопросами. Такой подход помогает нам увидеть, как рассуждает человек, а не просто услышать очередной ответ из учебника.
Опытному кандидату мы предлагаем обсудить реальные кейсы, расспрашиваем, как бы он спроектировал реализацию той или иной фичи приложения.
Претендентам на позицию middle/senior важно:
- знать, что такое чистая архитектура, DI;
- разбираться в особенностях iOS SDK (например, в особенностях работы приложения в background, нюансах sandbox и т.д.);
- разбираться в особенностях CI/CD, паттернах и SOLID;
- знать Human Interface Guidelines;
- понимать правила и быть знакомыми с подводными камнями App Store Review Guidelines.
Нам также важно, чтобы опытный кандидат умел налаживать коммуникацию с другими специалистами и смог влиться в команду.
Например, чтобы с разработчиками на стороне сервера смог договориться об API-протоколе, а заказчику объяснить, почему его «хотелка» нереализуема из-за правил App Store, а лучше — чтобы предложил альтернативные пути достижения результата.
Отсюда вытекает еще одно важное качество специалиста — проактивность. Именно iOS-разработчик хорошо знает все возможности платформы и может посоветовать полезные для бизнеса фичи. Поэтому нужно быть готовым общаться с командой и заказчиком, уметь аргументировать свои идеи.
Полезные ресурсы для начинающих iOS-разработчиков
Для старта в нативной разработке
Знакомство с языком Swift стоит начать с изучения официальной документации от Apple (или ее качественного перевода).
Особое внимание обратите на:
- управление и работу с памятью;
- классы и структуры (особенности создания и использования);
- опционалы и взаимодействие с ними, что это и зачем;
- типы коллекций, в чем разница и особенности использования;
- функции и замыкания.
Прочие особенности Swift не менее важны для полноценного программирования под iOS и их понимание будет плюсом для прохождения обучения.
Закрепите полученные знания практикой и экспериментами в Swift Playgrounds.
А также:
- Начинающим разработчикам важно хорошо разобраться в основных принципах ООП.
- Будет большим плюсом понять как можно больше паттернов проектирования.
- Знание SOLID приветствуется.
- Каждый программист в проекте сталкивается с многопоточностью и конкурентным выполнением. Показателем технической грамотности будет знание основных концепций из этой области, которые изложены в статье Multithreading and Concurrency Fundamentals.
UI-компоненты
Важно разобрать процессы какого-то UI-ного компонента, например UITableView. О них в интернете есть множество уроков, например, Adding a UITableView programmatically.
При этом важно понимать:
- как отрисовывать ячейки в таблице;
- как они переиспользуются;
- какие обязательные методы необходимо реализовать;
- в чем удобство и польза такого механизма.
А также:
- жизненный цикл приложения;
- жизненный цикл UIViewController;
- разницу между UIWindow и UIView.
Полезно будет пробовать все на собственном маленьком тестовом приложении, чтобы потом иметь возможность показать код и рассказать, почему применялись те или иные решения.
Для старта в кроссплатформенной разработке на React Native
Знакомство с React Native рекомендуем начинать с изучения JavaScript и JavaScript best practices: часть 1, часть 2.
Обратите внимание на:
- объекты, прототипно-ориентированное ООП и создание иерархии объектов;
- асинхронное взаимодействие и использование Promise;
- инструментарий для обработки ошибок.
Прочие особенности JavaScript тоже нужны для качественного программирования на React Native и их понимание будет плюсом в обучении.
Добавляйте типизацию в JavaScript и избегайте ошибок на этапе кодинга. Для этого изучите TypeScript Documentation.
Несмотря на то, что JavaScript не поддерживает многопоточность, знания о концепции многопоточности точно будут не лишними. Они могут пригодиться при написании нативных модулей в React Native приложении. Базу по этой теме вы найдете в статье Multithreading and Concurrency Fundamentals.
Не ограничивайтесь приведенными ссылками: читайте и источники, чтобы разобрать подходы с разных сторон и на разных примерах. Гуглите или придумывайте себе задачки в любой предметной области, пробуйте решить их с использованием изученных принципов:
- React Native Сommunity составили понятную и полезную документацию — тоже мастрид.
- Ознакомьтесь с плейлистами на YouTube-канале CallStack Engineers.
- Выясните, как работает React Native под капотом с помощью этой статьи.
- Репозиторий с ресурсами по React Native тоже вам в помощь.
Советуем изучить готовые библиотеки с UI-компонентами и другими тулзовинами, которые точно упростят вашу жизнь. Вот наиболее часто используемые библиотеки: react-native-vector-icons
, react-nativemaps
, react-native-splash-screen
, react-native-image-crop-picker
.
- Важнейшая часть разработки мобильного приложения — имплементация навигации. Внимательно изучите и попробуйте реализовать навигацию на практике с одной из самых популярных библиотек React Navigation.
- Самое время изучить архитектурный подход Redux, который позволит вашему приложению быть целостным, масштабируемым, легко поддерживаемым, гибким, а его поведению — предсказуемым.
- Expo — полезный фреймворк, платформа, набор библиотек и инструментов для разработки приложений на React Native.
И еще немного полезных статей для изучения React Native:
- React Native: Top 10 Best Practices We Follow at Innofied
- React Native Coding Standards and Best Practices
- React Native: Do’s And Don’ts
- React/Redux: pitfalls and best practices
- React Native Redux Best practices.
Хороша теория, которая подкреплена практикой. Создайте свое собственное первое тестовое приложение и отрабатывайте на нем полученные знания. В будущем на интервью у вас будет возможность показать свой код и рассказать, почему вы применили те или иные решения. Так что дерзайте!
Читайте также: Как пройти собеседование на менеджера в IT: что нужно знать и уметь
Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: