Как стать программистом, переехать в США и получить работу мечты

Виталий Ампилогов

В этой книге вы найдете подробное руководство и максимальное количество полезных советов для того, чтобы одним прекрасным солнечным калифорнийским утром сесть в свою Tesla и поехать на любимую работу в Google, Apple, Facebook или Amazon.Книга содержит ответы на многие важные вопросы: что конкретно нужно делать для переезда в США? Как освоить востребованную специальность в сфере разработки ПО? Как получить работу в американской ИТ компании?

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Как стать программистом, переехать в США и получить работу мечты предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Глава 1. Как стать программистом

Разработчик программного обеспечения — это самая востребованная специальность XXI века. Из-за большой потребности в программистах многие компании готовы платить высокие зарплаты и предлагать максимально комфортные условия работы. Специалисты в области разработки программного обеспечения имеют хорошие карьерные перспективы, а также возможности переезда в США по рабочей визе и трудоустройства в американские ИТ-компании.

Программирование — это то, чем явно стоит заняться. Результат многократно окупит все затраченные усилия. И помните, что самое лучшее время начать изучать программирование — это сегодня. Не повторяйте мою ошибку — не откладывайте изучение программирования на потом. Отбросьте сомнения и начинайте действовать прямо сейчас.

В этой главе мы поговорим о том, как быстро освоить профессию программиста и найти первую работу по этой специальности. Очень важно как можно скорее начать работать в области разработки программного обеспечения — это позволит получить профессиональный опыт и поможет развиваться в сфере ИТ.

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

Избавляемся от стереотипов

1. Нужно быть очень умным.

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

2. Без образования невозможно стать программистом.

Для того чтобы научиться программировать, нет необходимости получать классическое образование. Как правило, классическое образование — это самый неэффективный способ научиться программировать, поскольку требует долгого обучения и дает очень мало практических навыков, востребованных в реальной жизни. Намного эффективнее заниматься самообразованием или посещать специальные курсы. Большинство российских компаний будут готовы взять вас на работу без высшего образования. Однако стоит отметить, что отсутствие высшего образования в ИТ уменьшает количество возможных вариантов переезда в США.

3. Я уже слишком стар для изучения программирования.

Это самый распространенный стереотип, навязанный обществом. В России принято считать, что программисты — это молодые парни до 30. Это всего лишь общественное мнение, на которое не стоит обращать внимания. Изучение программирования требует одинаковых усилий в любом возрасте и не зависит от того, сколько вам лет. Возможно, стоит задать себе вопрос, не является ли этот стереотип вашей отговоркой, чтобы ничего не делать?

4. Мне нужны профессиональные знания.

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

5. У меня нет мотивации заниматься программированием.

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

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

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

7. Я за месяц научусь программировать.

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

8. Я легко найду работу с высокой зарплатой.

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

9. Программистов стало слишком много, скоро они будут никому не нужны.

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

10. Результат не стоит тех усилий, которые необходимо приложить.

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

Выбираем язык программирования

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

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

Веб-разработка: JavaScript, PHP, Python

Мобильные приложения: Swift, Kotlin

Серверные приложения: Java, Python

Машинное обучение: Python

Разработка игр: C#, C++

Как вы можете заметить, наиболее популярные современные языки программирования: Python, Java, JavaScript, Swift, Kotlin, C#, C, C++, PHP. Не стоит выбирать экзотические языки программирования, это усложнит обучение и поиск работы в будущем.

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

Python

Это универсальный язык программирования, который используется во многих сферах, таких как машинное обучение, автоматизация, анализ данных, веб-разработка, бэкенд-разработка. По результатам опросов Stack Overflow, Python удерживает первую строчку в списке самых популярных языков программирования уже несколько лет.

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

Многие крупные компании, такие как Google, Dropbox, Uber, выбирают Python, поскольку разработка на этом языке занимает меньше времени, чем на других языках программирования. Для Python доступно большое количество библиотек, которые помогают решать самые разные задачи. Также большое сообщество разработчиков позволяет без проблем находить ответы на возникающие вопросы.

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

