¿Deben los ingenieros de software saber un par de idiomas?

Deberías saber absolutamente muchos idiomas. Hay varias razones para esto:

  1. Desea poder utilizar la herramienta adecuada para la tarea. Diferentes idiomas tienen diferentes fortalezas y debilidades.
  2. Saber más idiomas te hace más comercializable. Puede pasar más rápido a un nuevo rol si ya conoce el idioma que se está utilizando.
  3. Saber más idiomas hace que elegir el siguiente idioma sea más fácil.
  4. Pero la razón más importante para conocer muchos idiomas es ampliar su comprensión de los paradigmas de programación. Los idiomas, en general, están diseñados para que pienses en programar de diferentes maneras. Por ejemplo, ¿has probado un lenguaje funcional? ¿Cuál es su opinión sobre el modelado con o sin herencia múltiple? ¿Qué pasa con la herencia de clase versus la herencia de instancia? ¿Has examinado algunas de las elegantes construcciones utilizadas en SmallTalk? El punto no es que necesariamente debas ser profesionalmente competente en cada idioma, sino que debes aprender suficiente de muchos idiomas para haber pensado por qué fueron diseñados de la manera en que fueron y las ideas que obtendrás al hacerlo son ideas que puedes Aplicar en otros entornos.

Entonces, la idea es aprender una amplia gama de idiomas. Si conoce Java, entonces ciertamente podría aprender C #, pero probablemente no aprenderá mucho, pero si aprende C ++, podrá formarse una opinión sobre las ventajas y desventajas de tener un recolector de basura incorporado. Si aprende Smalltalk, aprenderá más sobre los compromisos que los lenguajes OO de estilo C han hecho y sobre las ventajas (y desventajas) de trabajar en un entorno dinámico. Aprenda algo de JavaScript y pruebe la herencia de instancias (y mucho sobre lo que no debe hacer en un idioma). Aprende un poco de Eiffel y prueba Design by Contract. Aprenda Haskell, F # o Common Lisp y pruebe la programación funcional. Podría seguir y seguir …

No puede tener demasiadas herramientas (ideas, conceptos) en su cinturón de herramientas cuando se trata de programación.

Los ingenieros de software que solo conocen un par de idiomas son muy jóvenes. Un ingeniero de software profesional debe aprender otro idioma nuevo cada año o dos.

Los lenguajes de software son herramientas para nosotros en la profesión de ingeniería de software. Cada herramienta es adecuada para diferentes tipos de trabajo.

Piensa en un carpintero. Ella sabe cómo usar martillos, sierras, taladros, lijadoras, etc. Cada uno de estos es una herramienta bastante diferente, para diferentes trabajos. Ninguno de estos puede tomar el lugar de los demás. El carpintero tiene que aprender a usarlos para ser un profesional completo.

Supongo que si estás contento con ser un ingeniero de software que hace el equivalente a “Corté esta pieza de madera por la mitad” y no haces nada más que esa única tarea durante toda tu carrera, podrías aprender una sola herramienta. Pero no será versátil y perjudicará sus posibilidades de seguir siendo empleado. Además, ¡es menos divertido!

Durante mi carrera, he usado lenguajes: BASIC, Pascal, C, varios tipos de shell, C ++, varias marcas de SQL, Perl, Java, Javascript, PHP, Ruby, Python y Go.

He perdido la cuenta de la cantidad de otras herramientas y productos de software que tienen sus propios mini idiomas especializados, como troff, sed, awk, make, ant, InstallShield, ansible, etc.

Un ingeniero de software que realmente practica su profesión, con el tiempo, aprenderá varios idiomas, casi sin excepción.

Saber varios idiomas no solo es útil (vea las comparaciones que otros hacen con tener más herramientas en su caja de herramientas), sino que también lo ayuda a comprender los puntos fuertes y débiles del idioma que desee o tenga que usar en un momento dado.

¿Significa esto que un ingeniero de software que solo conoce un solo idioma no puede ser bueno? En realidad no, he trabajado con excelentes que codificaron exclusivamente en Fortran, aunque se movieron a través de varias versiones del lenguaje a lo largo de las décadas. Pero limita la amplitud de soluciones en las que puede trabajar.

