Хабрахабр

Чего ждать, если хочешь стать iOS-разработчиком

Для работы обязательно нужен компьютер от Apple, экосистему пристально контролирует одна компания. Со стороны iOS разработка может казаться закрытым клубом. Изнутри тоже иногда слышны противоречия — кто-то говорит, что язык Objective-C старый и неповоротливый, а кто-то, что новый язык Swift слишком сырой.

Тем не менее, разработчики идут в эту сферу и попав туда, остаются довольны.

А экспертом выступил Андрей Антропов — декан факультета iOS-разработки в GeekBrains.
В 2016 году Марат Нургалиев из Астраханской области пришел устраиваться на работу мобильным разработчиком в местную телекомпанию. В этот раз о своем опыте нам рассказали Марат Нургалиев и Борис Павлов — как они учились профессии, как проходили первые собеседования, почему получали отказы. Он только что вернулся из армии, без практики и опыта, позабыв даже теорию, с которой и так были проблемы. Это было его первое собеседование. На собеседовании его спрашивали про учебу, ООП и прочую теорию, но пробелы в знаниях Марату скрыть не удалось. Единственным опытом в мобильной разработке у Марата была дипломная работа по анализу потоков утечек информации через Android-приложения.

И под iOS, и под Android. Тем не менее, ему не отказали, а дали практическое задание — за две недели реализовать отображение списка новостей с помощью API. Среда разработки ios приложений есть только на Mac. «Если на Android у меня был какой-то опыт, то для создания iOS версии не было даже инструмента. С iOS пришлось выкручиваться на ходу. Но через две недели я вернулся, показал, что мог на Android. Тогда я жил в Астрахани. В итоге меня взяли. Меня устраивала любая работа в ИТ с зарплатой выше двадцати».

Кто такие — iOS-разработчики

Мобильные разработчики делают приложения для любых портативных устройств. Смартфоны, планшеты, умные часы и все остальные платформы, которые поддерживают Android или iOS. Фундаментальные основы мобильной разработки не отличается от обычной, но из-за специфических инструментов ее выделили в отдельное направление. Здесь используются свои инструменты, языки программирования и фреймворки.

Она бесплатна и распространяется через магазин приложений AppStore. «Для работы с iOS нужен макбук, потому что только на нем есть необходимая среда разработки Xcode. В Xcode можно разработать приложения для чего угодно — телефона, планшета, часов. Для установки надо иметь своей Apple ID и больше ничего. Встроенный симулятор и редактор есть для всего», — говорит Андрей Антропов, декан факультета iOS разработки в GeekBrains.

Это рабочий, но окольный вариант — никто из серьезных разработчиков подобным не занимается. «Но среду разработки можно поставить и на Windows, если использовать „Хакинтош”. А опытные обычно могут себе позволить последнюю модель».
Начинающие покупают старенький Макбук.

Языки — Swift или Objective-C

Почти вся iOS-разработка ведется при помощи языка программирования Swift. Он появился пять лет назад и сейчас постепенно вытесняет старый язык Objective-C, который Apple использовала во всех своих приложениях больше 30 лет

Приложения, написанные много лет назад, основаны на Objective-C. «На Objective-C накоплена огромная база кода, поэтому до сих пор требуются разработчики на оба языка, в зависимости от компании, от ее задач и приложений. Сейчас Apple очень много делает для того, чтобы вести одновременную разработку под телефон, планшет, часы и Макбук было максимально удобно. А все новые проекты по умолчанию разрабатываются на Swift. Раньше этого не было. Один и тот же код может быть скомпилирован и запущен везде. Под iOS разрабатывали на Swift, под MacOS использовали Objective-C».

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

Во времена, когда его разрабатывали, требования к языкам были совсем другими. «Objective-C достаточно старый язык — ровесник языка С++. А на Objective-C у людей была набита рука. Когда появился Swift, в нем было много багов, функциональность была ограниченной, синтаксис был шероховатым. Но теперь, я думаю, Swift не уступает Objective-C. Он много лет совершенствовался, все ошибки там были исправлены. Языки во многом взаимозаменяемые и взаимно дополняемые. Хотя даже Apple в своих проектах до сих пор использует оба. Хорошо бы знать оба варианта, но для новичков Objective-C часто кажется пугающим и непонятным».
Структуры и объекты одного языка можно превратить в объекты и структуры другого языка.

Обучение

«На моей первой работе меня обучал начальник, помогал в реализации и настройке проекта», — рассказывает Марат, — «Но работать по Android и по iOS одновременно трудно. Нужно время для перестройки, переключения с проекта на проект, с языка на язык. В итоге я решил, что нужно выбрать одно направление и изучать его. Меня подкупили интерфейс Xcode и простой синтаксис Swift».

Первое время было очень легко, потому что многие вещи он знал по опыту работы. Марат поступил на факультет iOS-разработки в GeekBrains. По словам Андрея, в первой дается только самая база: «Основа языка Swift, знание базовых фреймворков, сетевое взаимодействие, хранение данных, жизненный цикл приложения, контроллера, базовые архитектуры, основные библиотеки, которые все используют, многопоточность и параллелизм в приложениях». Годовой курс разбит на четыре четверти.

Проводится курс по архитектуре, базовым паттернам программирования. Во второй четверти добавляется Objective-C. Рассказывается, что такое фабрика, как правильно писать тесты, формировать проекты, что такое Git-Flow, Continuous Integration через Fast Lane. В третьей четверти учат правильному стилю написания кода. Четвертая и завершающая четверть посвящена командной работе, практическим заданиям и стажировкам.

«Первая четверть прошла легко», — говорит Марат, — «но потом началось изучение программирования на Objective-C, изучение паттернов проектирования, принципов Solid, Git-Flow, архитектуры проекта, Unit и UI тестирования приложений, настройка кастомной анимации — и тогда мне стало интересно учиться».

«У меня в GeekBrains все началось не супер гладко», — рассказывает Борис Павлов, и его путь к iOS-разработке в целом был не самым прямым. Парня воспитывала бабушка. Она была архитектором, математиком и дизайнером и привила Борису любовь к проектированию, научила чертить от руки и рисовать. Его дядя был сисадмином и заинтересовал племянника компьютерами.

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

Затем заинтересовался геймдевом и попробовал перейти на C#. Он начал изучать C++ с преподавателем в Иркутском Институте Солнечно-Земной Физики. И, наконец, как и Марата, его подкупил язык Swift.

Если честно, он был очень скучным, вялым и непонятным», — вспоминает Борис, — «преподаватель рассказывал об особенностях языка, но метался из одной темы в другую не раскрывая сути. «Я решил пройти бесплатный вводный курс в GeekBrains. Когда курс закончился, я так ничего и не понял».

«Там мне попались очень хорошие преподаватели, и объясняли все достаточно понятно».
Поэтому после вводного курса Борис поступил не на годовое обучение, а на короткий трехмесячный курс, где преподают самые основы профессии.

«Нас часто критикуют, якобы у нас не совсем актуальные методички, есть неточности. Но курсы постоянно обновляются, а преподаватели всегда рассказывают о новшествах. Из групп, которые я веду, очень многие трудоустраиваются уже после первой четверти. Конечно, обычно это люди с опытом программирования», — говорит Андрей, — «С другой стороны, все знания невозможно донести за один курс. Сетевое клиентское взаимодействие в жизни не уместишь в десять лекций по два часа. И если ты ходишь только на курсы и больше ничего дополнительно не делаешь, то знаний не хватит. Если же весь год заниматься каждый день, то при таком темпе только ленивый не устроится. Потому что спрос в профессии очень большой».

image

Вы можете посмотреть самые свежие вакансии для iOS-разработчиков и подписаться на новые.

Работа

Но ни у Марата, ни у Бориса трудоустройство не прошло так просто.

К сожалению, у меня нет весомого аргумента, чтобы заставить их использовать исключительно Swift. «Некоторые крупные фирмы давно разработали iOS приложения на Objective-C, и продолжают поддерживать старую кодовую базу. Оно несет скорее ознакомительный характер. Особенно тех, кто пользуется правилом „не трогай то, что работает“», — говорит Марат, — «Направлению Objective-C в Geekbrains уделяется мало внимания. А так как учеба ориентирована на Swift, как и моя прошлая работа, то на собеседованиях я получал отказы». Но каждая компания, в которую я собеседовался, спрашивала про Objective-C.

С поисками работы в Иркутске было сложно. «После учебы я самостоятельно знал только самые поверхностные основы, с помощью которых мог создать самое простое приложение», — рассказывает Борис, — «Для работы, конечно же, было недостаточно, но я радовался и этому. Я решил искать в других городах. Если точнее — совсем никак. Я решил поехать в СПБ — ближе к Европе. По количеству вакансий самыми актуальными оказались Краснодар, Москва и Петербург.

Даже от джуниора простят того, чего он знать не может. Но все оказалось не так радужно. Работаю за „спасибо“, набираюсь опыта. Я пока не нашел работу. Я хочу получать знания». Понимаю, что это не то, чего я хотел, но мне интересно, и это движет мной.

Если знаний совсем мало — то это нормально, когда стажировка не оплачивается. Андрей считает, что новичкам стоит искать не работу, а стажировки. Идти на джуниорские вакансии Андрей советует в большие компании, где уже налажен процесс работы.

