¿Aprender demasiados lenguajes de programación es contraproducente?

La programación como tal se puede definir como “Piense en una solución e impleméntela en cualquiera de los idiomas”. Entonces, al aprender más idiomas, solo estamos implementando la misma solución anterior en una sintaxis diferente. Pero lo que realmente importa es, ¿cómo me ayuda este nuevo lenguaje a escribir código de una mejor manera?

¿Está reduciendo el número de líneas y haciéndome más productivo? (Transición de Java / C ++ a Python / Ruby)

¿Me está enseñando algo nuevo que no sabía antes? (Lenguajes funcionales como clojure, scala, etc.)

La diferencia puede no ser enorme cuando comparamos Python y Ruby. Por lo tanto, es algo contraproducente cuando aprende idiomas que son muy similares y varían en sintaxis y algunos otros aspectos. Este artículo de Swaroop CH (autor de “A Byte of Python”) – http://www.swaroopch.com/blog/le… habla sobre cómo aprender Clojure ha mejorado su pensamiento para escribir más código modular.

Imaginemos que solo sé ‘C’. si empiezo a aprender Java, definitivamente no es contraproducente, porque Java me está enseñando inherentemente los conceptos OOP necesarios. Si mi próximo idioma de elección es Python, ¿estoy siendo contraproducente? Definitivamente no, Python es conocido por hacer las cosas realmente rápido. Entonces, si está siendo contraproducente al aprender nuevos idiomas o no, depende completamente del idioma que elija a continuación.

Para responder a su pregunta específica sobre el aprendizaje de proyectos de Ruby para Web. Personalmente, estoy muy contento con lo que Python, uso Django ampliamente para todos mis proyectos. Nunca me he encontrado con una situación en la que dije “Ojalá usara Ruby / Rails para este proyecto”. Python / Django es muy maduro para el desarrollo web. Tenemos servicios como Instagram, Pinterest, Disqus haciendo un trabajo increíble (excelentes características + tráfico loco) con Django. Y también hay servicios de PaaS como Heroku que ofrecen Python. Así que comencé con Clojure, es un paradigma completamente nuevo y aborda problemas como la concurrencia que serán importantes en los próximos días.

Entonces, antes de comenzar a aprender un idioma, pregúntese, ¿es algo completamente diferente o es una ligera variante de algo que ya sé?

Creo que aprender varios idiomas es como aprender varios idiomas hablados: te ayuda a entender cada idioma a un nivel más profundo una vez que tienes más puntos de comparación. Por ejemplo, comprender más idiomas que escriben o administran la memoria de manera diferente le enseñará cómo aprovechar mejor los idiomas actuales que ya conoce.

Pero claramente, hay un punto de rendimientos decrecientes cuando más idiomas se vuelven más desordenados, y la confusión de múltiples y similares estructuras de datos o llamadas API supera los beneficios de conocer un idioma más.

Dicho esto, nunca he sido un súper codificador, y su millaje puede variar.

Estoy de acuerdo con Ben Zhao en que aprender nuevos idiomas debe ser abrir tu mente y ayudarte a comprenderlos más profundamente. Sin embargo, dada esa opinión, funciona mejor ser selectivo con sus idiomas. Elegir un nuevo idioma para aprender que sea similar al que ya conoces hará mucho menos para ampliar tu comprensión que elegir un idioma que sea muy diferente. Usted menciona Python, Ruby, C ++ y Lisp en su declaración. Solo uno de esos cuatro está estáticamente escrito. Ir a algo de la familia ML (SML, O’Caml, Haskell, Scala) sería una buena adición a su lista con el fin de obtener una comprensión más amplia de la codificación.

