IOS-РАЗРАБОТКА
Пошаговое руководство: Как устроиться iOS-разработчиком в США
Хочешь стать крутым iOS-разработчиком, уехать в Штаты и получить грин-карту?

Вот инструкция:
1. Получи введение в профессию на курсе «iOS-разработчик» от Redmadrobot.
2. Наберись опыта самостоятельно или пройди стажировку в компании.
3. Прочитай этот материал и следуй советам Роба Карaвея.

Роб Карвей потратил две тысячи часов на попытки устроиться в компанию мечты. В итоге ничего не вышло, но он многому научился, выработал собственный гайд по поиску работы и в итоге устроился в команду, которая действительно ему подходит. Мы перевели и адаптировали оригинальный пост Роба, надеемся, вам будет полезно.
6 сентября 2018
1 Million Downloads as an iOS dev. I write about development and mastery of software biz and swift development. Thoughts are my own.
Меня не приняли на работу в компанию, на которую я потратил три с половиной месяца сил и энергии.

Я изучил про них все. Мысли о работе в этой компании стали моей навязчивой идеей. Я мог дословно процитировать каждую публикацию основателей этой фирмы.

Я идеализировал их, мне так нравится.

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

Я вложил в эту работу всю свою энергию, но убеждал себя, что все усилия не были напрасными. Я, конечно, не верил в это, просто утешал себя.

Спустя несколько месяцев на меня все-таки обратили внимание и я получил долгожданный звонок из этой компании: мне предложили выполнить их тестовое задание.

Я работал над кодом в течение недели и сделал его идеальным. Команда была под впечатлением. Я был уверен в себе и думал, что желаемая должность уже у меня в кармане.

Затем я приступил к заданию в парном программировании.
Через два дня я получил письмо с отказом. Они сказали, что я не подхожу. Я потратил более двух тысяч часов, чтобы получить один короткий урок.
Я рухнул на диван. Они были правы. Я действительно не подходил под их требования, но месяцами убеждал себя в обратном.

Сейчас я вижу, насколько нелепым и рискованным было мое поведение. Раньше я боялся отказа, и старался сделать все, чтобы его не получить.
Все мы переживаем, массово рассылая резюме во все возможные компании и получая нулевой отклик.
После того неприятного отказа я поумнел (как будто у меня был выбор). Я создал реально работающую стратегию и меня взяли iOS-разработчиком в компанию, которой я действительно подходил по требованиям.
Цели этого гайда
Стратегия, о которой я расскажу, не требует командной работы и подходит для тех, кто ищет постоянную работу на весь день. Даже если вы не знаете никого из этой сферы, вам поможет умение общаться и продавать себя.
Вам понадобится портфолио
  • Приложение, созданное вами и доступное для скачивания
  • Проекты с открытым исходным кодом, которые вы запустили или в которых принимали участие
  • Проекты, в которых вы участвовали в качестве тимлида
  • Другой схожий опыт работы

Я не могу помочь вам продать себя, если вам нечего продавать.

Из этого руководства вы узнаете, что нужно в 2018 году, чтобы получить работу в американской компании, связанной с iOS-разработкой и созданием пользовательских приложений.
Немного обо мне
Я начинал программировать еще с iOS4. У меня нет высшего образования и никогда не было постоянной работы. Я никогда не работал по AGILE и никогда не работал в больших командах.

Кстати, большинство компаний отказало мне из-за отсутствия опыта командной работы, а не из-за отсутствия диплома об образовании.

Но я шел трудоустраиваться не с пустыми руками. Я создал приложение с миллионом загрузок в AppStore. Я основал малобюджетный стартап и уже работал с несколькими крутыми клиентами на фрилансе. У меня есть достойные проекты, которые наглядно демонстрируют мои навыки.

В итоге я получил работу в крупнейшей компании на IT-рынке (в Остине, штат Техас), с возможностью работать удаленно. Мне предложили руководящую должность. Думаю, что мой опыт будет полезен для джуниоров и мидл-программистов.
Прежде чем перейдем к серьезным вещам
Мое главное правило при устройстве на работу — документируйте все!
Делайте заметки о компании, анализируйте, какие резюме и сопроводительные письма эффективны, записывайте свои выводы после каждого собеседования. Это поможет вам гораздо быстрее понять и исправить свои ошибки.
Подготовка вашего резюме
Не пытайтесь изобрести велосипед. Если у вас есть время, лучше почитайте руководство по составлению резюме для разработчиков.


Если времени у вас нет, вы можете взять за основу версию резюме, с помощью которого я искал работу:
Ваше резюме должно быть простым и читаемым. Перечислите свои навыки, начиная с тех, которые покажут вас в лучшем свете.
В вашем резюме должно быть указано :

  • Образование (если у вас есть диплом или вы получили важное дополнительное образование)
  • Опыт работы
  • Ссылки на открытый код
  • Ваши приложения (укажите ссылки, если возможно)
  • Самые важные технические навыки (список не должен быть слишком большим)
  • Что-нибудь примечательное (проекты, сообщества, митапы, которые вы организовали, выигранные хакатоны)

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

