Мой путь в iOS-разработку с нуля до трудоустройства на €600
Привет, Доу! Меня зовут Олег, и мне 29 лет. 2 месяца назад я стал разработчиком приложений для iOS, а ещё я работаю фейсером (тот самый человек, который иногда говорит: «Извините, Вам отказано в посещении...») в баре в кольце Арены. Сегодня решил написать о своём опыте изучения разработки на языке Objective-C самостоятельно за 5 месяцев без курсов и менторов абсолютно бесплатно, используя материалы в сети. Текст будет интересен начинающим разработчикам либо тем, чьё будущее ещё туманно.
Поиск информации для тех, кто выбрал путь разработчика, проходил и проходит собственными руками, и вы всегда трудитесь на грани незнания необходимой информации. Мой путь с нуля до трудоустройства на €600 и первых рабочих дней в компании из Люксембурга с офисом в центре Киева (оказывается, мы те ещё индусы) вполне по силам любому желающему. Компания монополизировала услуги IPTV и интернет у себя в государстве, а я в составе команды из 10 человек (4 из которых — разработчики Objective-C/Swift) уже полтора месяца пишу и правлю код приложений для сервисов IPTV и бесплатных объявлений под iOS платформу.
Почему IT и выбор направления
В сторону разработки начал смотреть во время второго серьёзного даунстрика в покере, в котором за 2 года прошёл путь от знакомства с правилами до успешной профессиональной игры онлайн в турнирах на низких лимитах ($5-30) Pokerstars, путешествий в Дубаи, Берлин и нескольких месяцев жизни в Барселоне и Гоа. Искал для себя занятие, в котором опыт и знания будут приумножаться с каждым днём и приносить прогнозируемый доход, а не зависеть от конкретной раздачи на финальном столе. Курс гривны упал, и осваивать работу на 5000 грн совсем не хотелось. С компьютером был знаком с пяти лет, программирование было забавой. Заканчивал ШАГ по специальности «Веб-дизайн и интернет технологии» ещё в далёком 2004 году в Мариуполе, вместе с окончанием школы. Получал образование в военном институте в КПИ на факультете Телекоммуникации. Однако, программирование не привлекало совсем. Долгое время искал себя.
Итак, почему программирование? Прагматический подход: возможность работать за пределами Украины, дистанционно; достойный уровень заработной платы, которая растёт вместе с личным развитием и в индустрии конкретно; удовольствие от больших и маленьких успехов.
Далее, почему iOS? Знакомство с устройствами Apple началось в 2009 с плоского iPod с железным корпусом, большим экраном и клёвым ПО. Затем был iMac на 27 дюймов, который поражал качеством картинки и разрешением экрана, ярко выделяющим устройство среди других аналогов. В общем, понравился подход производителя к формированию и воплощению своих идей в готовый вид, а также — комфорт от их взаимодействия между собой.
С чего начать обучение
Разработка для яблока ведётся на Objective-C и Swift (есть и другие не нативные языки). Изучил много мнений насчёт выбора языка в качестве первого шага, попробовал Try Objective-C by CodeSchool, понравился подход среды разработки к обозначению методов, названию переменных, — будто пишешь письмо (ага, точно, — бабушке). Как поэт и ярый любитель красивых выражений и текстов, оценил синтаксис языка и выделил его как привлекательный для изучения. Если бы выбирал сейчас, начинал бы со Swift’а (направление развивается очень быстро), однако многие приложения, написанные на Objective-C также необходимо поддерживать.
В качестве точного плана для обучения с нуля выбрал бесплатный полноценный (и чуть устаревший) ресурс iOS Development Course, где Алексей Скутаренко, в виде волонтёрской работы и грандиозного плюса для собственного резюме и трудоустройства в лучшие компании Силиконовой долины, записал два курса по программированию для Objective-C и Swift. Основной изюминкой данного ресурса есть не сам уровень подачи и глубина материала, поданного в удобной форме теория/практика от опытного специалиста, а постоянно растущее комьюнити с обсуждением домашних заданий, проблем с которыми сталкиваются студенты. Во время записи видео аудитория группы была < 1’000 пользователей на конец 2014 — начало 2015 годов, а сейчас уже — > 13’000. Библиотека материалов разрослась и охватывает многие сопутствующие темы в разработке для iOS и новые тенденции, появляются новые видео курсы от других специалистов.
Для комфортного изучения и разбора любой темы необходимо использовать минимум 3 источника, так что после осваивания упомянутого курса, следующий проходил уже на английском от Udemy — iOS 9 & Objective-C — Make 20 Applications (повторяя изученное) для совершенствования профессионального английского. Параллельно с этим я регулярно изучал обучающие видео на английском по темам, которые уже устарели в курсе изучения Алексея Скутаренко с выходом обновлений ПО. Успел ещё начать изучать Swift от iOS Development Course, однако развитие Swift проходит семимильными шагами, и я приостановил изучение для того, чтобы направить все силы на подготовку к собеседованиям, решению тестовых заданий и трудоустройству, ведь для этого я всё и затеял.
Подготовка и поиск первой работы
Поиск работы для меня обратился в весьма азартное занятие. Ресурсов для поиска вакансий разработчика в Украине не так, чтобы много. Наряду с гигантами широкого профиля work.ua и rabota.ua, а также узкоспециализированными друзьями jobs.dou.ua и djinni.co, использовал множество других зарубежных сайтов, которые не принесли никакого эффекта. Кстати, как и Джинни, где получил всего одно предложение уже после того, как нашёл своего работодателя.
Благодаря Junior дайджесту боролся за возможность попасть на интернатуру в Booking.com. Отправил резюме и сопроводительное письмо, которые были приняты, прошёл тест на сайте HackerRank на знание основ алгоритмов и структур данных на базе Objective-C/Swift (кстати, перед сдачей тестов на подобных ресурсах, убедитесь, что вы попробовали сдать парочку примеров перед тем, как пройти контрольный), получил подтверждение на прохождение устного интервью с рекрутёром по телефону. Полностью подготовился, практиковал английский, изучил кучу информации о компании (которая, кстати, ого-го какой мощный динозавр индустрии!), позитивных и негативных отзывов от людей, которые уже проходили данный этап собеседований (спасибо GlassDoor за огромное количество доверившихся соискателей, трудящихся и их отзывы), составил шпаргалку. Разговор длился более 20 минут, в процессе которого я обратил внимание собеседника, что я хорошо подготовился. Но спустя некоторое время пришёл ответ, что моя кандидатура не была выбрана для прохождения дальнейших этапов собеседований. Ок.
На ДОУ ещё достаточно возможностей проявить себя начинающему разработчику без опыта. Я отправлял резюме везде, где отсутствовало упоминание о коммерческом опыте, а стек технологий подходил моим скромным знаниям. Благодаря ресурсу VisualCV я создал CV удобное для редактирования и отправления прямо с телефона. Все проекты залил на GitHub, создал подробное описание, анимированные гифки с наглядным отображением функционала, а также включил описание проектов с изображениями скринов в резюме. Достаточно внимания уделил написанию шаблона сопроводительного письма, которое всегда правил под обнаруженную вакансию конкретной компании.
Параллельно с этим, собрал немного ссылок с вопросами/ответами для подготовки к собеседованиям, статьями по паттернам проектирования и прочим важным аспектам для старта карьеры. Некоторые из ресурсов уже не молоды, однако актуальны:
— Ссылки на русском:
Паттерны ООП в примерах для iOS / Хабрахабр
Справочник iOS дизайна (Human Interface Guidelines на русском)
Архитектурные паттерны в iOS / Хабрахабр
27 iOS библиотек с открытым исходным кодом
Идеальное резюме Junior’а: как найти лучшую работу в сфере информационных технологий (здесь более поучительными являются комментарии)
Как научиться программировать под iOS
Обучающий курс по разработке iOS+Swift+Objective-C приложений (разбор домашки курса CS193P Stanford Spring 2016, Swift)
— На английском:
Core Data в среде Cocoa, Mac OS, iOS
What Every Junior iOS Developer Needs to Know
iOS interview Questions with Answers 1 part
iOS interview Questions with Answers 2 part
iOS Interview Questions & answers for experienced developers
Sorting Algorithms in Objective-C
Sizes of iPhone UI Elements
iOS Developer Resume Examples
Интервью случались различные, бояться здесь нечего. Одна компания с главными офисами в Катаре и ОАЭ приглашала на $400 против заявленных мной $500 на первые 2 месяца практики даже без тестового задания и технического собеседования. Общался по скайпу на английском с HR из Львова и директором из Катара (который любил произносить «харашё»). Видимо, вакансию необходимо было срочно заместить, поэтому собеседование состояло в основном из односложных вопросов «сталкивался ли я с тем-то и тем-то», на что я почти всегда отвечал «да». На принятие решения предоставили 3 дня. Пришлось отказаться в пользу согласованных дат по собеседованиям, тестовые задания для которых уже были успешно завершены.
Насчёт тестовых заданий — берись и делай! Тут пригодятся все знания, полученные прежде, плюс регулярный серфинг Stack Overflow. Диапазон сложности различный — от элементарного приложения тестовой торговой площадки на 2 экрана (1 — список продуктов из одной кастомной ячейки в TableView с несколькими Header’ами, 2 — экран со статической таблицей полей свойств каждого продукта с картинкой) до реализации сервиса на основе API Кинопоиска для просмотра актуальных фильмов в кино с сортировками по дате, отображением локации, времени с подробным описанием картины, подгрузкой трейлеров и списка людей, принимавших участие в организации съёмок.
В итоге, получил неплохое предложение в €600 для старта карьеры, отличный коллектив и достаточно времени для изучения Swift (на котором пишу новый проект), а также перспективу развития заработной платы до €800 за полгода и до €1000 за год. Только вот уже сейчас задумываюсь о том, чтобы за год уйти на дистанционку и продолжить путешествия без привязки к рабочему месту. Жильё в Гоа стоит дешевле, чем в нашей столице у метро, так чего мёрзнуть? Снег, конечно, красив, только закат в аравийском море намного красочнее.