Sin embargo, su pregunta va más allá de esto, ya que también está considerando las implicaciones de conocer un montón de idiomas en lugar de dominar uno. Esta es una pregunta que he pensado un poco, y personalmente, no soy fanático de los consejos para “usar siempre la mejor herramienta”, especialmente en proyectos más pequeños. Incluso si el lenguaje X es más adecuado para una tarea en particular, si no conoce bien a X, es probable que escriba un código pobre en él. Es posible que conozca las reglas, pero no conoce las expresiones idiomáticas o cómo usarlas realmente bien. Eso viene con tiempo y profundidad de conocimiento. También creo que es casi imposible mantener un alto nivel de habilidad en mucho más de un idioma. Hay dos razones para eso. Primero, las habilidades se oxidan y, a menos que esté practicando un idioma, su habilidad con él disminuirá naturalmente. Más importante aún, los idiomas evolucionan, al menos los que están en uso activo. Cuando eso sucede, las mejores prácticas cambian. Si dominaste C ++ hace cinco años, pero no te has mantenido al día, entonces el código que escribes hoy será menos que ideal ya que C ++ 11 alteró los modismos del lenguaje. Lo mismo es cierto para la mayoría de los otros idiomas en uso regular. A menos que dedique toda su vida a ello, tendrá dificultades para mantenerse completamente actualizado en más de 3 idiomas que están evolucionando. (Tengo razones para querer estar al día en Scala, C ++, Java y JavaScript, y siento que estoy haciendo bien estar en la cima de uno y hacer un trabajo decente con los otros tres. Todos mis otros idiomas están simplemente oxidados ahora mismo.)

Entonces obtienes un nuevo proyecto y sabes que el lenguaje X es probablemente la herramienta ideal para él, pero no conoces bien a X. Sabes que Y no es el lenguaje ideal, pero eres realmente fuerte en Y y sabes que puedes escribir código sólido e idiomático en Y. A menos que Y sea una elección realmente pobre para la tarea, diría que probablemente eres mejor fuera de hacer el proyecto en Y. Después de todo, si lo hace en X, es probable que use las estructuras idiomáticas de Y y simplemente escriba un código realmente pobre para el lenguaje X.

En conclusión, aprender nuevos idiomas es beneficioso, especialmente si elige un idioma diferente y amplía su perspectiva. También puede encontrar que el nuevo idioma es tan bueno que desea trabajar duro en él y convertirlo en uno de sus principales idiomas. Sin embargo, no estoy de acuerdo con la idea de que debe hacer algo en un idioma que no conoce bien solo porque parece ser la mejor herramienta. La última advertencia que agregaré es que si se trata de un gran proyecto, tomará suficiente tiempo para que domine la nueva herramienta, entonces usar la herramienta correcta es más importante. Solo tenga en cuenta que es probable que tenga que regresar y refactorizar mucho de lo que hace al principio antes de descubrir cómo funciona realmente ese idioma.

El aprendizaje nunca es contraproducente. Como dice anteriormente, aprender nuevos idiomas (código o de otro tipo) solo sirve para abrir su mente e incluso puede aumentar su comprensión de un idioma anterior a medida que comienza a notar patrones y estructuras comunes. Es cómo atacas aprender algo y cuál es tu motivación lo que puede dificultar la experiencia general.

Debe tener una razón para aprender cualquier idioma que haya elegido, ya sea para un trabajo en particular, para aprovechar un repositorio en el que se le ha encomendado trabajar, o simplemente porque está realmente interesado en ese idioma y lo que tiene que hacer. oferta. Debe tener un objetivo notable para navegar por documentos y tutoriales. Si está motivado para aprender, nunca habrá un momento en que su aprendizaje entre un idioma y otro. De hecho, ser capaz de asumir múltiples idiomas es una gran parte de lo que significa ser un programador. No solo se le pedirá que use idiomas dispares en el trabajo, sino que estará más preparado para seguir aprendiendo más idiomas a medida que se desarrollen nuevas tecnologías. El mundo de la codificación siempre está cambiando. Parte de su responsabilidad como desarrollador es comprometerse a aprender siempre para que pueda mantenerse al día con esos cambios.

