Descargo de responsabilidad: Los puntos de vista y opiniones en esta respuesta son míos y solo míos, y no representan los puntos de vista u opiniones de mi empleador o cualquiera de sus subsidiarias.
Hay algo que debes entender primero, que realmente no se menciona en la pregunta que vinculaste. Si bien los ingenieros de software pueden disfrutar aprendiendo nuevos idiomas, tienden a gravitar hacia un idioma o conjunto de idiomas “favoritos” o “preferidos”. Sin embargo, esto generalmente se debe a la estética. Pueden preferir la sintaxis o la facilidad de uso de ciertos conceptos de programación, etc., en un idioma sobre otro. Por ejemplo, en mi rol actual, escribo principalmente Java, pero prefiero escribir C #. Y cuando tengo la opción de elegir entre Ruby y Python, prefiero Python, pero otros prefieren Ruby.
Dicho todo esto, la razón por la cual la mayoría de los ingenieros de software pueden aprender tantos idiomas es que los conceptos de ingeniería de software trascienden el lenguaje. Aprender un nuevo idioma suele ser solo una cuestión de sintaxis. Básicamente “¿Cómo hago X en Y?” Después de buscar en Google algunos de esos tipos de preguntas, un ingeniero de software podría construir un sistema completo, solo volviendo a Google para preguntar algunos detalles que pueden no ser fácilmente detectables con el idioma / herramientas que tienen disponibles.
- ¿Es mejor unirse a Cerner como ingeniero de software o Chai Point?
- ¿Qué debo hacer para codificar como desarrollador profesional?
- ¿Cómo se estima el costo del software?
- ¿Qué es el sistema de sistemas en ingeniería de software con ejemplos?
- ¿Es necesario aprender a programar muy bien para desarrollar software y sistemas de TI?
Esta es la razón por la cual las grandes compañías tecnológicas generalmente no publican ofertas de trabajo con “se requieren 5 años de experiencia en Java” y en su lugar publican ofertas con “Debe tener un conocimiento sólido de algoritmos y estructuras de datos”. Las grandes empresas tecnológicas no están preocupadas si tienes experiencia escribiendo Perl. Si entiendes los algoritmos y las estructuras de datos, saben que puedes buscar en Google “¿Cómo hago X en Y?” unas pocas veces y comenzar a ser productivo con bastante rapidez.
Entonces, ¿cómo se convierten en expertos?
Bueno, sinceramente, no lo hacen. Al menos no de inmediato. Antes de tomar mi posición actual (hace aproximadamente un año) no había escrito Java en más de una década. Cuando comencé este trabajo por primera vez, no podía recordar nada sobre Java. Pasé mucho tiempo “traduciendo” cómo haría algo en C # a Java. A veces eso es difícil porque los diferentes idiomas tienen diferentes características “integradas” que hacen las cosas más fáciles o más amigables. Pero después de un tiempo te sientes cómodo con un idioma y puedes escribirlo de forma bastante natural.
Sí, pero ¿cómo se convierten en expertos?
Experiencia . Diferentes idiomas / plataformas comparten diferentes rasgos y / o características. Por ejemplo, Java y C # son lenguajes “administrados”. Si bien tienen implementaciones muy diferentes, el concepto general de un lenguaje “administrado” es el mismo. Según mi experiencia, sé cómo funciona CLR bastante bien, algunos de esos conceptos se aplican directamente a la JVM, y otros no. Cuando necesito, o quiero, conocer esas diferencias específicas, puedo buscarlas y entenderlas.