Quiero ser ingeniero de software en una gran empresa como Google o Apple. ¿Debo especializarme en informática o ingeniería informática?

Punto interesante a tener en cuenta primero: ¡puedes hacer ambas cosas! No quiero decir que en un sentido de “puedes doble mayor y hacer las dos cosas”. Hay algunas universidades (como la Universidad de Nevada-Reno, también conocida como mi universidad) que tienen un título de Bachiller en Ciencias en Ciencias de la Computación e Ingeniería que incorpora cursos de Ciencias de la Computación e Ingeniería en Computación.

En cuanto a los pros y los contras de Computer Science vs Computer Engineering, creo que “pros y contras” es una forma sesgada de ver este debate. Es como preguntar los pros y los contras de la biología y la química: puede hacerlo, pero es mucho mejor ver que los dos campos tienen diferentes propósitos.

Con eso en mente, una nota rápida: hay 3 grados “directos” en ingeniería de software, y luego algunos otros que pueden llegar tangencialmente allí. El dirige: Ingeniería de Software, Informática, Ingeniería Informática. Algunos tangenciales: Matemáticas, Estadística, Economía, otros grados “cuantitativos”. Estos grados tangenciales no requerirán que realice los grandes proyectos de software que necesita para estar preparado, pero vale la pena señalar que están completos.

En cierto sentido, puede modelar la relación entre informática, ingeniería informática e ingeniería de software en un gráfico jerárquico:

(Nota: Esto debería haber sido un gráfico dirigido en el que todas las flechas apuntan hacia abajo, pero hice esto en paint rápidamente y paint no tiene flechas bonitas)

Esta jerarquía no es una jerarquía de “cosas en la parte superior es mejor”, sino más bien “las cosas en la parte inferior son una aplicación de la parte superior”. Esto tampoco es un gráfico completo, en el sentido de que hay muchos más campos y temas y flechas que tendrían que colocarse para completar, pero esto proporciona una visión general aproximada.

Desglosando por qué podría elegir uno de los tres grados “directos”:

Ciencias de la Computación

La informática se ocupa mucho más de la teoría detrás de cómo funcionan las computadoras, especialmente en términos de los componentes matemáticos de fondo. Computer Science te prepara para sobresalir en los aspectos teóricos del software (generalmente investigación, pero también se muestra bastante) como el análisis de algoritmos (comprender los tipos comunes de algoritmos que aparecen en problemas, comprender la relación entre el número de entradas y número de cálculos para una solución dada, etc.), diseño del compilador, diseño del sistema operativo, lenguajes formales (piense en lenguajes de programación como C ++, python, haskell, etc., pero también piense en lenguajes de marcado como HTML y XML), redes ( ¿Cómo está de acuerdo cada computadora sobre cómo manejar la transmisión de correo electrónico, solicitudes web o transferencias de archivos? ¿Cómo se conecta mi computadora a “Internet” y de repente tiene la capacidad de interactuar con un servidor de computadora en Europa?), inteligencia artificial , aprendizaje automático, visión por computadora, etc. Yo diría que Computer Science le brinda la mayor flexibilidad para saltar a Ingeniería en Computación o Ingeniería de Software después, a costa de 1. tener para aprender teoría adicional (que generalmente es útil, aunque probablemente no lo notarás) y 2. tener que pasar un tiempo extra aprendiendo también los dominios de ingeniería.

Ingeniería Informática

La ingeniería informática se resume mejor como una especie de mezcla entre la ingeniería eléctrica y la informática. Dejas caer gran parte de la teoría de la informática y aprendes muchos de los conocimientos de física / circuitos / hardware de la ingeniería eléctrica. Por el mérito de ser un título de ingeniería, mucho menos de lo que aprende tiene la intención de ayudarlo a trabajar en la investigación teórica más adelante, pero aún aprende muchos de los mismos fundamentos. Ingeniería informática, en mi opinión, tiende a sincronizarse con los términos Sistemas integrados (el ejemplo clásico es cómo programar un Furby), firmware e ingeniero de hardware (redes físicas, procesadores, GPU, circuitos, discos duros, RAM, etc.). La transición de un ingeniero informático a un ingeniero de software es probablemente la más difícil de estas tres, pero tal vez realmente quiera trabajar más cerca del hardware (que definitivamente necesitamos).