Recientemente me presionaron para aprender Python en mi trabajo actual, ya que gran parte del trabajo que hacemos aquí es en Python. Comencé mi educación en codificación con Ruby, y estaba nervioso de que el conocimiento de un nuevo idioma pudiera “sobrescribir” al otro. Aunque a veces me tropiezo entre declaraciones de venta e impresión, también entiendo los idiomas en un nivel superior porque he trabajado con ambos. Lecciones generales sobre la forma en que se forman estos idiomas (y por qué) salen de la carpintería sin mucho esfuerzo.

En general, aprender un idioma no tiene que ser desalentador si comprende su motivación y objetivos. ¿Qué quiere decir alguien cuando te piden que aprendas un idioma? ¿Quieren que puedas entender el código de otra persona? ¿Quieren que puedas escribir con fluidez? ¿Quieren que entiendas todas y cada una de las herramientas involucradas en el mundo de ese idioma? El término ecosistema es excelente. Cada idioma tiene su propio ecosistema, y ​​requieren tiempo y experiencia para poder comprenderlo. Sin embargo, a medida que comience a aprender el mundo de un nuevo idioma, también encontrará patrones allí. Cada idioma necesita una forma de resolver los problemas comunes que enfrentan los codificadores. Estas herramientas pueden parecer diferentes, pero al final del día, están resolviendo los mismos problemas, probablemente de manera similar. Si está estancado en qué idiomas tomar, Avi Flombaum de la Escuela Flatiron tiene algunas palabras para usted. Realmente profundiza en esta pieza para delinear qué idiomas son excelentes para ciertos tipos de trabajo, al tiempo que señala que se necesita amor y motivación para aprender realmente algo nuevo.

No me preocuparía aprender demasiado. ¿La única vez que deberías preocuparte por aprender? Cuando no sabes por qué te estás tomando el tiempo para hacerlo.

Esta es una pregunta difícil de responder definitivamente. Ciertamente es posible que aprender demasiados idiomas pueda ser contraproducente. Por ejemplo, estoy seguro de que has escuchado el término “Jack of All Trades, Master of None” ¿verdad? Creo que esto también podría aplicarse a la programación. Intentar mantenerse al día con los idiomas de moda que están surgiendo podría dejarlo en un lugar de ser solo eso: un maestro de ninguno. El hecho es que el mundo de la tecnología se mueve rápido. Nosotros, como personas que trabajamos en esa industria, necesitamos tomar decisiones sobre si saltar o no en ciertos barcos al pasar.

Especialmente a medida que avanzas en tu carrera, tienes que preguntarte: “¿Cómo me beneficiará esto en mi carrera?” La respuesta, muchas veces, probablemente será que no te beneficiará lo suficiente como para dedicar un mucho tiempo para eso.

Usted menciona la analogía sobre “la herramienta adecuada para el trabajo”. Si bien esta es una gran analogía, lo que debe entender sobre las herramientas es que, si bien generalmente hay muchas herramientas en la caja de herramientas, hay algunas que se usan MUCHO más que otras: martillo, destornillador, alicates. Se podría hacer la misma analogía para su conocimiento de los lenguajes de programación. Es posible que encuentre y agarre su Java y Python para la gran mayoría de las tareas. Es genial tener Ruby allí si tienes la oportunidad de usarlo, pero la cantidad de vacantes que requieren Ruby es mucho menor que la de aquellos que buscan Java. Con los salarios de los programadores Java con una tendencia de alrededor de $ 125k / año , su tiempo puede ser mejor empleado para perfeccionar sus habilidades allí.

Salarios de Java en San Francisco, CA

Aprender nuevos y diferentes lenguajes de programación puede ser una gran cosa. Nunca debes dejar de aprender en tu carrera como programador. Sin embargo, tenemos que ser inteligentes sobre a qué dedicamos nuestro tiempo.

Demasiado de algo es malo. Por la definición de “también”.