Python — это хороший выбор для первого языка программирования. У него простой синтаксис, широкая область применения, большое сообщество разработчиков и много вакансий.

Swift и Kotlin

Мобильная разработка — один из самых популярных трендов последних лет. Если вам нравятся мобильные приложения, то стоит обратить внимание на Swift и Kotlin. Это современные языки программирования для мобильных устройств на базе iOS и Android.

Swift разработан компанией Apple для создания приложений для iPhone, iPad, Mac, Apple Watch и Apple TV. Многие разработчики любят Swift за простоту синтаксиса, большое комьюнити и высокий спрос на Swift-разработчиков. Стоит отметить, что до появления Swift приложения для устройств Apple писались на Objective-C. В настоящее время уже нет смысла изучать Objective-C, поскольку этот язык стремительно теряет популярность.

Kotlin — это простой и современный язык для написания Android-приложений. Разработкой и развитием Kotlin занимается компания JetBrains. Также Kotlin продвигается Google как основной язык программирования для Android. До появления Kotlin Android-приложения создавались в основном на Java.

Разработка мобильных приложений — это очень интересное и перспективное направление. Вам предстоит работать с самыми современными технологиями и постоянно изучать что-то новое. Также у вас будет возможность всегда видеть результат своей работы в виде приложений на смартфонах пользователей.

JavaScript

Это самый популярный язык программирования для создания веб-приложений и сайтов. Если вас привлекает веб-разработка, то JavaScript — ваш выбор. Свою популярность JavaScript получил благодаря широкой поддержке во всех интернет-браузерах. Помимо веб-разработки, JavaScript можно использовать для написания серверной части, используя библиотеку Node. js, а также для написания мобильных приложений, используя фреймворк React Native.

JavaScript достаточно прост в изучении, но имеет свои особенности — например, отсутствие классов и наследования. Вместе с JavaScript обычно изучают HTML для верстки веб-сайтов и CSS — для создания визуальных стилей. Также предстоит освоить один из самых популярных JavaScript-фреймворков — Angular, Vue или React.

Далее можно развиваться в сторону backend-разработки, изучая Node. js. Это трендовая технология, которую используют BMW, Amazon, Apple и другие крупные компании. Так вы расширите область своих знаний JavaScript за пределы управления веб-страницами.

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

Java

Это универсальный язык программирования с более чем 25-летней историей. Сотни тысяч компаний, среди которых Google, Apple, Amazon, Netflix, используют Java для разработки серверных и клиентских приложений. Принято считать, что Java — это язык для разработки больших систем, в котором основной упор сделан на простоту и читаемость кода. Это позволяет сотням программистов работать над одним большим проектом.

Если вам нравится бэкенд-разработка, то Java может стать для вас хорошим выбором в качестве первого языка программирования. Благодаря простому синтаксису и большому сообществу разработчиков научиться программировать на Java будет не так сложно. Также последние несколько лет Java активно развивается и перенимает все современные подходы из других языков программирования.

Java-разработчики всегда будет востребованы на рынке труда, поскольку нужно как разрабатывать новые системы, так и поддерживать существующие. Помимо разработки бэкенд-приложений Java широко используется в Big Data, устройствах IoT, Android-приложениях, облачных вычислениях и многих других сферах.

Спросите себя, что вам больше всего нравится: мобильные приложения, веб-сайты, серверные приложения, машинное обучение, — и на основании этого сделайте свой выбор между Python, Swift, Kotlin, JavaScript и Java. Все эти языки очень востребованы на рынке труда и никуда не пропадут в ближайшем будущем. В процессе изучения программирования стоит придерживаться сделанного выбора — это позволит сфокусироваться на одном языке программирования и быстрее достичь результатов.

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

Как изучать программирование

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

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

Вероятно, у вас появился вопрос, что же конкретно нужно делать для того, чтобы выучить программирование. Обучение состоит из двух основных частей: освоение основ языка программирования и практика. Именно практика является главным элементом обучения, на нее предстоит потратить основную часть времени. Нет смысла просто читать книги по программированию или просматривать обучающие видео, если вы не выполняете практические задания, поскольку научиться программировать можно только на практике.

Видеоуроки и видеокурсы

Видео — это самый эффективный способ восприятия информации. В настоящее время доступно огромное количество бесплатного видеоконтента в области самообучения. Созданы тысячи видеоуроков по всевозможным языкам программирования.

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

Первое, что необходимо сделать, — это найти подходящий набор видеоуроков. Поиски можно начать в Google по запросу [название языка программирования] + видеоуроки. Если у вас нет опыта программирования, то выбирайте русскоязычные видеоуроки. Это сильно упростит восприятие материала.

Вероятно, вам будут попадаться видеоролики формата «Выучи Python за час». Возможно, такой вариант может послужить хорошим стартом, но для обучения вам понадобится более подробный курс. Много хороших бесплатных видеоуроков и практических заданий по программированию для начинающих можно найти на YouTube и образовательной платформе Stepik. Также если у вас есть знакомые программисты, можно спросить у них совет по выбору видеокурса.

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

Python

ADV — IT — «Python для Начинающих» (YouTube) — основы языка

Гоша Дударь — «Уроки для начинающих» (YouTube) — основы языка

«CS центр» — «Python для решения практических задач» (Stepik) — практика

Coding Medved — «Джанго с нуля на примере создания простого интернет-магазина» (YouTube) — практика

Swift

Alex Skutarenko — «Swift Марафон» (YouTube) — основы языка

Loftblog — «iOS приложение ToDo List на Swift» (YouTube) — практика

The Swift Developers — «UIKit с нуля» (YouTube) — практика

Kotlin

Devcolibri — «Базовый курс по Kotlin» (YouTube) — основы языка

Brain Softer LLC — «Видео-уроки Kotlin» (YouTube) — основы языка

JetBrains — Kotlin (Stepik) — практика

Start Android — «Kotlin. Уроки по основам разработки android-приложений» (YouTube) — практика

JavaScript

DKA-DEVELOP — «JavaScript с нуля» (YouTube) — основы языка

Sorax — «Основы JavaScript» (YouTube) — основы языка

Web Developer Blog — «Уроки JavaScript» (YouTube) — основы языка и практика

Java

Devcolibri — «Java для начинающих» (YouTube) — основы языка

Гоша Дударь — «Уроки Java для начинающих» (YouTube) — основы языка

Mail.ru Group — «Разработка веб-сервиса на Java» (Stepik) — практика

Многие мои знакомые выучили свой первый язык программирования, используя эти видеоуроки. Лично я выучил основы Swift на канале Алексея Скутаренко «Swift Марафон». Алексей создал бесплатный и простой для понимания курс с практическими заданиями. Курс не требует знаний программирования и идеально подходит для новичков. К слову, моя жена выучила Swift по этому курсу, не имея никаких знаний в области программирования.

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

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

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

Книги по программированию

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

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

Вероятно, вам встретятся рекомендации таких популярных книг по программированию, как «Алгоритмы: построение и анализ» (Томас Кормен, Чарльз Лейзерсон), «Совершенный код» (Стив Макконнелл), «Искусство программирования» (Дональд Кнут). Это хорошие книги, но они не подходят для получения первоначальных знаний в области программирования. Вы получите максимальную пользу от этих книг, когда уже какое-то время поработаете по специальности.

Онлайн-школы

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

Учиться бесплатно в онлайн-школе не получится, цены начинаются от 10 000 рублей за месяц обучения. Платное обучение может добавить вам мотивации не пропускать занятия и выполнять домашнюю работу.

Наиболее известны онлайн-школы от «Яндекса» («Яндекс. Практикум») и Mail.ru (GeekBrains), но в последнее время появляется все больше небольших онлайн-школ. Вероятно, вы часто будете видеть рекламу с обещаниями научить программировать за три месяца и устроить на работу с зарплатой от 100 000 рублей. Реальность, разумеется, отличается от рекламных слоганов. За три месяца возможно выучить основы языка, но для получения прикладных навыков требуется куда больше времени.

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

Офлайн-школы

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