Создайте несколько версий вашего резюме. Каждый вариант должен быть адаптирован под требования той компании, в которую вы его отправляете.

Не пытайтесь врать, просто пишите так, чтобы продать ту часть себя, которую компания ищет больше всего.
Другие способы получить преимущество
Создайте персональный сайт
С помощью сайта вы сможете рассказать о себе больше, чем написано в резюме. Посмотрите на мой сайт. Когда я пришел в офис InMotion Software, у них была открыта страница «Обо мне» на моем сайте. Через пару дней они взяли меня на работу.

Вот еще один пример хорошего сайта. Сделайте чистый и минималистичный дизайн и постарайтесь рассказать о себе именно в том ключе, который понравится вашему потенциальному работодателю.

Если вам приходится врать, значит вы пытаетесь получить позицию, до которой пока не доросли. Так бывает. Трезво оцените свои возможности и откалибруйте резюме.

Если вы не очень хороши в веб-разработке, то попробуйте создать сайт на Squarespace, WordPress или другом подобном сервисе.

Если разбираетесь в веб-разработке, то создайте сайт с нуля. Я использовал Node.js и Hexo. Так я показал, что могу работать и в других областях программирования, и это может быть полезным для работодателя.
Создайте сильный профиль на LinkedIn
Вы ошибаетесь, если думаете, что LinkedIn — отстой. Я получил пару предложений о работе именно через него.
Посмотрите на мой профиль. Не обязательно быть экспертом, я начал работать над ним год назад.

Загрузите в профиль хорошую фотографию и обновляйте его, когда появляется новая информация. Я сделал селфи и обработал фото в редакторе. Попрактикуйтесь делать хорошие фотографии.
Добавьте ключевые слова в профиль, они помогут найти вас по конкретным поисковым запросам.
Если вы живете в менее конкурентном городе, чем Остин, вы будете довольно сильно выделяться среди других кандидатов.
Поиск работы по-умному
Вот несколько отличных способов найти работу iOS-разработчиком в США:

  • Поищите вакансии на Angel.co (проверьте предложения в определенных регионах и с возможностью удаленной работы)
  • Ищите по запросу "iOS Developer jobs [PreferredCity]" в Google, Glassdoor, ZipRecruiter и Indeed
  • Погуглите "remote iOS Jobs"
  • Проверяйте доску на Stack Overflow, если у вас уже есть аккаунт
  • Аналогично с Github
  • Ищите вакансии для iOS-разработчика на LinkedIn
  • Примите участие в IT-мероприятиях

Последний пункт особенно хорош. Обычно американские города имеют локальные IT-сообщества. В Остине, например, есть сайт BuiltInAustin. Там я нашел предложение от компании, в которой работаю на данный момент.
Ключевые слова для поисковых запросов: Mobile, App, iOS, Swift, Developer, Engineer, Programmer, Remote, Architect, iPhone.
Сохраняйте список вакансий, которые вам понравились, в заметках. Я использовал заметки на своем iPhone.
Делайте заметки о сайтах компаний, об их приложениях, смотрите отзывы и все, что с ними связано, чтобы понять, что вам нравится/не нравится.
Найдите свой комфортный темп. У вас должно оставаться достаточно времени на основную деятельность.

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

Подумайте, что вас интересует в каждой компании. Возможно, вам будет не интересен продукт, который они создают, но понравятся их технологии, корпоративная культура, новые навыки, которым вас могут научить, или люди, которым они помогают.
Составляем сопроводительное письмо
После того, как вы изучили компанию, выпишите все, что вам нравится в ней. Возможно, они упомянули в тексте вакансии что-то, что оказалось близко вам. Используйте это, чтобы показать, что вы отлично подходите и действительно хотите получить ответ.

Сделайте ваше сопроводительное письмо немного небрежным. Никто не хочет читать усыпляющие канцелярские штампы и 500 слов ни о чем.

Упомяните те позитивные моменты, которые привлекли ваше внимание. Расскажите, почему вы уверены в своих навыках и квалификации.

Вот сопроводительное письмо, которое я отправил, чтобы получить приглашение на телефонное интервью:
Приглядитесь, я даже допустил опечатку ???? (но вам я не рекомендую так делать).
Обратите внимание, как я рассказал об отсутствии опыта командной работы. Я описал это так, будто я просто жажду получить этот опыт, что, кстати, было правдой.