Dicho esto, a menos que esté escribiendo una columna semanal sobre lenguajes de programación que pocos han escuchado, obviamente hay un límite. No está claro por qué aprenderías SNOBOL (genial como era en su tiempo) a menos que estuvieras escribiendo algo sobre la historia de los lenguajes de programación. Algol 68? También solo de interés histórico. ¿Los lenguajes “esotéricos”? Solo si participa en competencias de codificación ofuscadas es su idea de diversión. ¿Ese nuevo idioma que escuchaste la semana pasada? Tal vez deberías ver si puede pasar la prueba del tiempo.

La barrera de entrada es baja en el espacio lingüístico. Hay uno nuevo cada semana, estoy seguro. ¿Pero los obstáculos para la aceptación del idioma, incluso en nichos? Continúan prácticamente indefinidamente para la mayoría de los idiomas. Mira a Erlang. Genial para lo que hace. He estado por un tiempo. Pero incluso uno de sus diseñadores se toma en serio la pregunta: ¿cuánto tiempo más?

Aprenda lo que necesita para aprender profesionalmente. Lo que puede significar ninguno, si no eres un profesional o estás retirado. Estoy tratando de salir de la jubilación como programador, pero cuando me resigné, aprendí Erlang, y me alegro de haberlo hecho, aunque probablemente nunca me paguen por escribir aplicaciones OTP. Como señala este autor de la pregunta, en realidad se trata de las API. Esos son enormes, y la vida es corta.

Aprenda un nuevo idioma para explorar profesionalmente, si un idioma realmente parece prometedor pero aún no está en horario estelar. (Scala podría ser una buena apuesta). Cualquiera de estos se verá bien en tu currículum, así que elige el que más te guste.

Y si usted es sinceramente curioso y ambicioso, y de alguna manera tiene tiempo, intente aprender el lenguaje más asombrosamente productivo (si es asombroso) que pueda encontrar, como un ejercicio cerebral. Programación lógica equitativa, programación lógica de restricción: puede hacer cosas asombrosas con estos. Además, parece que alguien escribió un compilador de optimización C probado y correcto en Coq. ¿Qué demonios es Coq? Algo increíble, estoy seguro. Como, “la prueba es el programa”. O algo. Exactamente qué, no puedo decirte. Eso tendrá que esperar hasta que esté más seguro de que estoy retirado.

No creo que sea contraproducente aprender muchos idiomas, aunque diré que el beneficio de aprender diferentes estilos de idiomas sería preferible a un grupo que sea teóricamente similar.

Ruby y Python o Java y C ++ son tan similares que aprender las diferencias entre ellos no será particularmente revelador.

Más perspicaz sería comparar funcional, imperativo, orientado a objetos, compilado, declarativo, lógico, etc.

No; no es contraproducente, pero es posible que tenga que aprender 20 o 30 antes de verlo.

Después de un tiempo, desarrollas una idea del espacio del lenguaje multidimensional. Eso hace que sea casi trivial aprender un nuevo idioma. Simplemente lo encuentras en ese espacio de fase.

Todavía tiene que aprender la sintaxis, por supuesto, pero el poder y las trampas son evidentes de inmediato.

Hay tres ventajas en aprender muchos idiomas:
– eres versátil y adaptable
– puedes elegir cuál te queda mejor y hacer una carrera profesional
– su forma de pensar se amplía y puede usar patrones o metodologías que ha encontrado en el camino para resolver problemas

Sin embargo, creo que el único inconveniente es más que suficiente para hacer que ME sonsider aprenda solo un idioma (expresado en 3 formas diferentes):
– No he ido a la universidad. He sido desarrollador de Android / Java durante un año y tengo más experiencia en mi campo que los estudiantes universitarios con 4 años de educación, que han aprendido 10 idiomas, 4 meses cada uno, rascando la superficie para cada uno.
– En 5 años, aprendiendo y practicando un solo idioma, puede profundizar en ese idioma y convertirse en un experto muy hábil, respetado y bien pagado. Si tiene 5 años, aprendiendo 5 idiomas, será un 20% más bueno en cada uno que una persona que pasó los últimos 5 años aprendiendo un solo idioma dentro y fuera. El será un especialista.
– Enfoque, enfoque, enfoque. Enfocado por láser, foco concentrado. Si tiene una enfermedad cardíaca, ¿preferiría ir a un cardiólogo que ha estado curando corazones todos los días durante los últimos 5 años, o a un médico general que le haya diagnosticado de vez en cuando durante los últimos 5 años?

