В течение последних 12 лет я имел удовольствие (иногда мучительно) работать с несколькими языками программирования, меняя их каждые пару лет. До сих пор этими языками были Delphi, C, C ++, Python, Java, немного JavaScript и TypeScript, Groovy, а в последнее время также немного PHP.

Я знаю, я знаю - те из вас, кто меня знает, возможно, помнят, что я никогда не собирался писать на PHP, но, как отец Скотта Джурека, обычно говорил: Иногда вы просто делаете что-то. Итак, я пишу на PHP.

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

Я считаю, что знание нескольких языков дает больше свободы. Вы не ограничены определенным набором компаний или отрасли. Если вы эксперт по Java, у вас больше шансов работать в более крупной финансовой компании, PHP / Python / Ruby - стартапы, C и C ++ - встроенные системы. Если вы знаете их все, нет предела.

Кстати, не зря я написал C и C ++ вместо C / C ++. Довольно часто можно увидеть людей, использующих эти два языка как синонимы, но, на мой взгляд, это очень неправильно. Да, синтаксис довольно похож, но на этом сходство заканчивается. У меня совершенно другое мышление, когда я пишу на C, чем на C ++. Эти языки были разработаны для работы с разными парадигмами. C - это процедурный язык, а C ++ - действительно хороший язык ООП. И да, вы можете писать, используя процедурный подход на C ++, и некоторые даже утверждают, что вы можете писать приложения ООП на C. Ну, вы можете, но вы также можете попробовать использовать скальпель вместо топора и наоборот - не означает тебе следует это сделать.

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

Если вы долгое время работаете в ИТ, со временем вам придется менять свой стек технологий. И если все, что вы видели за 20 лет, - это один язык, что ж - удачи. Ваш мозг может быть настолько глубоко погружен в мельчайшие детали этой области, что вы больше не видите большую картину. Это нормально, хотя эта технология является модной, но когда она станет слишком старой, чтобы ее мог использовать кто-либо, у вас не будет возможности легко переключиться на что-то новое. Представьте, что 50-летний разработчик ASM с 30-летним опытом работы на этом едином языке присоединяется к проекту Java с его шаблонами проектирования, автоматическим развертыванием, облаком и всевозможными разновидностями автоматического тестирования (и это только бэкэнд).

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