Как и с резюме, у вас должно быть несколько версий сопроводительного письма. Сделайте таблицу, в которой будете отмечать, какое письмо сработало, а какое нет.
Подготовка к тестовому заданию
Тестовое задание — это небольшое упражнение, которое необходимо выполнить в ограниченные сроки, чтобы проверить ваши знания и навыки в программировании.
Тестовое задание обычно состоит из нескольких моделей view controllers, которые используют несколько соответствующих технологий (например, работа с сетью и обработка данных).
Я не собираюсь выдавать все секреты, связанные с требованиями к тестовому заданию, но думаю, что компании будут рады получить подготовленных кандидатов.
Список ключевых вещей, с которыми я столкнулся в различных тестовых заданиях:

  • AutoLayout и Autoresizing
  • Адаптивная верстка на различных экранах (Dynamic Text)
  • Базовые запросы API
  • Работа с TableViews и CollectionViews
  • Работа с данными с помощью Core Data, UserDefaults или Archiving
  • Вы должны уметь работать со сторибордами, но будьте готовы, что вам придется самостоятельно разработать views и controllers
  • Классификация размеров
  • Асинхронная загрузка изображений и отображение их в основном потоке
  • Добавление пагинации (бесконечной прокрутки) в TableView и CollectionView
  • Модульная обработка кода. Нужно уметь создавать иммутабельные модели и объекты на сервисном уровне.

По всем вышеперечисленным пунктам могут задать вопросы на собеседовании.

Вы не сможете написать идеальный код. Это нормально:
Каждый раз, когда вы пишите код, который вы считаете несовершенным, вставляйте оператор //TODO или //FIXME cо списком улучшений, чтобы показать команде, что вы знаете о проблемах и готовы работать над ними.
Выполняя задание, вы проверяете самого себя и свои способности в создании продукта, который может понравиться другим. Если вы знаете, как создать красивое, лаконичное и быстрое приложение, сделайте это, даже если это не требуется (но только при наличии свободного времени).
Как подготовится к тестовому заданию в парном программировании
Не во всех компаниях практикуется такое задание, но об этом стоит помнить.

В парном программировании вам, скорее всего, придется работать над кодом, который был создан специально для тестового задания, или с кодом, схожим с тем, с которым вы можете столкнуться внутри компании.

К сожалению, эту часть не получится выгодно «подстроить». Вы никак не сможете повлиять на ваше взаимодействие с незнакомым человеком, поэтому просто доверьтесь своим инстинктам.
Не переживайте и получайте удовольствие во время выполнения теста. Если у вас появились ощущения, что все прошло не так гладко, то сделайте заметку о том, что вы могли бы сделать лучше.
Если вы хотите потренироваться, поработайте над какими-нибудь проектами со своими друзьями. Чем больше практики, тем лучше.
Подготовка к интервью
Темы, к которым необходимо подготовиться:

  • Нотация «большого О», например, Big O в Swift/Obj C
  • Структуры данных
  • Создание LinkedList в Swift (на всякий случай)
  • Структура vs. класс в Swift
  • Изучите, как работают структуры данных в Swift Standard Library (на базовом уровне)
  • MVC, MVVM
  • Код, который вы написали в тестовом задании или:
  • Код, который вы сможете написать, чтобы решить проблему, с которой сталкивалась компания
  • Как ваши цели и интересы совпадают с тем, чем занимается компания
  • Вопрос «Как вы видите свой карьерный рост в течение 5 лет»


Интерес к компании строится по принципу «притворяйся, пока это не станет правдой». Чем больше вы узнаете о компании и о пользе, которую вы можете принести, тем сильнее будут совпадать ваши общие интересы.

Но не перестарайтесь, избегайте компании с негативными отзывами сотрудников на сайте Glassdoor и компании без определенной миссии и цели.

Из собственных заметок (хотя так бывает не всегда): чем больше компания, тем более академичное у них собеседование. Будьте готовы к вопросам с уловками от Big N компаний.

У маленьких компаний, как правило, меньше формальностей, они им просто не нужны.
Другие, не менее важные способы подготовки:

Мысли напоследок
Найдите баланс между поиском идеальной должности и реальной работой, которую вы можете получить.

Если вы будете следовать данной стратегии, то у вас все получится: например, резюме, с которым меня взяли на работу, очень сильно отличалось от того, с которого я начинал поиск работы. Я стал относиться спокойнее к собеседованиям.

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

Напоследок, если вам интересна работа в Остине, то InMotion Software ищет сотрудников! Мне было очень приятно с ними работать.
На авторском курсе от Redmadrobot вы освоите азы iOS-разработки за пару месяцев и начнёте писать чистый код, соответствующий современным гайдам.

Учитесь у лучших — ведущие разработчики из Redmadrobot поделятся своими best practices, техниками и инструментами.
Прокачайтесь в iOS-разработке
Понравилось? Поделитесь с друзьями