Ahora, si estamos hablando de una carrera de 15-30 años, es obvio que tendrá mucho tiempo para convertirse en un experto en algunos idiomas, como uno de mis “maestros” Robert C Martin: ha sido desarrollador durante más de 40 años, ha publicado libros para un puñado de idiomas y realmente sabe de lo que está hablando.

La mayoría de los lenguajes se pueden conectar a un reino principal, por ejemplo, PHP / Ruby / Python para aplicaciones web, Flash / HTML5 para front-end, Java / Objective-C para dispositivos móviles, e incluso podría decir sql / nosql para bases de datos.

La mayoría de los problemas del mundo real se pueden dividir en sistemas que operan en cualquiera de estos reinos.

Sería contraproducente si estás aprendiendo idiomas que pertenecen a un solo reino.

En cambio, sería más productivo de su tiempo entender bien un idioma de un reino y comprender los componentes con los que funciona: memcache, el servidor web, mysql / postgres / mongo, etc.

Porque más allá de un alcance, tamaño o escala en particular, encontrará que algunos problemas ya no se limitarán al cuerpo de código que ha escrito. En cambio, tendrá que depender en gran medida de estos otros componentes con los que trabaja, por ejemplo, para resolver problemas de rendimiento, implementar nuevos requisitos o incluso depurar problemas que simplemente no se pueden atribuir a su código.

Entonces, diría que es contraproducente aprender más de un idioma perteneciente al mismo reino.

Aprender varios idiomas es algo difícil de lograr.

Aprender un nuevo idioma tiene las siguientes tareas:
——————————————————————–
Tareas Tiempo consumido
—————————————————————————————————————–
Sintaxis de comprensión 5% (dentro de 7 días)
Configuración del entorno 15% (Language Impl, Bibliotecas, etc.)
Creación de flujo de trabajo básico 25% (búsqueda en google, SO, etc.)
Selección del marco adecuado 45% (instalación de múltiples marcos,
leyendo X vs Y en Internet,
Problemas de producción,
Problemas de versión, C Interfaz externa
, Bibliotecas de bases de datos, etc.)
Obteniendo experiencia 10% (Toma varios años).
(el último 10% requiere el 90% del tiempo)
—————————————————————————————————————–

El total sería de 2 años. para un idioma. Si ya estás trabajando.

Entonces, si aprende varios idiomas, debe realizar las tareas anteriores varias veces. Es una tremenda pérdida de tiempo.
Pero una vez más, aprender múltiples idiomas tiene una ventaja que sería generar una percepción múltiple de su pensamiento. Tales como sistemas funcionales, de tipo, paralelos, etc.

Por lo tanto, es aconsejable aprender un lenguaje que traiga diferentes percepciones a nuestro pensamiento. Mejoraría nuestra experiencia general de programación por completo.
Aprender los mismos lenguajes de percepción como C #, Java, VB.NET es una pérdida de tiempo a menos que alguien le pague dinero.

Por lo tanto, mi sugerencia sería aprender 3 a 4 idiomas y ser experto en ellos.
Se necesita más tiempo para ser experto.
Nuevamente, el conocimiento solía aumentar como progresión geométrica. Mejorará todo lo que hacemos. Así que Learning Common Lisp aumentó mi experiencia de codificación C. Pero lleva tiempo.
No hay ventaja de poco tiempo.

mi lista sería

Componentes internos del sistema: C
Explorando ideas: Lisp común
Scripting: Perl
Mejorando mi vida: Emacs Lisp
Continuar obteniendo grandes $: C ++

Supongo que esta cita de Richard Feynman responde a su pregunta.