Наиболее популярные школы на момент написания книги: «Тинькофф Финтех», школа программистов HeadHunter и «Школа 21» — проект Сбербанка, основанный на методике, используемой в инновационной французской школе программирования Ecole 42. Ежегодно появляются новые школы, поэтому стоит самостоятельно проверять информацию в поисковике.

Когда я работал в «Тинькофф», мы нанимали очень много ребят из нашей финтех-школы, поскольку выпускники имели хорошие базовые и практические навыки для решения повседневных задач. Сейчас обучение программированию проходит в Москве, Санкт-Петербурге, Новосибирске, Екатеринбурге и Рязани. Доступно множество направлений, среди которых разработка приложений для iOS и Android, программирование на Python, Scala, JavaScript.

HeadHunter в своей школе обучает программированию на Java и JavaScript. Занятия проходят по вечерам в московском офисе компании. Продолжительность курса — полгода: три месяца теории и три месяца практики. По завершении обучения у вас будут хорошие шансы устроиться в компанию.

«Школа 21» отличается от классических офлайн-школ программирования. В этой школе нет преподавателей, а задания проверяют сами студенты. Также оказывается помощь в поиске оплачиваемой практики в ИТ-компаниях. Обучение в школе бесплатное и проходит в Москве и Казани. Перед началом обучения в течение месяца проходит жесткий отбор, после которого начинается более глубокое изучение программирования. Доступны все популярные языки программирования: C, C++, Swift, PHP, Pyton, Rubi, JavaScript и т. д.

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

Я помню, как один парень ездил из Казани в Москву на каждое занятие в «Тинькофф Финтех» и в результате успешно закончил обучение, а затем получил работу.

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

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

Изучение основ языка программирования и приемов прикладной разработки займет несколько месяцев. Время обучения будет сильно зависеть от того, сколько времени вы сможете выделять и насколько эффективно работать. Но недостаточно просто пройти определенный материал и выполнить практические задания — важно овладеть самостоятельными навыками создания проектов. Это важный этап на пути к поиску первой работы, о котором мы поговорим в следующей главе.

Создание своих проектов

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

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

Не стоит недооценивать умение искать информацию в Google. Этот навык поможет вам быстро находить ответы на возникающие вопросы. Поскольку вы программируете на одном из популярных языков программирования, то, вероятнее всего, решение вашей проблемы уже опубликовано на Stackoverflow или другом форуме. Стоит понимать, что большинство информации доступно только на английском языке, следовательно, вам предстоит искать ответы на английском.

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

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

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

Идея

Первое, что вам стоит сделать, — определиться с основной идеей продукта. Для этого выпишите на листок список приложений, сервисов или сайтов, которые были бы вам интересны. Идея не обязательно должна быть уникальной, вполне нормально написать приложение для списка дел, трекер выпитой воды или прогноз погоды. Еще больше идей можно найти в Google по запросу side project ideas. На этом этапе важно определиться с выбором и двигаться дальше.

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

На этапе выбора идеи можно определить, какой минимальный набор функций должен содержать ваш продукт. Не старайтесь сразу сделать большой продукт, выделите базовую функциональность и сконцентрируйтесь на ее реализации, в дальнейшем вы легко сможете добавить новые функции. Например, когда я писал приложение для составления списка фильмов, в первой версии я реализовал только самые важные функции: поиск фильмов и добавление их в избранное. А в дальнейшем добавил синхронизацию между устройствами, рейтинги и расширенную информацию.

Дизайн

После того как вы определились с идеей, стоит подумать о дизайне и UX. Можно начать с набросков интерфейса и основных функций в блокноте. Затем перенести этот дизайн в графический редактор — тут хорошо подойдет Sketch или Figma. Если вам не хочется разбираться с графическими редакторами и самостоятельно рисовать интерфейс, то можно попробовать найти готовый дизайн.

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

Например, если вы хотите создать веб-сервис, связанный с фильмами, то достаточно ввести в Google-картинках movies web ui — и вы получите десятки вариантов дизайна для вашего приложения.

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

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

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

Контроль версий

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

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