Ingeniería de software

La ingeniería de software se aplica a la informática, centrándose más en la creación de productos tangibles a partir de las construcciones teóricas. También insisto en que la ingeniería de software está relacionada tangencialmente con la arquitectura en el sentido de que los sistemas de software suelen ser muy grandes, consisten en muchos subsistemas y requieren una planificación cuidadosa de cómo interactúan estos subsistemas. Insisto nuevamente, esta planificación es principalmente en lo que el ingeniero de software es especialmente bueno y en lo que se enfoca. Claro, el ingeniero de software también hace mucha programación para lograr su diseño. Sin embargo, escribir código para un ingeniero de software es algo así como dibujar un diseño para un arquitecto: es fundamental que el diseño coincida con la idea y que las personas puedan entender el diseño, pero la idea en sí es dónde está el dinero. Además, si observa la jerarquía de Ingeniería de software, “Arquitecto de software” se encuentra en la parte superior de la escala o es una parte de la descripción del trabajo para cualquiera que sea el rol principal (suponiendo que esté buscando la ruta de contribuyente individual; obviamente el el juego cambia si te mueves a la gestión).

Dato final: sugeriría que la mejor manera de determinar en cuál de estas especialidades debe especializarse es echar un vistazo a las clases requeridas para el título y tratar de determinar qué clases parecen más aplicables a lo que desea aprender. Algunos de ellos no tendrán mucho sentido al principio porque no sabes lo que no sabes, pero aún así te animo a que realices este ejercicio con muchas universidades / títulos diferentes y veas la tendencia entre los grados, y luego decide qué tendencia parece tener más sentido para ti.

A2A

¿Por qué no obtener un título real en ingeniería de software? Escribí una publicación de blog que detalla la diferencia entre la educación SE y CS. La esencia de esto es que SE se enfoca en la programación usando principios de ingeniería, es decir, usando técnicas de ingeniería para construir aplicaciones de software. CS se centra más en empujar los límites de la informática; aprenden cómo las computadoras y el software trabajan juntos para poder hacer cosas nuevas. Los ingenieros toman lo que ya se sabe y hacen grandes cosas, por lo que deben tener una base de conocimiento más amplia que los científicos, que tienden a centrarse en un subconjunto más pequeño de campos.

La ingeniería informática combina la programación con la electrónica, es decir, el software con el hardware. Si quieres ser programador, esto puede o no funcionar para ti. Cuando obtuve mi título de CE, no sabía si quería ser programador o seguir con el hardware (mi AS es en electrónica). Tomé tres clases de programación: C, C ++ y J ++ (la versión de Java de Microsoft). Lo odiaba y solo de mala gana elegí autoaprender Python, lo que me hizo disfrutar de la programación.

Entonces, en resumen, considere lo que finalmente quiere hacer y luego considere las diferentes vías disponibles para lograr sus objetivos.

A2A. Otros como Cody Jackson y Tim Kwist respondieron esta pregunta, pero quería agregar mis dos centavos.

Estoy confundido por qué pensarías que la ingeniería informática, una rama separada de la ingeniería eléctrica que se ocupa del hardware de la computadora, sería una buena especialidad si quieres ser ingeniero de software.

Si quiere ser ingeniero de software, una especialización en ingeniería de software o informática con especialización en ingeniería de software sería la opción lógica.

¡Gracias por la solicitud!

Alphabet Inc. y Apple Inc. son empresas gigantes hoy en día con todo tipo de proyectos, tanto en producción como en investigación y desarrollo, que van desde motores de búsqueda hasta autos sin conductor. Supongo que el 100% de sus proyectos usa software y necesita ingenieros de software, y probablemente usan todos los tipos de software disponibles en la actualidad. Ese aspecto de su decisión solo sería importante si desea encontrar la rama de ingeniería de software para la que tienen más demanda (debe poder investigar eso sin demasiados problemas), pero utilizando solo esto como entrada para tomar una decisión de esa importancia sería muy arriesgada en mi opinión.

