Сколько языков знает программист
Всем привет, работаю java разработчиком больше 10 лет. Так как сейчас высок спрос на обучение, есть и предложение - периодически встречаю на авито анкеты репетиторов / менторов по программированию. Заметил довольно много анкет преподов, которые готовы обучать нескольким языкам. Хотел бы в этом посте выразить своё мнение по этому феномену.
В каждой профессии есть свой ограниченный набор инструментов. В разработке это называется технологический стек:
Обычно, работая на проекте, исследованием технологий занимаешься ровно до уровня, который позволяет эффективно закрывать текущие задачи. Ну, может немного выше, если целенаправленно читаешь книгу/доку. Так как на проекте множество других проблем: нечеткие требования, падает инфраструктура, тормозят коллеги и прочее. При отклике на вакансию разработчик старается идти на знакомый стек, т.к. на нем он сможет показать максимальные результаты и зарабатывать больше.
Это приводит к формированию т.н. T-shaped наборов умений, когда разработчик является экспертом в одной-двух технологиях, и немного работал со множеством смежных. Вот примеры типичных стеков:
Проект среднего размера требует множества кастомизаций, которые заставляют выходить за стандартный стек. Например, если вам потребуется кэш, то возможно вы решите подключить Redis. Если нужна очередь сообщений, то придется выбирать между Kafka и RabbitMQ. На проекте может быть несколько БД с разными свойствами под разные задачи.
А вот использование нескольких языков на проекте обычно бывает избыточным. И типичное распределение языков в проекте выглядит как-то так:
Основной язык для бекенда, шаблоны в HTML, немного SQL, пара скриптов на bash/Python, настройки сборщика/докера/деплоя
Иногда приходится дорабатывать проекты других команд, либо разгребать легаси в собственном проекте, и тогда может потребоваться разобраться с другим языком программирования. Мне приходилось править баги в JS коде, переписывать Scala сервис, несколько месяцев разрабатывать на Go. Каждый раз кроме языка приходилось разбираться в сборке проекта и запуске тестов. Это требует затрат внимания, и если нет цели сменить стек, то лучшим выбором становится минимизировать погружение.
Есть отдельные сильные специалисты, которые имеют широкий кругозор и профильное образование. Есть фулстеки, которые работали с 2-3 языками (JS + перешли с PHP на Go). Но у большинства программистов есть какой-то один язык, который он использует на постоянке.
Возвращаясь к теме обучения. Я настороженно отношусь к полиглотам, которые готовы обучать:
трем или более языкам одного стека (C++, C#, Java, PHP, Python)
разным стекам (бекенд + фронтенд + мобайл + data science + unity + ...)
по ставке меньшей чем у разработчика соответствующего уровня
Способность обучать не идет вкупе с профессией, поэтому профессиональные преподы важны. Чтобы эффективно обучать начинающих, достаточно самому написать несколько сотен строк кода, не нужно привлекать опытного специалиста. Но нужно понимать, что скорее всего препод сможет дать только самую базу, а дальше в лучшем случае будет читать учебник на одну главу вперед ваших занятий.
Желаю всем желающим вкатиться в it офферов и интересных проектов!
Лига программистов
1.9K постов11.7K подписчиков
Правила сообщества
- Будьте взаимовежливы, аргументируйте критику
- Приветствуются любые посты по тематике программирования
- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества