Для начала вам ничего этого не потребуется!

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

На самом деле, хотя это может показаться интересным, попасть туда не так-то просто.

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

Следующий список вакансий был создан на основе нескольких образцов, взятых из Интернета в поисках разработчиков-младших:

  • Степень бакалавра в смежных областях и минимум один год опыта работы на аналогичных должностях.
  • Знание разработки безопасного программного обеспечения.
  • Промежуточные навыки, связанные с проектированием, разработкой, модификацией и развертыванием программного обеспечения, включая объектно-ориентированное программирование.
  • Знание других областей, связанных с ИТ.
  • Продемонстрированные навыки работы с репозиторием программного обеспечения.
  • Продемонстрированы эффективные коммуникативные и межличностные навыки.
  • Целеустремлен и работает самостоятельно.
  • Продемонстрированные навыки решения проблем.
  • Промежуточные навыки в C #, ASP.NET MVC, SQL Server, TypeScript и React.js.
  • Опыт использования Git и Github.

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

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

  • Я вообще пытаюсь устроиться на работу? У меня только три из десяти требуемых навыков.
  • Мне нужно прекратить изучать X и перейти на Y сейчас? Потому что на этой неделе все просят Y разработчиков.
  • Как я могу получить опыт, если ищу свою первую работу?

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

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

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

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

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

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

Что вам не нужно, чтобы стать успешным разработчиком программного обеспечения

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

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

Степень бакалавра компьютерных наук или смежная степень

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

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

Нужны ли были мне первые два года обучения в университете? Да, я сделал это, но главным образом потому, что они формализовали многие базовые концепции программирования, которые я в некоторой степени выяснил самостоятельно, изучая программирование для развлечения. В то время не было учебных курсов для начинающих, мой доступ в Интернет был ограничен моим модемом на 2400 бод, а учебные ресурсы были в основном хакерскими электронными журналами (которые были файлами TXT с добавленными изображениями ASCII).

Сейчас ситуация совершенно иная, и каждый, кто хочет начать учиться программировать, имеет в своем распоряжении мировые знания. Это не преувеличение, есть бесплатные онлайн-ресурсы, такие как YouTube или freeCodeCamp.org, в которых есть все, что вам нужно, чтобы начать работу с нуля. Хотя это правда, что не каждый может учиться, усваивая знания, у вас также есть другие варианты: платные курсы в таких местах, как Udemy или Skillshare, которые стоят намного меньше, чем университетская степень и дают вам доступ к классам, сеансам вопросов и ответов с учителями и контактам другие студенты сталкиваются с теми же проблемами, что и вы.

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

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

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

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

Знание жизненного цикла разработки программного обеспечения

Типичный программный проект должен пройти жизненный цикл разработки:

  1. Сначала вам нужно провести анализ требований, чтобы точно понять, что вам нужно делать.
  2. Затем переходите к планированию проекта, чтобы понять, когда это делать и сколько времени вам потребуется.
  3. На третьем месте - его архитектура. Как только вы узнаете «что» и «когда», вы должны начать думать о том, «как», и архитектура дает вам чертежи для этого.
  4. Только после этого можно начинать писать код. Это тот раздел, на котором обычно сосредотачиваются большинство разработчиков, но, как видите, это не первое, что вы обычно делаете.
  5. Следующим шагом будет тестирование вашего кода и вашего продукта, прежде чем переходить к следующему, необходимо понять, дал ли предыдущий шаг правильный результат.
  6. Развертывание вашего продукта. Предоставление пользователям возможности начать тестирование и дать вам обратную связь.

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

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

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

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

Для понимания программирования требуется степень по математике, физике или аналогичная степень.

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

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

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

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

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

Роль специалиста по данным - не исключение

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

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

Сертификаты

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

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

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

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

Желание работать в быстро меняющейся среде

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

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

Это, вероятно, звучит пугающе, особенно для тех, кто еще даже не работает, но я могу подтвердить, что вы можете быть разработчиком программного обеспечения и по-прежнему ненавидеть «динамичные» среды. Не всем нравится менять технологии и даже проекты. Тебе тоже не обязательно.

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

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

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

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

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

Опыт

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

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

Самое интересное: если вы подаете заявление о приеме на работу и беспокоитесь об опыте, вы можете продемонстрировать другие типы опыта:

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

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

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

Вот и все. Если вы хотите узнать больше об этой книге, посмотрите ее на платформе LiveBook Мэннинга здесь.

Из Навыки разработчика программного обеспечения Фернандо Доглио

Получите скидку 35% на Навыки разработчика программного обеспечения, введя fccdoglio в поле кода скидки при оформлении заказа на manning.com.

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