“Puedes saber el nombre de un pájaro en todos los idiomas del mundo, pero cuando hayas terminado, no sabrás absolutamente nada sobre el pájaro … Así que veamos el pájaro y veamos qué está haciendo, eso es lo que cuenta “Aprendí muy temprano la diferencia entre saber el nombre de algo y saber algo”. -Richard Feynman

Me llamaría muy bueno en algunos idiomas y puedo escribir código que desplegaría en producción en varios otros idiomas. Al mirar las ofertas de trabajo, diría que estoy calificado para hacer la mayoría de los trabajos (si solicito estas ofertas es una pregunta diferente).

Para responder a su pregunta: No, no es contraproducente siempre que sea bueno en algún idioma, que es el idioma principal que utiliza para su trabajo. Aprender cosas adicionales tiene dos impactos positivos:

  1. Cada nuevo lenguaje, cada nuevo marco te enseña cosas nuevas con respecto a tu pila tecnológica ya existente. Obtiene nuevos puntos de vista sobre cómo desarrollar código en su idioma, especialmente si esa nueva tecnología sigue un nuevo patrón o paradigma.
  2. Aprenderá una nueva herramienta que podría permitirle en el futuro resolver un problema de una mejor manera en comparación con sus herramientas existentes que podrían no estar diseñadas para tal propósito.

En general, podemos decir que gana más flexibilidad. Pero ya lo mencioné. Antes de comenzar a probar cosas nuevas, debe asegurarse de que ya tiene una buena habilidad en alguna tecnología. Es la experiencia lo que más te enseña sobre arquitectura y patrones de diseño. Y para obtener esta experiencia, me quedaría en una tecnología primero antes de aprender algunas otras.

En mi opinión, conocer algunos idiomas es bueno que quedarse con solo 1 idioma. Probablemente se puedan aprender de 4 a 5 idiomas, pero llevará tiempo. La idea detrás de cada idioma es más importante que su sintaxis. Estoy recordando algunas ideas que encontré como características llamativas en estos idiomas, pero también existen en algunos otros idiomas. Si no hubiera experimentado, no lo habría sabido.

c ++: programación genérica de plantillas, sobrecarga de operadores, espacios de nombres

variantes de lisp (CL, esquema): cierres, lambda, programación funcional, minimalismo (esquema), recursión en esteroides, poder de macros, REPL

java – OOP, recolección de basura, subprocesos / soporte integrado mutex en un idioma, java world es generalmente experto en patrones de diseño, los desarrolladores de java conocen un par de patrones debido a la comunidad, especificaciones de VM bien definidas

perl: expresiones regulares y accesos directos como $ ‘ [correo electrónico protegido] $. $ <, hashes (lenguaje incorporado), cosas como foreach $ line (@xyz), accesos directos. Solo conocía C antes de aprender perl

Python: la simplicidad pura del lenguaje puede enmascarar olvidar otras características, pandas + scikit, sistema de paquete pip

matlab: escribir código vectorizado en lugar de bucles

Sugeriría fuertemente este video

Pero no caigas en la trampa de simplemente aprender varios idiomas por el simple hecho de hacerlo. No será un sustituto de saber cosas como la teoría de grafos, programación dinámica, etc.

Si me preguntas que quiero aprender 30 idiomas, ¿es contraproducente? Yo diría que sí, esto podría ser algún tipo de síndrome del coleccionista. Todas y cada una de las ideas de que habrá dos o más campamentos que estén de acuerdo o en desacuerdo, puede elegir su elección.

No lo creo. Depende de por qué los estás aprendiendo. Simplemente aprender idiomas por aprenderlos parece que llevaría mucho tiempo y no sería muy útil. Aprender nuevos idiomas para realizar una tarea específica es útil, incluso si decide que el idioma era incorrecto para la tarea; ahora lo sabes

Estoy en una situación un poco única, ya que trabajo en una agencia. Cuando llega un cliente, tengo que equilibrar lo que sé sobre diferentes idiomas con los requisitos del cliente. Si ya tienen una infraestructura construida en un idioma, es bastante difícil decidir que otro idioma sería mejor a menos que lo que soliciten sea extremadamente único y exigente. Así que tengo que cambiar de idioma en un abrir y cerrar de ojos.

Como mentor de varios otros desarrolladores y pasantes en una agencia, es posible que tenga que escribir código en tres o más idiomas de back-end en un día (y no cuento HTML / CSS / JavaScript / XML / json como idiomas) . Si una persona está pidiendo ayuda para construir una aplicación ios, otra con un sitio java, otra con un sitio python, y estoy trabajando en un proyecto web .net y un sitio php en motor de expresión, puedo usar 5 idiomas diferentes y 5 marcos diferentes en un período de 2 horas. Así es como a veces va mi día a día. (También tengo un proyecto de dispositivo integrado en el que estoy trabajando en mi propio tiempo, por lo que también puede agregar C y C ++, además de Java para Android a esa lista para el día).

En mi caso, conocer todos esos idiomas no es solo una forma útil de entender más sobre programación; Es parte de mi trabajo. Como resultado, uso todos esos idiomas todo el tiempo, para que no se oxiden sentados en un estante. No solo los conozco para poder sacarlos como un truco de fiesta, necesito trabajar en varias pilas diferentes todos los días.

Sin embargo, una vez que sepa más de unos pocos idiomas, aprender nuevos idiomas es tan natural como aprender a conducir un automóvil diferente. A veces, los limpiaparabrisas están en la señal de giro, a veces están en el tablero, pero solo lo ralentiza las primeras veces que lo conduce y luego comienza a hacerlo automáticamente.

Aunque es cierto, una gran cantidad de mis errores de primer paso son “Oh, mierda, no es así como declaras una variable en este idioma …”

Sin embargo, la mayoría de las veces el IDE me advierte antes de que alguien más lo vea. 8-p

Las personas que piensan que más siempre es mejor no tienen en cuenta los costos de oportunidad. Si pasas 3 meses aprendiendo un nuevo idioma, son 3 meses que no gastarás refinando tus habilidades en un idioma existente.

Entonces la respuesta es sí y no. Convertirse en un experto en todos los idiomas no es una opción, ya que el tiempo es limitado. Esto es realmente un problema de optimización. ¿Cuántos idiomas es óptimo? ¿Y cuántas horas deberías dedicar a cada uno? Eso es difícil de responder, y será diferente dependiendo de lo que esté haciendo. ¿Pero tratando de aprender CADA idioma? No, ese no es el resultado óptimo.

¿En cuanto al número mágico? No lo sé. Recomiendo aprender nuevos idiomas cuando hayas determinado una gran necesidad para tus objetivos. Si tienes tiempo libre que de otro modo no se usaría productivamente, entonces sí, aprende algo nuevo.

Mi preocupación al respecto es: puede impedir que llegue a Expertise . Y piense en los gurús más reconocidos de la industria: K. Thompson, L. Torvalds, D. Ritchy … utilizaron principalmente 1 o unos pocos, e hicieron su magia con él. Pero el mercado laboral tiende a presionar a los juniors para que adapten los conjuntos de herramientas utilizados por las diferentes compañías …

En algún momento puede desear no haberlo hecho. A menudo lucho incluso con construcciones simples que he aprendido tantas veces en tantos idiomas. for / foreach en perl, shell, php y javascript es un ejemplo particularmente molesto.

El punto es una necesidad de aprender paradigma de múltiples programas en lugar de muchos idiomas. Muchos lenguajes de programación no lo ayudarán a mejorar la habilidad de codificación. Al igual que hablar muchos idiomas no es necesario hacer que uno escriba un buen artículo. Como mencionaste a Lisp, diría que hay muchas cosas que puedes aprender de Lisp. Definitivamente vale la pena pasar más tiempo en Lisp que aprender muchos idiomas.

Creo que es contraproducente ya que consume tiempo de profundizar en (por ejemplo) uno o dos idiomas.

Al igual que con los idiomas hablados (o de hecho cualquier campo), tiene que hacer un equilibrio entre amplitud y profundidad.