Перевод статьи «How I got my Software Engineering Internship after 4 months of Self-Study».


Я начала изучать программирование с нуля примерно в январе-феврале. А в мае получила оффер по стажировке в одной известной компании.
Что я могу сказать? Попасть на стажировку разработчику в наше время довольно сложно. Вам придется пройти через весь процесс подачи заявок, прохождения технических собеседований и все новых и новых отказов. Я понимаю, насколько это сложно, поскольку сама подала больше 700 заявок в различные компании, прежде чем получила место.
Но все-таки попасть в эту индустрию с помощью самообучения вполне реально, если вы будете настойчивы.Ниже представлено пошаговое руководство с рассказами о том, что конкретно я делала на каждом этапе.
Шаг 1: Изучение основ
Лучшими ресурсами, с которых стоит начать, являются freeCodeCamp и CodeCademy.
Оба сайта предлагают самые доходчивые объяснения материала и могут научить вас самым основам того, что вам нужно знать для вхождения в сферу разработки. Чтобы изучить синтаксис выбранного вами языка программирования, я советую начать с CodeCademy.
Примечание: Для наибольшей эффективности в учебе нужно знать, на какие роли вы собираетесь претендовать. Например, если вы хотите стажироваться в сфере фронтенда, то вам очень пригодится курс по веб-разработке на freeCodeCamp.
Что я делала
Лично меня всегда больше интересовал фронтенд. Для фронтенд-разработчика, несомненно, самым важным является знание JavaScript, HTML и CSS.
Поэтому свою первую неделю я начала с самостоятельного изучения курса Introduction to Javascript на CodeCademy. Он совершенно бесплатный, а объяснение материала очень дружественное к начинающим. Чтобы учеба была более эффективной, я постоянно делала заметки о том, что изучила и что не поняла. Позже я могла вернуться к своим записям, чтобы освежить их в памяти и не забыть изученное.
HTML и CSS относительно легко изучаются. Я перешла на курс freeCodeCamp по веб-дизайну. Это один из лучших бесплатных источников. Если пройдете его целиком, то будете знать не только основы веб-разработки.
Когда почувствуете, что основы вы уже знаете, я настоятельно советую продолжить обучение по Настольной книге фронтенд-разработчика. Там вы найдете полный список ресурсов для дальнейшего обучения, как платных, так и бесплатных. Они научат вас всем тонкостям, которые должен знать веб-разработчик.
Шаг 2: Создание проектов
Спустя несколько недель вы будете готовы к созданию маленького проекта. Вообще, если у вас нет опыта работы, проекты играют огромную роль в вашем резюме. Хорошие идеи проектов вы можете найти на том же freeCodeCamp. Начните с чего-нибудь маленького.
Если вам тяжело найти идею для проекта, можете поискать в Google что-то вроде «100 идей проектов на языке Х» – обычно это хорошо срабатывает. Также обратите внимание на репозитории на GitHub: многому можно научиться, читая их код.
Когда завершите проект, протестируйте его и разместите исходный код на Github. Это важно, поскольку это единственный способ, который поможет компаниям оценить ваши способности, если у вас нет опыта работы. По возможности размещайте код хорошего качества и прилагайте к нему документацию.
Что я делала
Когда я получила оффер, у меня было уже 4-5 проектов. Начинала я с форка маленькой игры на GitHub. Я изучила ее код, а затем добавила свой. Постепенно я переходила к более сложным проектам. Вот список всех проектов, которые я завершила до получения оффера, с описаниями и указанием задействованных технологий:
- Различные маленькие игры вроде «Сапера», сделанные на React и стилизованные с помощью CSS.
- Карта для визуализации больше полумиллиона точек данных трафика – сделана с помощью Javascript и Mapbox.
- Рабочее приложение React Native, позволяющее пользователям показывать свои лучшие фотографии, с бэкендом, реализованным на Node.js и Mongoose; размещено на Heroku.
Шаг 3: Подача заявок
В этой сфере у меня самый большой опыт, поскольку заявок я разослала множество. Вот лучшее, что я могу посоветовать в отношении поиска работы и попыток попасть на собеседование:
- LinkedIn, Glassdoor и Indeed Easy Apply вам не подойдут. Рекрутеры получают столько заявок с этих сайтов, что отсеивают их с помощью специальных инструментов. Если у вас нет опыта работы или впечатляющих проектов, скорее всего вам не пробраться через фильтр.
- Сопроводительное письмо это палка о двух концах. Хорошо составленное, оно действительно может выделить вас на фоне других кандидатов. А если оно будет составлено плохо, то может значительно ухудшить ваше положение. Если вы хотите написать такое письмо, то оно должно быть нацелено на конкретную компанию, в которую вы его пошлете. Не рассылайте одинаковые общие письма во все компании, поскольку рекрутеры поймут, что вы уже сотню таких послали. Наконец, пожалуйста, удостоверьтесь, что в вашем резюме и сопроводительном письме нет грамматических ошибок. Чтобы вам отказать, рекрутеру хватит одной опечатки.
- Мои подачи заявок были самыми успешными, когда я отсылала электронные письма напрямую рекрутерам или даже директорам компаний (если это были маленькие фирмы). Если компания не афиширует свой e-mail, обычно его можно угадать, поскольку он зачастую вписывается в шаблон привет@название_компании.com. Такие письма очень повышают шансы на то, что ваше резюме будет рассмотрено (по сравнению с заявками через Indeed/Glassdoor). Можно сделать себе шаблон письма и подгонять его под отдельные компании.
- Будьте толстокожим. Компании могут отказывать вам по разнообразным случайным причинам. Это нормально. Если у вас не слишком привлекательное резюме, у вас меньше шансов попасть на собеседование. Продолжайте подавать заявки и не сдавайтесь. Пока вы не сдались, вы не проиграли.
Шаг 4: Собеседования
Когда вы наконец попадете на долгожданное собеседование, постарайтесь быть к нему готовым. Есть множество онлайн-ресурсов, где можно потренироваться в прохождении технических собеседований. Стоит почитать Cracking the Coding Interview, если еще не читали.
Технические собеседования это большой стресс. Непременно нужно подготовиться к вопросам по алгоритмам – без них не обойдется. Множество хороших вопросов для практики можно найти на Leetcode.
Но поскольку эти вопросы широко распространены и все уже с ними знакомы, вряд ли вам на собеседовании предложат какой-то вопрос из их числа. У интервьюеров обычно есть банк случайных вопросов, которые не публикуются онлайн. Но основные идеи все равно будут те же. Например, в любом случае полезно хорошо знать структуры данных и большое О.
Стоит обратить внимание еще на одну вещь. Компании, где я проходила собеседования, часто брали мои проекты и задавали мне технические вопросы по реализации. Таким образом они проверяют, действительно ли это ваши решения, так что будьте к этому готовы.
Что я делала
Начнем с того, что провал на собеседовании совершенно нормален. Мои первые попытки были ужасными, даже вспоминать неловко.
Я поняла, что недостаточно готова к техническим вопросам. Поэтому я начала заниматься на Leetcode по 2-3 часа в день. Самое главное – не тратить слишком много времени на одну проблему. На собеседовании у вас не будет неограниченного времени. Поэтому ставьте себе таймер минут на 10 для простого вопроса и на 20 для среднего (сложные вопросы для претендующих на позицию стажера вряд ли понадобятся).
Если не можете решить вовремя, это нормально. Посмотрите решение и попытайтесь понять его. Пометьте эту задачу и попробуйте решить ее через неделю.
Поскольку на собеседованиях тестируют и ваши коммуникативные навыки, вы можете подготовиться к этому, проговаривая вслух свои мысли, пока решаете задачу. Поверьте мне, поначалу это может звучать странно, но когда вы привыкнете, это сыграет вам хорошую службу на собеседованиях.
Заключение
Поиск первой работы / стажировки может быть долгим, огорчительным и пугающим. Но опыт, который вы получите на настоящей работе, того стоит. Вот для сравнения мой проект, сделанный после стажировки, и один из моих первых проектов.




Отличаются, правда?
Вот почему я думаю, что время, потраченное на поиски, полностью окупилось. Я ни за что не сумела бы сделать такой проект, как на первом скрине, без наставлений и опыта, полученных во время стажировки.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]