Я общаюсь с кучей студентов, которые начинают учиться программировать, и неизменно они озабочены тем, какие языки программирования и технологии им следует изучать.
Сейчас, во-первых, я не думаю, что это так уж важно. Вы не ошибетесь в технологиях, потому что выучили 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 будет быстрым процессом обучения.
Синтаксис — это самая легкая часть. Удачи там.