На первых этапах нет необходимости погружаться во все тонкости Git, достаточно будет освоить базовые функции. Для того чтобы начать работу с Git, нужно будет создать учетную запись и скачать одноименное приложение с официального сайта github.com. Далее, используя это приложение, необходимо создать репозиторий, а в дальнейшем добавлять новые изменения. Если у вас возникнут сложности, то в интернете вы без проблем найдете множество статей и курсов, подробно рассказывающих о принципах работы с Git.

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

Разработка

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

Важным моментом в процессе создания первого приложения является обратная связь. Будет здорово, если у вас есть друг-программист, который сможет посмотреть ваш код и указать на ошибки. Если у вас нет знакомых, то можно поискать конференции программистов в своем городе или найти группы в социальных сетях. Еще один вариант поиска — написать личные сообщения программистам в LinkedIn с просьбой посмотреть ваш код.

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

Следующим важным этапом в процессе разработки является декомпозиция задач. Полезно разбить проект на мелкие подзадачи — это позволяет лучше контролировать процесс разработки и примерно понимать, какой объем работы еще предстоит сделать. Также выполнение подзадач создает ощущение прогресса и добавляет мотивации в процессе создания проекта. Для управления подзадачами можно использовать Trello — в этом приложении вы сможете разбить ваш проект на небольшие подзадачи и двигать их по статусам. Таким образом процесс разработки будет более прозрачным и эффективным.

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

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

Публикация

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

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

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

Поиск работы

Термины:

Рекрутер — специалист по поиску кандидатов

Интервью — собеседование

Интервьюер — человек, проводящий собеседование

Оффер — письменное предложение о работе с указанием заработной платы

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

Реальность такова, что зарплаты программистов в Москве и Санкт-Петербурге в 2—3 раза больше, чем в регионах. Если вы сейчас за пределами этих городов, то стоит серьезно задуматься о поиске работы и переезде в столицу. Нет большой разницы, в каком городе искать работу, в плане сложности прохождения собеседования. Помимо высокой зарплаты, переезд в Москву и Санкт-Петербург откроет много карьерных перспектив и поможет получить новые связи. Также это отличный вариант оценить все сложности смены места жительства и подготовиться к последующему переезду в другую страну.

В процессе поиска работы важно поставить цель добиться лучшего результата. Например, устроиться на работу в московский офис «Яндекса», Mail.ru, «Тинькофф», Avito, Badu или Revolut. Возможно, на первый взгляд это может показаться малореалистичным, особенно для программиста без опыта работы, но в реальности у вас есть все шансы. В следующих главах мы подробно поговорим о том, что нужно делать для получения работы мечты.

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

Процесс поиска работы, как правило, состоит из следующих этапов:

1. Составление резюме.

2. Поиск вакансий.

3. Выполнение тестового задания.

4. Техническое собеседование.

5. Обсуждение и подписание приглашения на работу.

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

Составление резюме

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

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

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

Иванов Сергей

Junior iOS Developer (Swift)

Дата рождения: 17.09.1990

Город: Пермь (готов к переезду)

Телефон: +7 (123) 456 78 90

Email: sergey.ivanov@gmail.com

GitHub: github.com/sergey. ivanov

ОПЫТ РАБОТЫ

iOS-разработчик (март 2020 — настоящее время)

Полный цикл разработки приложений, от идеи до продвижения в App Store.

Movie List — простое и удобное приложение для составления списка фильмов.

— Реализовал клиент-серверное взаимодействие с The Movie Database API

— Разработал более 10 экранов с нестандартным дизайном, используя UIKit

— Реализовал синхронизацию данных с использованием CloudKit

— Использовал CoreData для кеширования пользовательских данных

— Локализовал приложение на 4 языка и опубликовал в App Store

— Написал 30 юнит-тестов и 10 UI-тестов

— Приложение было скачано более 7 000 раз за 6 месяцев

Travel Guide — офлайн-путеводитель по популярным городам мира.

— Реализовал поддержку офлайн-карт на базе фреймворка MapBox

— Использовал Core Data для доступа к данным без интернета

— Добавил монетизацию приложения с использованием StoreKit

— Реализовал 12 экранов с нестандартными UI-компонентами, используя UIKit