Finalmente, no permita que ‘tener que conocer un par de idiomas’ le impida comenzar con solo uno. Y tampoco te apresures a aprender varios idiomas desde el primer día. Aprenda lo que sea relevante en este momento y si le gusta el trabajo, probablemente pasará a otros idiomas cuando se presente la oportunidad. Sin embargo, no hace daño jugar un poco con otros idiomas, una vez que te sientes seguro en uno.

Había estado trabajando en una empresa en particular durante varios años. Durante los primeros dos años que estuve allí, tuvimos un proyecto que fue prototipo en Python, y en un par de meses se cambió a Java. Después de un año de desarrollo de Java, la compañía decidió que no le gustaba Java (por encima de las objeciones del personal de programación), por lo que comenzamos de nuevo en C ++. El proyecto se canceló poco después, y nuestros esfuerzos de desarrollo cambiaron a C #, VB.Net y JavaScript, con una breve incursión en PHP para terminar algunos trabajos de contrato anteriores antes del trabajo principal de C # / JS, que eran los principales idiomas que utilizaría. utilizar durante los 8 años restantes en la empresa.

Un par de años antes de irme, mi jefe salió de su oficina y preguntó si alguien allí conocía a Ruby, y mi mano se levantó. Así que mi empresa también obtuvo un contrato para desarrollar algo de Ruby.

Cuando comencé el trabajo, nunca había trabajado en Python, C #, VB.Net, PHP o Ruby. Son 4 idiomas que tuve que aprender en el trabajo, y un idioma que aprendí para mis propias cosas que resultaron útiles en el trabajo. Obtuve el trabajo que actualmente tengo basado parcialmente en mi conocimiento de Perl, un lenguaje que ya no se usa mucho.

Cada lenguaje de computadora que he aprendido hace las cosas de manera ligeramente diferente, y cada lenguaje que he aprendido ha afectado mi forma de pensar sobre el arte de la programación: el arte de resolver problemas usando una computadora. No solo es inteligente estar siempre aprendiendo nuevos lenguajes de computadora, sino que nunca sabes cuándo afectará positivamente tu carrera también.

Sí, un ingeniero debe saber varios lenguajes de computadora. (¡No sería malo saber otro lenguaje humano o dos tampoco!)

He estado alrededor por un tiempo, por lo que la mayor parte de mi código ha estado en C, C ++ u Objective C. También he hecho Python, Java, Fortran, Forth y he escrito al menos algunos códigos en una variedad de otros. . Estoy haciendo principalmente Swift, Python y Objective-C en estos días (dependiendo del proyecto o plataforma).

Cuanto más sepa, más podrá hacer. También puedes participar en los mejores tipos de proyectos. Los lenguajes informáticos son herramientas. Cuantas más herramientas sepa utilizar, mejor estará.

Sí, he trabajado con más de una docena. Suena impresionante, pero muchos idiomas tienen mucho en común. Incluso cuando uso los idiomas con los que trabajo a diario … Busco cosas.

Es más como trabajar con tecnologías. Si renderizo gráficos, por ejemplo, no importa si uso Java, C ++ o javascript. Todos necesitan comunicarse con una API de gráficos. La forma en que lo hacen es diferente, pero todos ellos dibujan modelos, les ponen texturas, los iluminan y los sombrean.

El idioma en el que quiero que se ejecute mi programa determinará cuál de los idiomas que utilizo. Ninguno de ellos es “mejor” o “peor”, pero entrega el software en un entorno diferente.

Hay “saber” y hay “saber”.

Debe conocer una variedad de paradigmas diferentes, generalmente representados por diferentes idiomas. (Para mí, estaba aprendiendo Assembler, Fortran y Lisp en la universidad).

Después de eso, es bastante difícil no adquirir un conocimiento práctico de muchos idiomas en varios momentos, ya que uno trabaja en diferentes proyectos en diferentes entornos, ya sea porque el proyecto en el que está trabajando requiere un idioma específico, o porque tiene que entrar y ajustar alguna herramienta de código abierto u otra.

En última instancia, la habilidad es poder aprender (suficiente) un idioma rápidamente para hacer las cosas. Después de eso, es muy probable que olvide todo lo que aprendió, hasta la próxima vez.