Lo que creo que deberías hacer es explorar. Explore el plan de estudios de ambos cursos para descubrir qué pueden ofrecerle. Explore el trabajo en los temas relacionados (puede usar Internet y sus propios proyectos para eso u otros enfoques). Explore usted mismo y descubra qué lo impulsa y qué tipo de trabajo lo hace desear construir las mejores contribuciones. Y no tenga miedo de cometer errores (en el trabajo y las decisiones), esa es la forma más rápida de aprender. Aprender, decidir, corregir y adaptar son habilidades esenciales para la industria y generan altos niveles de satisfacción.

¡Buena suerte en tus esfuerzos!

La informática es la especialidad más relevante para los trabajos de ingeniería de software.

Las grandes compañías tecnológicas tienen más necesidad de ingenieros de software que otros tipos de ingenieros. En las universidades mejor clasificadas, el programa de grado que mejor te prepara para la carrera profesional de Ingeniero de Software es Computer Science. La especialización en Ingeniería Informática en escuelas como MIT incluye clases enfocadas en hardware.

Dicho esto, siempre que aprenda los conceptos básicos de ciencias de la computación, es posible obtener un trabajo como ingeniero de software en una gran empresa de tecnología, independientemente de su especialización.

A Microsoft generalmente no le importa qué tipo de ingeniero es usted, siempre y cuando tenga el sufijo “ingeniero”. Lo que es más importante es tener proyectos de software relevantes sobre los que pueda hablar con ellos. Se preocupan más por eso y sus habilidades de codificación más que su título. Elegiría la ingeniería en lugar de comp sci porque la ingeniería le brinda más opciones y oportunidades de empleo. Casi todos los que conozco en Comp Sci tienen sus ojos puestos en Google, Apple o Microsoft, por lo que tendrás que lidiar con mucha competencia.

Definitivamente, “Ingeniería en Computación” es el curso a seguir junto con todas las matemáticas más altas disponibles. La ingeniería informática es la aplicación de la informática, que en realidad crea una solución de trabajo “con suerte” para una necesidad definida.

Muy pocas investigaciones esotéricas, diseñan / construyen el dispositivo

Debes elegir el grado que mejor se adapte a lo que quieres hacer. Si realmente está decidido a ser ingeniero de software y trabajar para Google / Apple, entonces debe optar por Computer Science. Es una opción más segura. La ingeniería informática está más cerca del hardware, y hay muchos menos trabajos de tipo hardware que software. No estoy diciendo que no debas obtener un título en Ingeniería Informática, estoy diciendo que te asegures de que quieres trabajar con hardware antes de seguir esa ruta.

Apple sería una mejor opción para los ingenieros informáticos, pero, sinceramente, necesitará mucho más que un título si desea trabajar allí.

Como desarrollador web, personalmente no quiero trabajar en ninguna de las dos empresas. Probablemente podría trabajar para Google si realmente quisiera, pero nunca me han gustado las grandes empresas y, en particular, no me gusta el proceso de contratación de Google, por lo que probablemente nunca postule.

¿Por qué centrarse en las grandes empresas?

Allí serás un pequeño engranaje escondido entre muchos otros.

Trabajar en compañías más pequeñas, 100 o menos ingenieros de software, le permitirá hacer una diferencia notable que es más gratificante para usted.

También le brinda más oportunidades para obtener una gama más amplia de experiencias que ayudarán a que su carrera crezca más rápidamente. También hay menos política de oficina que soportar.

Creo que más bien tu especialidad debería ser en informática. Sin embargo, después de la graduación, debe tener una buena práctica en una de las compañías Fortune 100.

Con esa educación y práctica puede soñar con ser contratado por Google o Apple.

Creo que puedes hacer ambas cosas, mayor en una y menor en otra. SE, no estoy seguro porque cada compañía tendrá sus propias herramientas y procesos que impulsarán el diseño y la programación de SE.

Sugeriría, obtener una buena base en algoritmos, estructuras de datos, matemáticas, etc. y en trabajar en equipo y construir un tam.

Si. Pero podría brillar su imagen para tomar un primer trabajo en otro que no sean los dos líderes, a menos que se especialice en Ivy League o MIT, Stanford, CM, RIT, Cornell. o similar.