Я “знаю” кучу языков программирования. Начал с синей книжки по С которую отец мне дал читать когда у меня еще компьютера не было, потом в школе Basic, Pascal и немного JS, потом в университете Pascal, asm х86 и микроконтролерный, Java, Ada, потом на работе Java, SQL, Bash, потом на другой работе Python, JS, Bash, потом на третьей работе Objective C, PHP, Ruby, JS, SQL. Сейчас 60/20/10/10 это Ruby/JS/Java/Python (SQL не считаем).

Есть мнение что “jack of all trades master of none” и честно говоря оно имеет под собой некоторые основания. Когда постоянно переключаешься между языками, фреймворками и платформами то начинаешь забывать где kek.toString(), где kek.to_s, где str(kek). Где arr.length, где arr.size, где len(arr). Где какие сокращения для лямбд, fat arrow, обычная стрелка, вообще без стрелки.

За какими-то базовыми вещами нужно постоянно писать в гугл типа ruby merge arrays. Где-то можно arr1 + arr2, где-то Arrays.merge(arr1, arr2) где-то еще непонятно что.

Различия в базовых API языков здорово напрягают. Причем они часто мелкие и постоянно путаешься во всех этих вызовах и тратишь время на чтение документации. Забываю литералы для хешей и списков, путаюсь в arr << el и arr.push(el) короче полный бардак еще на уровне молотков и отверток, не то что станков.

Более-менее хорошо я уверен только в Java, потому что кодил на ней больше 10 лет и все простые вещи уже прочно засели в мозг чтобы среди ночи можно было ответить на вопрос “перечислите методы класса Object”. Со всем остальным постоянно путаюсь и лезу в документацию. Через некоторое время уже что-то запоминается, но потом опять происходит переключение контекстов и снова забываешь как делать for: for i in arr или for i of arr или еще как-то и чем они отличаются?

И это я еще не зацепил конфигурацию, JSON, XML, YAML, HCL, но тут благо различия посерьезнее + IDE помогает.

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

Потому что без to_s ощущаешь себя как без рук, а это не очень приятно.

С другой стороны, может быть я пока что слишком мало покодил на отличных от Java языках и через 10 лет буду точно так же помнить все методы Iterable в Ruby.