Код
#статьи

Программист-полиглот: востребованный профи или эрудит на обочине?

Разбираемся, сколько языков программирования нужно знать крутому специалисту и есть ли смысл в полиглотстве.

OlyaSnow для Skillbox Media

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

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

Дисклеймер: статья выражает мнение автора и не претендует на исчерпывающую оценку рыночной ситуации.

Кто такой программист-полиглот?

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

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

Другой важный момент — определить язык программирования. Мы не будем учитывать языки разметки и спецификаций, а также формальные, декларативные и другие компьютерные языки. Иными словами, знание HTML, XML, CSS или SQL — не в счёт. Также не стоит выделять фреймворки и платформы разработки — всё это прилегающие к языку программирования инструменты, которые кодер обязан знать.

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

Что может дать «айтишное» полиглотство?

Когда вы изучаете несколько языков программирования, невольно раскрываются все их достоинства и недостатки. Например, когда я пытался после Python учить JavaScript, то заметил при работе с Django и Node.js, что фреймворк Python лучше масштабируется. Но при этом Node.js демонстрировал более высокую производительность. Такие сравнения позволяют точнее определить для себя приоритеты в разработке и потенциальные недостатки будущих программ.

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

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

Другой, более спорный, аргумент за — развитие мозга: навыков мышления, концентрации, памяти. Спорный, потому что это же время можно потратить на изучение английского. Это тоже прокачка интеллекта, только более практичная, если нет желания ограничивать себя русскоязычным рынком.

Не последний момент в изучении нескольких языков программирования играют языковые сообщества. Разработчики тех же C# и Java часто отличаются не только опытом, но и образом мышления, взглядами и подходом к делу. Общение с разными людьми прокачивает не только знания в IT, но и гибкие навыки, которые особенно высоко ценятся в крупных компаниях.

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

Объять необъятное: как можно остаться на обочине IT-индустрии, умея в ней всё

Предположим, вы решили стать профессиональным разработчиком на C++, Kotlin, Swift, Python, Java, Ruby, Go, Scala, C# и TypeScript с кучей фреймворков и библиотек. Первый резонный вопрос — зачем? Многие мелкие компании могут не использовать и половину из них, а в больших корпорациях разработка делится на проекты.

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

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

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

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

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

else if JS внезапно превратилось в elif Python. Изображение: Кирилл Молоков для Skillbox Media

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

Требует ли IT-рынок реально знать несколько языков программирования?

Но вернёмся к минимальному порогу. Всё же знать четыре языка звучит реалистичнее, чем 20. Насколько часто IT-компании ищут таких эрудитов? Чтобы ответить на этот вопрос, я изучил несколько сотен вакансий на hh.ru. Большинство позиций с зарплатой от 150 тысяч выглядят примерно вот так:

Скриншот: сайт HeadHunter. Зарплатная вилка этой вакансии — от 150 до 200 тысяч рублей

Человека, который решил попробовать себя в программировании или просто не знаком с C++, такое количество иностранных слов может отпугнуть. Но опытный разработчик на C++ знает, что STL, Boost, MFC — это всего лишь библиотеки, а Qt — фреймворк. То есть в этой вакансии от вас требуется знание всего одного языка программирования — C++. И это, в общем-то, уже верхний уровень российского рынка.

Если вы обучились языку программирования, то быстро освоите работу с фреймворками и библиотеками. Представьте, что вы отлично знаете английский, но вас внезапно попросили добавить региональный акцент и научиться писать короткие посты в Twitter. Да, это потребует определённых усилий, но всё же задача здесь — расширить знания, а не выучить, например, ещё и арабский. Поэтому, если вы начинающий программист и ищете работу, внимательно изучайте требования к кандидатам: возможно, что от работы мечты вас отделяет всего пара часов нагугливания.

В других вакансиях от вас могут потребовать следующее:

Скриншот: сайт HeadHunter. Зарплатная вилка этого предложения — от 150 до 260 тысяч рублей

С HTML и CSS мы разобрались выше. React, Vue.js, Node.js опять-таки инструменты профильного языка представленной вакансии — JavaScript. Обратите внимание, что базовое понимание (не владение!) C++ не обязательно, а лишь будет плюсом. Знать Go тоже не нужно, если вы уже владеете Node.js. То есть обязательных требований здесь едва ли наберётся на два языка.

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

Скриншот: сайт HeadHunter. Один из немногих офферов, где фигурируют три языка (всё-таки требуется отличное знание PHP 7+ и РСУБД). Но и обещанная зарплата — до 500 тысяч рублей :)

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

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


Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия 1С-программист Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована