
Разработка под iOS: что должен знать junior
Разработка приложений для iOS была достаточно быстро растущим секторjv в течение продолжительного времени. Универсальность и всеобщая популярность iPhone и iPad предоставляли множеству разработчиков шанс воплотить свои креативные идеи в жизнь и продемонстрировать результать перед огромной — и относительно богатой — аудиторией. В начале этой «золотой лихорадки» а также в течение некоторого времени после нее, был возможность заработать серьёзные деньги, разрабатывая технически не сложные приложения, которые чаще всего становились крайне успешными в своей нише, а иногда и просто незаменимыми. Инди-разработчики пытались приложить руку к разработке всех типов приложений, а стартапы всех мастей нуждались в разработчиках, чтобы воплотить свои прорывные идеи в жизнь. Хорошие были деньки!…
Но, конкуренция в App Store становилась все ожесточеннее, а первоначальное всеобщее увлечение гаджетами начало исчезать, все больше и больше прибыльной работы в области разработки под iOS стало приходить от крупного бизнеса, требующего мобильного присутствия. Результатом этого для разработчика под iOS стало то, что теперь ваш для того чтобы получить первый существенный опыт разработки под iOS скорее всего придется воспользоваться более традиционными методами — HR, собеседования, портфолио и тому подобное. Это, несомненно, имеет свои преимущества, однако процесс интервью и тестовые задания теперь стали гораздо более сложными, чем всего несколько лет назад.
Это представляет собой достаточно уникальную проблему для начинающих разработчиков под iOS. Так как приложения для iPhone могут реализовывать довольно большое количество различной функциональности, часто трудно решить, какие вещи стоит уточить в первую очередь. Должен ли начинающий разработчик изучить Core Audio, прежде чем начинать работать с Core Data? Если я хочу, изучить как работать с анимацей, какой из многих вариантов я должен выбрать? Ни один простой смертный не может изучить все это сразу, поэтому как решить на изучение чего потратить время в первую очередь?
В этой статье я постараюсь, наметить приоритеты для начинающего iOS разработчика то, на чем сотит сосредоточиться в первую очередь, чтобы вы смогли уверенно проходить в собеседование уровня junior iOS-разработчика.
Must have
В этом списке перечисленны вещи, с которыми вы обязательно должны иметь опыт практической работы, достаточно хорошо зная как они реализованы. Этот практический опыт не обязательно должен быть опытом оплачиваемой работы, и вы не должны цитировать документацию по памяти, но, тем не менее, вы должны достаточно свободно ориентироваться в следующих темах:
- Xcode и Interface Builder
- Запуск ваших приложений на устройствах
- Распространение приложений
- Свободное владение Swift или Objective-C
- Cocoa Touch
- UIKit
- Auto Layout
- Понимание сущности архитектуры MVC
- Отладка в Xcode
- Использование профайлера Instruments
- Xib’ы, Storyboard’ы и Segue
- Core Data
- TableViews
- Использование CollectionView
- Работа с JSON
- Notifications, Delegation, Key Value Observation
- REST и/или SOAP
- Git, Subversion или другая система управления версиями
- Понимание принципов «Чистого кода«
- Понимание принципов SOLID
- Многопоточность
- Unit-тесты, XCTest
- Опыт создания хотя бы одного полноценного приложения для iPhone и iPad, в иделе — universal app
Дополнительно (но, скорее всего понадобиться)
Все перечисленные далее темы и фреймворки не обязательно понадобятся для каждого проекта, но, скорее всего, они тоже понадобятся в повседневной работе. Понимание того, где они используются, каково их назначение в iOS-окружении, помогут убедить HR’ов в том, что вы вышли за пределы обязательного минимума.
- Если ваш основной язык разработки Swift, надо иметь некоторое представление об Objective-C (и наоборот)
- Что такое ARC, как он применяется, представление об управлении паматью без помощи ARC
- Покупки, встроенные в приложения
Что бы еще почитать
- Core Motion
- Core Audio
- Core Animation
- Quartz Core
- Game Center
- CloudKit & iCloud
- StackViews
- Push Notifications
- Local Notifications
- CoreLocation
- MapKit
- MessageUI
Для продвинутых
Следующие темы, безусловно, основа основ разработки под iOS, но владение ими может помочь вам показать ваше примущество над другими соискателями на вакансию junior’а. Если эти навыки у вас уже есть, обязательно стоит упомянуть об этом на собеседовании. Если же вы с ними еще не знакомы, стоит потратить немного времени, чтобы получить о них хотя бы общее представление.
- Разработка для декстопа (macOS)
- WatchKit
- SpriteKit
- GameKit
- Разработка под Android
- Xamarin
- PhoneGap
- CorePlot
- HTML
- SQL
Главное — помните, что HR’ы ожидают от junior’а не всесторонних знаний и готовности начать править баги с первых дней трудоустройства. Их гораздо больше заботит наличие у вас навыков критического мышления, и ваша способность находить решения для проблем, которые вам по силам. Однако, осознавая свои пределы, вы должны постоянно стремится расширить их. Вы потенциально будете иметь доступ к достаточно ценной базе кода, и они должны быть уверены в том, что вы будете относиться к этому коду с осторожностью и вниманием.