— Опубликовал и продвигал приложение в App Store

КЛЮЧЕВЫЕ НАВЫКИ

— Умение писать чистый и понятный код

— Навыки разработки и дизайна современного UI

— Опыт проектирования и разработки клиент-серверных приложений

— Умение заканчивать работу в срок

ТЕХНОЛОГИИ

Swift, UIKit, Foundation, CoreLocation, Autolayout, CocoaPods, Git, JSON, Client-Server API, GCD/Operation, MVP, Core Data, StoreKit, iCloud Sync

КУРСЫ

Видеокурс Swift — Алексей Скутаренко

Разработка iOS приложений на Swift — Geekbrains

ОБРАЗОВАНИЕ

Высшее образование: Пермский национальный исследовательский технический университет — «прикладная информатика» (2015—2020)

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

Давайте рассмотрим подробнее наиболее важные элементы резюме. Первое, на что обращает внимание рекрутер, — это название должности. Важно указать конкретную позицию, например Junior iOS Developer (Swift). Таким образом вы не только привлечете внимание рекрутера, но и сэкономите свое время, исключив предложения о нерелевантных вакансиях. Ошибкой будет написать в должности просто «Программист», поскольку это вносит большую долю неопределенности о кандидате.

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

Не забудьте добавить контактные данные. Если вам неудобно отвечать по телефону в течение дня, то добавьте комментарий о том, что предпочтительный способ связи — email. В этом же разделе следует указать ссылку на свой GitHub-профиль. Не забудьте предварительно привести свои репозитории в порядок и добавить описание к каждому проекту. Хороший GitHub-профиль обеспечит вам приглашение на собеседование, а в некоторых случаях может послужить заменой тестового задания. Подробно об оформлении GitHub-профиля мы поговорим во второй части книги.

Следующий важный момент — это опыт работы. Основной упор должен быть сделан на релевантном опыте. Даже если вы успешно проработали последние несколько лет в индустрии, не связанной с ИТ, не добавляйте это в резюме. Ничего страшного, если у вас будет всего лишь одна запись о самостоятельной разработке приложений. Коротко опишите проект, укажите ваши обязанности и технологии, с которыми вы работали. Будет здорово, если вы добавите конкретные цифры и результаты, например процент покрытия тестами, количество скачиваний, или коротко опишете сложные технические решения.

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

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

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

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

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

Поиск вакансий

Первый этап поиска работы — это поиск вакансий и установка контакта с рекрутером компании. Найти вакансии можно на различных онлайн-площадках, таких как HeadHunter, SuperJob, «Хабр Карьера», Rabota.ru. Здесь нет ничего сложного: регистрируетесь на сайте, заполняете свои данные и отправляете отклики. Для кандидатов эти сервисы всегда бесплатные.

Последнее время активно развивается поиск работы в Telegram-каналах. Самые популярные из них: DevJobs (@devjobs), Job Geeks (@jobgeeks), Tproger (@tproger_official), MyJobIT (@myjobit), GetIT Russia (@headzio), Logic (@logic), ForDev (@fordev), Mobile Dev Jobs (@mobile_jobs), DevOps_Jobs (@devops_jobs_feed), JavaScript Jobs (@javascript_jobs_feed). Можно подписаться на эти каналы и откликаться на вакансии, которые соответствуют вашим навыкам и опыту.

Еще один вариант — поиск вакансий на сайтах компаний. Не все ИТ-компании публикуют объявления на сторонних ресурсах. Также если вы хотите попасть в определенную компанию, но в настоящее время у них нет подходящей вакансии, вы всегда можете отправить свое резюме и поинтересоваться, нет ли у них подходящей для вас позиции.

Следующий способ поиска работы — социальная сеть LinkedIn. Я настоятельно рекомендую вам зарегистрироваться в LinkedIn, заполнить там профиль и развивать свою сеть контактов, несмотря на то что этот сервис, вероятно, по-прежнему заблокирован на территории России. В дальнейшем LinkedIn будет играть важную роль в поиске работы не только в России, но и в США. Не забудьте указать, что вы в активном поиске работы, и ежедневно добавляйте новые контакты вне зависимости от личного знакомства. Широкая сеть контактов откроет вам доступ к рекрутерам крупных ИТ-компаний по всему миру.

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

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

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

В процессе поиска работы обязательно попробуйте устроиться в крупные российские ИТ-компании, такие как «Яндекс», Mail.ru, Avito, Сбербанк, «Тинькофф Банк». Если у вас получится попасть в одну из этих компаний, то вы быстрее наберетесь опыта и получите возможность поработать над большими и интересными проектами. Также можно попробовать устроиться в аутсорс-компании (занимаются разработкой под заказ), которые имеют офисы в США. Это позволит в дальнейшем перевестись в американский офис компании. Одна из самых известных компаний в этой сфере — EPAM.

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

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

Разговор с рекрутером

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

Как правило, общение с рекрутером начинается со знакомства. Он коротко расскажет о компании и вакансии, на которую вас рассматривают. Далее вам предстоит рассказать о себе. Важно построить свой рассказ таким образом, чтобы за одну минуту успеть рассказать обо всех своих самых значимых успехах в области разработки программного обеспечения. Не забудьте упомянуть свои опубликованные проекты и различные сложности, которые вы преодолели.

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

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

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

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

Тестовое задание

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

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

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

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

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

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

Теперь пришло время применить свои основные навыки в области программирования. В процессе написания тестового проекта уделяйте большое внимание чистоте и понятности кода. На практике это подразумевает хорошие названия для функций и переменных, добавление комментариев, написание понятных протоколов (интерфейсов). Избегайте запутанных решений и различных хаков. Также не оставляйте бесполезные комментарии и закомментированный код.

После окончания разработки стоит еще раз просмотреть все файлы и проверить код. Будет здорово, если у вас есть знакомый программист, который сможет посмотреть ваш проект. Дополнительно стоит потратить время на написание юнит — и UI-тестов, поскольку в процессе проверки тестового задания на это обращают большое внимание.

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

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

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

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

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

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

Первая часть собеседования самая простая: вам предстоит коротко рассказать о своем опыте и проектах, над которыми вы работали. Заранее подготовьте небольшую самопрезентацию на 2—3 минуты. Особое внимание стоит уделить наиболее актуальному опыту, полученному в последний год. Постарайтесь построить свой рассказ на технических данных и вашем вкладе в развитие проекта. Интервьюеру интересно услышать о том, какие сложные технические проблемы вы решали. Не стоит много рассказывать о продуктовых функциях приложения и прочих деталях, не связанных с вашей основной деятельностью.

Технические вопросы

Далее вам предстоит ответить на вопросы, связанные с языком программирования и наиболее популярными фреймворками. Для подготовки к этому этапу поищите в поисковике информацию по запросу [название вашего языка программирования] + вопросы на собеседовании. Предстоит подготовить ответы на эти вопросы, чтобы увеличить свои шансы на получение работы. Сходив на несколько собеседований, вы поймете, какие темы в основном интересуют интервьюеров. Я встречал парней, которые сходили на десятки собеседований и уже знали ответы на практически все вопросы. Однако опытный интервьюер в такой ситуации начинает задавать более глубокие вопросы. Поэтому просто зазубрить ответы без общего понимания и практического использования не получится.

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

Достаточно часто в процессе собеседования просят решить какую-нибудь несложную задачу. Задачи бывают двух типов: алгоритмические и прикладные. Алгоритмические задачи направлены на проверку знаний в области компьютерных наук. Например, вас могут попросить развернуть связанный список или определить, является ли строка палиндромом. Для получения базовых знаний в этой области можно прочитать книгу «Грокаем алгоритмы». В ней просто и понятно донесены основные идеи, связанные с алгоритмами и структурами данных. В дальнейшем эти знания пригодятся вам для поиска работы в США. В российских компаниях решение алгоритмических задач не является основным показателем кандидата в отличие от собеседований в США. Если вы хотите попрактиковаться в решении задач, то можете бесплатно это сделать на сайте leetcode.com.

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

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Как стать программистом, переехать в США и получить работу мечты предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я