Перевели для вас статью Чака Грума, программиста с 18-летним опытом, работающего сейчас техническим директором крупной компании из Нью-Йорка. Чак часто ищет сотрудников для своей компании и в статье рассказывает, какими качествами и опытом должен обладать выпускник буткемпа (а равно и университета или курсов), чтобы его взяли на работу.
В роли технического директора собственной IT-компании я часто ищу новых сотрудников. Нередко разговариваю с выпускниками буткемпов, которые провели там по 3–6 месяцев. Основной вопрос, который их интересует, — как получить место разработчика.
Skillbox рекомендует: Двухлетний практический курс «Я — веб-разработчик PRO».
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
Сразу скажу, что обучение в буткемпе или где-либо еще вовсе не является гарантией превращения обычного смертного в опытного программиста. Для того чтобы стать разработчиком, необходимы тысячи часов самостоятельных занятий и практики по созданию программного обеспечения. Да, буткемп — отличный старт, но далее нужно продолжать учиться.
Вот на чем стоит сосредоточиться программисту-новичку, который хочет начать карьеру:
- Написание большого количества кода во время работы над проектом. Задача, которую нравится выполнять, — залог быстрого обучения. Кроме того, нужно завести репозиторий на GitHub, это одновременно и портфолио, и аргумент, который позволяет дать определенный кредит доверия новичку.
- Изучение базовых вещей, основ программирования. Во-первых, на собеседовании очень часто интересуются, знает ли соискатель базу. Во-вторых, это нужно самому специалисту, чтобы понимать, что он делает.
- Нетворкинг. Нужно встречаться с коллегами и потенциальными работодателями, «продавать» себя. Слабый нетворкинг чаще всего приводит к сложностям в поиске работы. И наоборот, посещение конференций, хакатонов, мероприятий для программистов позволяет не только пообщаться с «братьями по разуму», но и установить связь с возможным работодателем
.
Решайте реальные задачи
Определенная задача, которую вы взялись выполнять, значит гораздо больше, чем простой кодинг «в вакууме». Речь идет о том, что, если вы изучаете что-то, не делайте это просто так, старайтесь применять свои знания. Например, помогите сообществу open source проекта улучшить его. Все, что вам необходимо на этапе становления, — выбрать интересный проект, задачу, где вы можете показать все, на что способны. Попробуйте сделать нечто уникальное, не стоит создавать еще один сайт с рецептами.
Работая над проектом, размещайте результаты в GitHub
Результаты вашей работы размещайте в открытом репозитории GitHub. Не переживайте, что ваш код несовершенен, просто старайтесь сделать его как можно более читаемым (и, конечно, работающим). Не забывайте про автоматические тесты и добавление к проектам хорошо прописанных readme.
Работодатели часто оценивают программистов по их GitHub. Они хотят видеть примеры работы, и ваша задача — дать их.
Одна из идей, чем заняться: создайте skill для Alexa
Это и полезно для совершенствования навыков программиста, и показательно — ведь этот skill будет доступен для всех. Разработка модулей для цифрового помощника от Amazon — это, безусловно, wow-фактор, который может привлечь к вам работодателя.
Вы можете начать с простого. Сперва стоит посмотреть, что уже существует. Затем попробовать разработать собственный скилл, сделать его функциональным, отполировать. Так вы поймете, как работает IoT-девайс, получите бесценный опыт и первую (или вторую, третью) по счету работу для своего портфолио.
А еще можно реализовать что-то для потенциального работодателя
Это отличный вариант. Если вы хотите устроиться в конкретную компанию, попробуйте сделать для нее что-то полезное. Например, когда я работал в Xmarks, мы с коллегой интервьюировали соискателя, парня, который показал демоверсию проекта, где использовались наши API. Проект был интересным, мы поняли, что соискатель действительно постарался и вдобавок знает наш продукт, — и взяли его на работу.
Освойте основы
Выделите время для изучения основ разработки программного обеспечения — общие структуры данных, методы и концепции программирования. С вопросами о них есть шанс в дальнейшем встретиться на одном из собеседований. Но, что более важно, это общие инструменты, которые каждый инженер-программист должен иметь в своем багаже. Вы должны четко понимать, что представляет собой хорошая программа, которая работает корректно и быстро.
Структуры данных
Вы должны хорошо ориентироваться в списках и словарях избранного вами языка программирования.
- Что касается списков, вы должны знать:
- синтаксис для работы с любым элементом в списке;
- синтаксис для получения n-го элемента из списка; понятие индекса и 0 индексации;
- принцип сортировки списка — осознавать, что, если список длинный, это может занять некоторое время;
- различия между массивами и списками; стеки и очереди.
Для словарей ключевыми элементами знания являются:
- синтаксис использования словаря для поиска и вставки;
- понятие пары «ключ — значение»;
- поиск по ключу;
- распространенные случаи использования: «пакет атрибутов» для описания вещи, справочная таблица;
- связь между словарями и JSON (сериализация);
- понятие хеширующих функций (и то, как они связаны со словарями);
- принципы использования криптографических хешей, таких как SHA-1.
Концепции программирования
Концепций, которые вы можете изучать, очень много. Но основное — это понимание принципов работы с функциями и далеко не шапочное знакомство с объектно-ориентированным программированием и его логикой.
Функции — основные строительные блоки программ. Есть множество нюансов их использования — от хорошего подбора имен до понимания того, когда какую функцию лучше использовать. Всё это приходит с опытом.
Что касается объектно-ориентированного программирования, нужно:
- хорошо разбираться в инстансах и классах;
- не менее хорошо — в наследовании (подклассах);
- знать, как определить класс при помощи метода инициализации на избранном вами языке;
- быть готовым обсудить инкапсуляцию, абстракцию и полиморфизм.
Базы данных (SQL)
Выпускники буткемпов часто слабо знакомы с базами данных. Если это касается и вас, советую начать изучение реляционных баз данных и SQL незамедлительно. Кроме того, попробуйте самостоятельно настроить БД PostgreSQL или MySQL на своем компьютере.
Также имейте в виду, что MongoDB — это не SQL, поэтому далеко не всегда интервьюер, интересуясь опытом работы с базами данных, спрашивает о MongoDB.
Собеседование
Здесь советы будут общими: стоит изучить основные вопросы, которые могут попасться на собеседовании, в интернете. Кроме того, объедините усилия со своими знакомыми и попробуйте проинтервьюировать друг друга.
Нетворкинг
Искусство взаимодействовать с людьми повышает шансы на получение отличного места в компании.
Важным моментом для нетворкинга программиста, как я уже говорил, является его GitHub. Кроме того, у вас должна быть актуальная учетная запись LinkedIn с большим количеством контактов. Я использую LinkedIn как собственное резюме, это раз. Два — при помощи этой социальной сети я ищу нужных мне людей. Ну а если у вас много связей в LinkedIn, вы можете познакомиться с огромным числом специалистов, среди которых будут и потенциальные работодатели.
Интернет — это еще не все. Важно выйти из своей зоны комфорта (насколько бы избитой эта фраза ни была) и встречаться с людьми лицом к лицу. Посещайте встречи, подходите к незнакомцам и представляйтесь, а также общайтесь с интересными вам людьми. Вполне нормально самому инициировать знакомства с теми, кого вы хотите узнать поближе. Ключевой жизненный урок, который я усвоил, заключается в том, что вы не должны стыдиться пригласить кого-то выпить чашечку кофе, пускай и на пару минут.
Вы будете удивлены тем, как часто случайность и доброжелательность открывают важные двери.
И главное, конечно же, — продолжать учиться, совершенствовать свой опыт и знания. Мотивация — то, чего ищут многие работодатели. Видя мотивированного, хотя и начинающего соискателя, опытный руководитель может закрыть глаза на некоторые недостатки в плане профессионализма в угоду энтузиазму и готовности учиться дальше.
Skillbox рекомендует:
- Практический курс «Мобильный разработчик PRO».
- Онлайн-курс «Профессия веб-разработчик».
- Онлайн-курс «Профессия Frontend-разработчик».
Автор: skillbox