¿Qué ventajas tiene un título en Ingeniería Eléctrica e Informática sobre un título en Informática, con respecto a una carrera en Ingeniería de Software?

La ingeniería eléctrica y civil no se trata fundamentalmente de software, pero CS sí, aunque algunos conocimientos de EE y / o CE lo ayudarán a comprender cómo el hardware subyacente es controlado por el software.

Sin embargo, dado que más del 95% de la ingeniería de software moderna está por encima del nivel de hardware, el conocimiento no es tan útil en el campo. Pero debe tomar clases de arquitectura y ensamblaje de computadoras como mínimo, o no tendrá idea de cómo funciona su compilador, ni por qué el software se comporta como lo hace en el mundo real.

Además, escribirá código subóptimo, porque no comprende cómo lo procesa el hardware. Pure CS enseña que la “recursión de cola” siempre es algo bueno, por ejemplo, pero comprender el hardware subyacente hace toda la diferencia en el mundo en cuanto a cuándo y cómo usarlo. Para obtener información más detallada, vea el hilo de comentarios en: La respuesta de Marcas Neal a ¿Es la recursividad de la cola algo bueno o malo?

Hay dos respuestas a esta pregunta y la primera responde al plan de estudios de su escuela.

La ingeniería de software generalmente requiere experiencia práctica. Como ingeniero, necesitarás construir cosas que funcionen y sean confiables. Sus diseños generalmente estarán dirigidos a algún sistema operativo en algún conjunto de chips (estoy hablando del diseño de sistemas integrados, ya que esto es lo que sé). Algunas escuelas ofrecen clases de CS que son prácticas y algunas escuelas ofrecen clases de CS donde los estudiantes escriben código en el vacío. Obviamente, esto también depende de los estudiantes: harás lo que harás con el programa dada tu motivación y aptitud.

En segundo lugar, he trabajado en el campo de los sistemas integrados durante 17 años, principalmente haciendo una combinación de gestión técnica, diseño de FPGA, diseño eléctrico y algún software. También tengo un MSEE. He entrevistado a muchos graduados recientes y he asesorado directamente a más de una docena de jóvenes recién salidos de la escuela y a algunos estudiantes de tercer y cuarto año en los programas de grado CS y EE. Lo que he descubierto es que, si bien muchos graduados de CS / estudiantes actuales tienen un concepto del H / W que están utilizando, es muy raro que entiendan cómo interactúa su S / W y cómo utiliza el H / W, y por qué esto La interacción es importante. La gente de CS generalmente se enfoca en escribir código funcional, lo cual es bueno, pero ignorando las restricciones H / W. En numerosas ocasiones, esto ha provocado un rediseño arquitectónico completo debido al uso ineficiente (hasta el punto de una aplicación inutilizable) de los recursos H / W. Los graduados de EE por otro lado, en su mayor parte entienden cómo el S / W usa el H / W. La diferencia aquí es sustancial y abrumadora, los ingenieros de S / W más efectivos en mis equipos han sido los EE que se interesaron en la ingeniería de S / W. Estos EE con un rol S / W tienden a saber cómo usar el H / W que están trabajando de manera efectiva y al código de arquitecto teniendo en cuenta esas limitaciones H / W. Además, rara vez usan código elegante / inteligente, lo cual es una bendición cuando tenemos que depurar. Muchas veces su código en realidad resulta ser más robusto ya que es fuerza bruta y KISS.

Dicho todo esto, cualquiera puede aprender estas habilidades H / W + S / W, pero descubrí que los EE recién salidos de la escuela parecen ser más efectivos en ingeniería S / W, aunque no hayan escrito tanto código como la gente de CS tiene en sus cursos.