Definitivamente Debe conocer idiomas con diferentes complejidades ya que esto le permite pensar en diferentes niveles. Por ejemplo, Assembley me permite pensar en cómo la CPU ejecuta declaraciones (por ejemplo, la multiplicación), C me permite pensar en la administración de memoria y los punteros, y Java / Python / JS son los lenguajes de programación que uso.

Además, cada idioma tiene sus ventajas:

C – es muy eficiente.

Java: se utiliza para programas de Android y GUI.

Python: es muy simple y permite crear rápidamente programas complejos, lo que lo hace ideal para hackatons, y es muy útil para construir servidores.

JS: es ideal para todo WEB y se utiliza para la programación de UNITY (juegos).

Si estamos hablando de buenas SE, la respuesta es absolutamente.

La ingeniería de software no se trata de lenguajes de programación, se trata de cosas de ingeniería. Los idiomas son solo herramientas; para cada tarea su herramienta adecuada. Si quieres un motor 3D rápido, toma C ++. Quiero frontend, agarra JS. ¿Quieres estadísticas, agarra R. ¿Quieres un brainfuck, agarra brainfuck! No creo que como ingeniero puedas sobrevivir a través de tu carrera haciendo lo mismo una y otra vez (personalmente me aburriría hasta la muerte); si puedes, en realidad estás de acuerdo con una herramienta. Pero, sin embargo, no es un escenario realista.

Como lo siento por un carpintero que solo sabe cómo usar el martillo, lo siento por un ingeniero de software que solo conoce un idioma. Tal carpintero no puede construir nada útil desde cero; lo mismo, más o menos, se aplica a tal ingeniero de software.

Hay otra cosa La gran mayoría de los profesionales de TI que conocí durante mi carrera tienen curiosidad sobre cómo funcionan las cosas. Sienten curiosidad por enfoques aún desconocidos (como la programación funcional que está ganando una enorme cantidad de atención ahora, aunque ha estado allí desde LISP), sobre nueva información, nuevas tecnologías. Si solo sabes un idioma, no tienes curiosidad. Eso significa, al menos para mí, que no eres (todavía) un profesional.

Si recién está comenzando su carrera, está perfectamente bien, debe comenzar con algo. Si has estado allí durante varios años, en mi opinión, no estás creciendo.

¿Debería un traductor de idiomas?

No es necesario, pero los hace útiles en una gama más amplia de situaciones y aumenta su comprensión del cómo, por qué y dónde funciona el primer idioma y tiene debilidades.

Si has estado trabajando> 2 años y solo sabes 1 idioma, entonces no tienes mucha curiosidad.

Muchas universidades ofrecen cursos que hacen recorridos a diferentes tipos de idiomas.

Además, ¿cómo responderá preguntas que le piden que compare y contraste los idiomas?

More Interesting

Cómo familiarizarme con Unix / Linux, especialmente el terminal, si planeo trabajar en la industria del software

¿Va a ocurrir realmente la 'singularidad'?

¿Alguien puede desarrollar habilidades para resolver problemas (Matemáticas / Algoritmos / Programación) o son las heredadas?

¿Es una buena idea usar desarrolladores de Java como probadores para la prueba de caja negra de errores / tareas?

¿Es demasiado tarde para comenzar a estudiar Selenium en Java ahora, desde la perspectiva de un trabajo de prueba de software en la India?

¿Qué cosas debe hacer un ingeniero de software que trabaja en China para conseguir un trabajo en los Estados Unidos?

Soy un probador de software. No estoy disfrutando mi trabajo. ¿Qué tan difícil es convertirse en desarrollador con un conocimiento básico de Java?

¿Qué tipo de empresas utilizan Java como su idioma principal en el desarrollo de software? Compañías como Dropbox y Quora trabajan con Python, mientras que otras como Facebook, usan C ++ y PHP.

¿Qué tiene de malo TDD?

¿Cómo entrar en el desarrollo de software de las pruebas? ¿Puede sugerir qué habilidades se necesitan en función de la tendencia actual en la industria de TI?

¿Cuáles son los temas para los modelos SRS?

¿Hay algún rol de control de calidad que no implique escribir casos de prueba?

¿Por qué la computadora no puede reconocerte con su cámara y confirmar quién eres con su micrófono?

¿Cuál es la diferencia práctica entre QA, QC y Tester?

¿Cuándo deberías hacer una revisión de código?