Перевели для вас статью Чака Грума, программиста с 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 рекомендует:

Комментарии (1)


  1. vism
    29.01.2019 20:04
    +1

    Хорошие советы, для США и Канады.
    Нормальные советы, для Европы.
    Практически бесполезная и было на хабре много более хороших статей, для России и СНГ.

    Мой жизненный(разработческий и руководческий) опыт и анализ рынка говорит о том, что в России все иначе.
    1. Github? Ну только если начинающий программсит сам покажет его. Ниразу нигде не видел, чтоб его реально спрашивали, именно у новичков.
    Да и что может показать…
    Намного больше покажет код тестовых заданий и разбор полетов по нему (для новичка)

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

    3. LinkedIn? в СНГ? Хороший перевод, но зачем он для нашей страны. Спецу может он и нужен. Новичку — нет. Через HH и мойкруг намного больше выхлопа.

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

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

    Резюме.
    Статья ради статьи. Видимо план стоит по статьям.
    Или просто статья ниочем — хоть как-то канал продаж использовать. Новичек всеравно типо не разберется, кучу ненужного прочитает и закажет курс.

    Не надо так…