Как научиться программировать и найти свою первую работу в 2024 году

Как бы я устроился на свою первую работу в качестве разработчика-самоучки, если бы начинал всё сначала

Хотите научиться программировать? В этой статье я расскажу, как в 2024 году устроился на работу разработчиком-самоучкой.

Мне платят за написание кода уже почти пять лет. Я учился самостоятельно в течение 8–9 месяцев, прежде чем получил свою первую постоянную работу.

Но это было в 2019 году. С тех пор индустрия сильно изменилась, и я тоже стал гораздо более опытным программистом. Так что же изменилось? И — для тех, кто хочет начать — как лучше всего научиться программировать?

Выбор правильного пути

Список потенциальных языков и технологий, которые можно изучить, может быть огромным. Если у вас есть чёткое представление о том, в какой сфере вы хотели бы работать, это поможет вам выбрать конкретный язык. Например, для работы в сфере анализа данных обычно требуется опыт работы с Python. Если вы интересуетесь играми, основные игровые движки поддерживают C# или C++.

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

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

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

Во-вторых, это отличный способ найти свою нишу: JavaScript используется во фронтенде, бэкенде (с помощью Node, Deno или Bun), на мобильных устройствах (с помощью React Native) и на компьютерах (с помощью Electron). Этот язык открывает множество возможностей. Вам не нужно изучать новый язык, чтобы экспериментировать в этих разных областях, а затем, если захотите, специализироваться в конкретной сфере.

Если вы решите, что вам действительно нравится бэкенд, например, вы можете выбрать более производительный серверный язык, такой как Go или Rust. Но вы можете специализироваться на бэкенде и без этого, поскольку многие компании используют JavaScript на сервере.

Итак, если мне удалось убедить вас в том, что JavaScript — лучшая отправная точка, то возникает следующий вопрос: как его изучать?

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

Технологии

Если ваша цель — как можно скорее получить работу, я рекомендую изучать — в таком порядке — HTML, CSS и JavaScript. Затем — в любом порядке — React, TypeScript, Git и командную строку.

HTML, CSS и JavaScript

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

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

Наконец, когда вы освоите HTML и CSS, вы сможете сосредоточиться на JavaScript. Это будет ваш основной язык программирования, и стоит потратить много времени на его глубокое изучение. Изначально JavaScript, который вы пишете, должен быть направлен на добавление интерактивности в ваши проекты. Но я обнаружил, что решение задач по программированию (например, на Codewars) — отличный способ обрести уверенность в этом языке.

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

Как научиться:

  • Хорошим началом для изучения этих технологий станут курсы, предлагаемые FreeCodeCamp и Codeacademy. Для меня интерактивные курсы, подобные этим, были лучшим способом начать. (Я буду часто упоминать Codeacademy, потому что я учился на ней и считаю, что это отличная отправная точка для многих новых навыков, которые вам понадобятся).
  • Чтобы лучше разобраться в JavaScript, я рекомендую попробовать решить задачи на Codewars. Для решения задач с кодом лучше всего подходит Leetcode — но эти задачи, как правило, сложнее, и я знаю многих разработчиков, которые устроились на работу, не дойдя до этого уровня.
  • На таких сайтах, как YouTube, есть множество отличных видеоуроков. В наши дни я не совсем уверен, какие каналы лучше всего подходят для новичков, но @programmingwithmosh существует уже давно, и там есть хорошие вводные материалы по основам. Кроме того, я не пользовался Udemy, когда учился, но знаю многих людей, которые его рекомендуют.
  • Нет лучшего способа учиться, чем создавать собственные проекты. Как только вы освоите основы, почему бы не создать сайт-портфолио, чтобы продемонстрировать свои новые навыки?

React

После этого я бы изучил фреймворк JavaScript. Есть много хороших вариантов, но — по тем же причинам, что и при выборе самого JavaScript, — я бы порекомендовал React. Сейчас это самый распространённый веб-фреймворк, и многие компании нанимают разработчиков на React.

Как научиться:

  • Лучшее место для изучения React — это его собственная документация. Здесь есть отличное руководство.
  • Как новичку, мне очень понравился курс React для начинающих Уэса Боса (единственный курс, за который я заплатил, когда учился самостоятельно).

Вы можете использовать React в сочетании с обычным CSS, но в индустрии чаще используют библиотеки стилей. Сейчас TailwindCSS, похоже, набирает популярность. На работе мы используем Styled Components. Если вы уже хорошо разбираетесь в CSS, то сможете работать с этими библиотеками, просто прочитав их документацию.

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

Git и командная строка

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

Как научиться:

  • Я бы порекомендовал вернуться в Codeacademy, чтобы освоить эти навыки.
  • Затем попробуйте загрузить созданные вами проекты на платформу контроля версий, например Github, что поможет вам почувствовать эти навыки более осязаемыми!

Машинописный текст

Наконец, TypeScript — так называемое «расширенное» подмножество JavaScript, добавляющее типы, которые особенно полезны при совместной работе над крупными проектами, — стал более или менее общепринятым отраслевым стандартом. Новичкам может быть сложно понять, в чём разница между JavaScript и TypeScript, поэтому я рекомендую начинать изучать TypeScript только после того, как вы освоите обычный JavaScript.

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

Как научиться:

  • Я изучил TypeScript после того, как устроился на свою первую работу, но если вы хотите начать с чего-то, Codeacademy предлагает курс по TypeScript, и вы также можете решать головоломки Codewars с помощью TypeScript.

Что же дальше?

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

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

Как разработчику-самоучке, мне потребовалось 8–9 месяцев, прежде чем я почувствовал себя готовым подавать заявки на работу. Возможно, я мог бы быть полезен компании и раньше. Если вам кажется, что 8–9 месяцев — это быстро, то я был в привилегированном положении и мог тратить на обучение по несколько часов в день, а люди нередко тратят 1–2 года на обучение, прежде чем начать подавать заявки на работу. Вам нужно будет вписать обучение в свой распорядок дня.

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

А что насчёт после того, как вы устроитесь на свою первую работу? Есть много вариантов развития. Я многому научился, постепенно углубляясь в технологический стек. Как только вы освоитесь с фронтендом, изучение серверных технологий или «бэкенда» станет отличным следующим шагом. Node.js — самый распространённый инструмент JavaScript на бэкенде, часто используемый в паре с Express. Затем идёт уровень базы данных: здесь будет очень полезно изучить SQL; MongoDB — хорошая и довольно простая для новичков альтернатива. Затем идут сценарии разработчиков, инструменты и пакеты. Затем инфраструктура. Каждый уровень обретает смысл, когда вы понимаете, что находится над ним.

На этом я пожелаю вам удачи в вашем учебном путешествии!