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

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

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

Это ошибка.

Общее количество заданий не имеет значения

Согласно последнему опросу Stack Overflow, JavaScript — самый популярный язык программирования в мире, как для людей, изучающих программирование, так и для профессиональных разработчиков.

Я также сделал быстрый поиск в LinkedIn Jobs для вакансий JavaScript и Golang. Вот результаты:

  • JavaScript: 477 512 открытых позиций в США.
  • Golang: 61 673 открытых позиции в США

Если вы посмотрите на эти цифры и подумаете: «Мне следует изучить JavaScript, потому что вакансий больше», вы не одиноки, но вы ошибаетесь.

Неважно, сколько всего вакансий, потому что вам нужно найти толькоодну.

- me

Чтобы погрузиться глубже, я зашел в Google Trends и просмотрел количество людей, которые искали термины Изучение JavaScript и Изучение Golang за последние 12 месяцев. Вот такое соотношение:

JavaScript: 73 Golang: 6

73/6 – это соотношение количества людей, которые ищут "Изучение JavaScript", к числу людей, которые ищут "Изучение Golang". Google Trends, как и Sith, не оперирует абсолютными значениями.

Итак, давайте сделаем еще немного математики:

Задания JavaScript в задания Golang: 477,512 / 61,673 = 7.7

7,7 заданий JavaScript на каждое задание Golang

Изучающих JavaScript для изучающих Golang: 73 / 7 = 10.4

10,4 изучающих JavaScript на каждого изучающего Golang

Далее «коэффициент конкуренции»: 10.4 / 7.7 = 1.4

Основываясь на этих цифрах, я полагаю, что ваша конкуренция за вакансии на JavaScript примерно в 1,4 раза выше, чем ваша конкуренция за вакансии в Golang. Согласно этому абсолютно научному и безошибочному анализу, кажется, что Go может быть лучшим выбором, если вы пытаетесь свести к минимуму конкуренцию за рабочие места.

Могу ли я доверять этим цифрам?

Я не знаю, наверное, нет. Моя цель здесь не в том, чтобы убедить вас изучить Go, Python, Rust, JavaScript или что-то еще в этом отношении. Я просто хочу, чтобы вы подумали о рынке труда немного по-другому.

В последнее время это стало для меня главным из-за анекдота, произошедшего пару лет назад. Я работал менеджером по найму, где искал разработчиков Go среднего уровня. Мой коллега нанимал разработчиков JavaScript среднего уровня в ту же компанию. Когда я открывал новую вакансию, я получал 10–20 кандидатов в течение 2 недель. Он получит более 100 кандидатов за то же время. Мне было жаль кандидатов на JavaScript.

Имеет ли значение общее количество рабочих мест?

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

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

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

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

Пожалуйста, не беспокойтесь об этом слишком много

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

Если вы хотите научиться программировать, углубляясь в основы, вы всегда сможете изучать новые технологии по ходу дела. Фундаментальные концепции, такие как решение проблем, императивное программирование, структуры данных, алгоритмы, архитектура, чистый код, ввод-вывод, работа в сети, HTTP, REST, базы данных и кэширование, универсальны и не зависят от языка. Если вы знаете, как создать REST API в Go, создание его в Express или Django будет быстрым процессом обучения.

Синтаксис — это самая легкая часть. Удачи там.