Вы научились программировать. Что теперь?

Допустим, вы запрыгнули на тренинг «Всем нужно научиться программировать». И вам так нравится писать код, что вы теперь представляете себе это как карьеру. Что вам нужно знать, чтобы получить свою первую работу в этой области? Возможно ли это сделать без формального обучения? Я был там. За прошедшие годы я также нанял много младших разработчиков, поэтому постараюсь помочь вам пройти этот путь с помощью нескольких советов и приемов.

Компании, в которых вы хотите работать

Давайте начнем с предостережения. Есть много компаний, которые законно ищут начинающих программистов. Они требуют проделанной работы (и это основа для найма кого-то!), но попутно они также помогут вам расти в вашей работе. Это те, над которыми вы хотите работать. С другой стороны, существует множество компаний, рекламирующих должности младшего специалиста, и когда вы читаете описание должности, вы обнаруживаете такую ​​строку: Требуется 5-летний опыт работы. Легко чувствовать, что у вас нет никаких шансов, потому что давайте будем откровенны: подавляющее большинство списков вакансий похожи на это. Но не расстраивайтесь. Когда у вас есть около 1500 дней профессионального опыта программирования, вы больше не младший уровень. В любом случае эти компании не ищут программистов начального уровня, так что не расстраивайтесь по этому поводу. Они просто пытаются платить младшую зарплату опытному разработчику. Есть даже сабреддит, посвященный подобным объявлениям о вакансиях. Иногда читаю. Это меня смешит.

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

И вообще, кто такой младший разработчик?

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

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

Что тебе нужно знать

Этот список основан на моем собственном опыте. Оно ни в коем случае не является всеобъемлющим, так как разные отрасли требуют разных наборов навыков, но я считаю, что если вам комфортно с этими пунктами, нет причин, по которым вы не получили бы работу.

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

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

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

Это общая теория, но она связана с моей следующей мыслью: языками.

Знайте хотя бы один язык
Вы ведь умеете программировать? Значит, вы знаете хотя бы один язык. И если вы знаете более одного, вам, вероятно, будет удобнее с одним из них. Мнения по этому поводу расходятся, но я бы сосредоточил свое исследование на объявлениях о вакансиях, в которых упоминается этот язык. Вам нужно будет продемонстрировать, что вы не только свободно справляетесь с задачами, упомянутыми в предыдущем пункте, но также знаете, как ориентироваться в документации для этого. В случае языков, которые быстро развиваются, вы также должны будете знать, как работают предыдущие версии языка. Я сказал ранее, что работа младшего программиста связана с исправлением множества ошибок в устаревшем коде. Не у всех есть шанс работать в стартапе Кремниевой долины над новым проектом. Собственно, это скорее исключение, чем норма.

В некоторых областях, одной из которых является веб-разработка, вам будет предложено знать хотя бы один фреймворк. Будь то React, Rails, Angular, Flask, ASP.NET или любой другой популярный продукт, вам нужно будет продемонстрировать, что вы можете хорошо владеть фреймворком, даже если текущая работа этого не требует. Это показывает, что вы можете научиться работать с внешним пакетом.

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

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

Овладейте жаргоном
Скорее всего, вы не будете работать в одиночестве, занимаясь своими делами. Как младший разработчик вы будете частью команды и будете посещать (иногда слишком много!) Собраний. Вам нужно будет уметь общаться со своей командой, а это означает знание словарного запаса. Скажем, аргументы, переданные функции XYZ, а не то, что нужно этой вещи XYZ.

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

Сотрудничество - ключ к успеху
Как отголосок предыдущего пункта, вам также необходимо знать, как сотрудничать с существующей базой кода. Это означает определенное овладение инструментами совместной работы. Например, убедитесь, что вы знаете хотя бы одну систему управления версиями. Умение работать с Git и GitHub - беспроигрышный вариант. Вы можете легко продемонстрировать, что обладаете этим навыком, показывая свое портфолио (подробнее об этом позже). Даже небольшое участие в проекте с открытым исходным кодом производит большое впечатление!

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

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

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

Показывая, что вы можете это сделать

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

  • Имейте портфолио. это особенно важно, если вы - самоучка, поскольку у вас нет какой-либо ученой степени, которая могла бы успокоить сознание рекрутера. Приходите с несколькими личными проектами, над которыми вы работали. Объясните их и почему вы приняли определенные технические решения. Бонус: ваше портфолио доступно на GitHub, а ваш код полностью документирован. Дополнительный бонус: ваше портфолио включает ваше участие в проекте с открытым исходным кодом, и вы можете продемонстрировать, что можете сотрудничать с другими разработчиками.
  • Будьте готовы: снова тривиальный момент, который так часто упускается из виду. Приходите на собеседование с диаграммами, скриншотами ваших приложений, технической архитектурой вашего проекта (ов). Это служит для демонстрации того, что вы можете думать о коде, но также и для объяснения причин, лежащих в основе этого. И, конечно же, это заставляет вас выглядеть заинтересованным, потому что вы нашли время, чтобы что-то подготовить.

Заключение

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

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