Кто-то уходит в независимую разработку, делает игры сам для себя, сам же их заливает в магазин, и сам монетизирует. «Когда придет понимание, как устроен процесс разработки софта, станет гораздо легче ориентироваться и находить дальнейшую работу, в зависимости от своих желаний. Кто-то зарабатывает в небольших студиях, которые делают софт на заказ, и там могут наблюдать за всем процессом — от создания проекта с нуля до его сдачи в магазин».
Кто-то работает на большую компанию со строгими правилами.

Зарплаты

Зарплата iOS разработчика, как и любая другая зависит от вопроса «Москва или Россия». Но из-за специфики индустрии — много удаленной работы, возможности для релокации и работа не на региональном рынке — цифры все чаще приближаются друг к другу.

image

По данным калькулятора зарплат «Моего круга» средняя зарплата iOS-разработчика составляет немногим меньше 140 000 рублей.

Если же джуниор целенаправленно взят на свою позицию, то получит от 50 до 80 тысяч. «Джуниор совсем низко уровня часто работает бесплатно или за символические деньги — 20–30 тысяч рублей. Синьоры меньше 200 не получают. Мидлы получают от 100 до 150, и иногда даже до 200. А у тимлидов, соответственно, за 300». Я думаю, их зарплата в районе 200–300.

Собеседования

«Первое собеседование прошло по скайпу. На мое удивление это был Google», вспоминает Борис, — «тогда я только переехал в Питер и начал искать работу. Мне пришел отклик на вакансию iOS разработчика. Не джуниор, не мидл, не синьор — просто разработчик. Я обрадовался, начал переписываться с менеджером. Меня попросили выполнить техническое задание: надо было написать приложение для шуток про Чака Норриса. Я его написал. Мне сказали, что все классно и назначили онлайн собеседование.

Со мной общалась приятная девушка. Мы созвонились. Через сколько дней она доползет до верха?“, и еще парочка подобных. Но никаких вопросов про знание языка не задавали — только разные логические задачки, например, „Время 15:15 сколько градусов между часовой и минутной стрелкой?“ или „Столб 10 метров, улитка днем ползет 3 метра вверх, ночью спускается на 1 метр.

Я сказал, что к компании в целом — положительно, а к нему скорее отрицательно, потому что ему важны деньги, а не продукты. Потом были совсем странные вопросы — за что я люблю Apple и как отношусь к Тиму Куку.

Мы распрощались, через неделю мне перезвонили и сказали, что я не подхожу. Когда начались вопросы про Swift, моих знаний хватило только на паттерны программирования и основы ООП. Собственно, я из этого извлек огромный опыт: нужны знания, их нужно много — и теория, и практика».

Очень любят спрашивать какой-нибудь простенький паттерн программирования. Андрей рассказывает, что «первая вещь, которую у всех спрашивают на собеседовании — это жизненный цикл контроллера. Точно будет вопрос про отличия в Swift Value Types от Reference Types, про Automatic Reference Counting и управление памятью. Обязательно спросят про опыт использования популярных библиотек. Спросят про основы REST и JSON. Могут спросить, как реализовывали хранение данных в приложениях, и реализовывали ли сетевые запросы. По крайней мере я не спрашиваю». Специфические вещи и тонкости у джуниора не будут спрашивать.

Я читал статьи, пытался понять, что нужно рекрутеру от новичка. У Бориса же был иной опыт: «Даже когда я просился на стажировки, выполнял технические задания и говорил, что мне не важна зарплата, лишь бы ее хватало на съем квартиры — мне все равно отказывали. Почему-то задавали вопросы из высшей лиги, которые не касаются новичков». Но заваливали в основном на теории.

Сейчас он работает в транспортной компании и один отвечает за iOS направление, продолжая учебу на факультете. Марату повезло больше. «Поскольку за iOS отвечаю я один, мой труд оценивается только умением реализовать поставленные передо мной задачи, а не знанием теории».

Сообщество

Андрей живет в Нижнем Новгороде и говорит, что даже там сформировалось отличное сообщество. Когда-то давно он был бэкенд-разрботчиком на Python, но друзья перетащили его в мобильную разработку — и теперь он сам агитирует всех ей заниматься.

Люди ведут свои блоги, записывают ролики на Youtube, зовут друг друга на подкасты. «Мировое комьюнити обычно общается через твиттер. Это американская викторина, в которую играет одновременно несколько миллионов человек. Однажды у меня появился вопрос по презентации, где выступал тимлид HQTrivia. Комьюнити чрезвычайно дружелюбные, и это здорово». Я ему написал в твиттере, он мне ответил, мы пообщались, я поблагодарил.

Список рекомендованной литературы

Новичковый уровень:
Средний уровень:
Продвинутый уровень:

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»