Ciencias de la Computación VS Ingeniería de Software: ¿Qué especialidad es mejor para usted?

¡Hola a todos! Mi nombre es YK, y actualmente dirijo CS Dojo, un canal de YouTube de educación en programación con más de 200.000 suscriptores. También fui desarrollador de software en Google.

Dos de las preguntas más comunes que me hace mi audiencia son:

"¿Cuál es la diferencia entre las carreras de Ciencias de la Computación e Ingeniería de Software?"

Y…

"¿Debo elegir Ciencias de la Computación o Ingeniería de Software si quiero convertirme en ingeniero de software?"

En este artículo, responderé esto y le daré mi propio análisis rápido sobre estas especialidades.

Una descripción general rápida de estas dos especialidades

  • La informática es el estudio de cómo funcionan las computadoras, principalmente desde la perspectiva teórica y matemática.
  • Debe elegir Ciencias de la Computación si le gustan las matemáticas, la lógica o si desea ingresar a un campo especializado en informática, como inteligencia artificial, aprendizaje automático, seguridad o gráficos.
  • La ingeniería de software es el estudio de cómo se construyen los sistemas de software, incluidos temas como la gestión de proyectos, la garantía de calidad y las pruebas de software.
  • Debe elegir Ingeniería de software si está más interesado en el enfoque práctico y si desea conocer el ciclo de vida general de cómo se construye y mantiene el software.
  • Tanto Ciencias de la Computación como Ingeniería de Software enseñan los fundamentos de la programación y las ciencias de la computación, por lo que puede elegir cualquiera para convertirse en desarrollador de software.

Para comprender la diferencia entre las carreras de Ciencias de la Computación e Ingeniería de Software, echemos un vistazo a su plan de estudios respectivo en la Universidad de Waterloo en Canadá.

Elegí la Universidad de Waterloo para esto porque tiene uno de los mejores programas de informática en América del Norte.

Prospectos de trabajos

Primero, comparemos los tipos de trabajos y pasantías que puede obtener con cada programa.

Afortunadamente, el sitio web de la Universidad de Waterloo ofrece varios ejemplos.

Para cada especialización, estos son algunos de los títulos que poseen los exalumnos y dónde trabajan:

Ciencias de la Computación

  • Desarrollador / arquitecto web, The Steele Group
  • Programador, Harry Rosen Inc.
  • Desarrollador móvil / en la nube, Clearbridge Associates Limited
  • Ingeniería de software, General Dynamics Canadá
  • Ingeniería de desarrollo de software, Microsoft
  • Ingeniero ágil, Pivotal Labs
  • Analista de negocios, Canadian Tire Corporation
  • Defensor de los desarrolladores, Google
  • Gerente de producto, Dropbox

Ingeniería de software

  • Desarrollador de software, Tagged Inc
  • Desarrollador de software, IBM Canadá
  • Gerente de software, Arius Software Corporation
  • Ingeniero de software, VistaPrint USA
  • Ingeniero de software, Harris Corporation
  • Desarrollador de software, Accenture Inc.
  • Gerente Técnico de Producto - Diseño y Desarrollo de Software, NexJ Systems Inc
  • Consultor, PureFacts Financial Solutions
  • Consultor de implementación, Desire2Learn

Como puede ver, no hay una gran diferencia entre los tipos de trabajos que puede obtener.

El trabajo más común que obtienen los graduados después de obtener su título en Ciencias de la Computación o Ingeniería de Software es Desarrollador de Software o Ingeniero de Software.

También hay otras opciones relacionadas, como Product Manager, QA Analyst y Technology Consultant. Sus opciones dependerán de su conjunto de habilidades específicas.

Cursos de primer año:

Ahora, echemos un vistazo a los cursos obligatorios de cada programa. Primero, comparemos algunos de los cursos que necesitaría tomar en su primer año.

Ciencias de la Computación

  • CS 135 - Diseño de programas funcionales
  • CS 136 - Diseño de algoritmos y abstracción de datos
  • MATEMÁTICAS 135 - Álgebra
  • MATEMÁTICAS 136 - Álgebra lineal 1
  • MATEMÁTICAS 137 - Cálculo 1
  • MATEMÁTICAS 138 - Cálculo 2
  • Además de algunas optativas

Ingeniería de software

  • CS 137 - Principios de programación
  • CS 138 - Abstracción e implementación de datos
  • MATH 115 - Álgebra lineal para ingeniería
  • MATH 117 - Cálculo 1 para Ingeniería
  • MATH 119 - Cálculo 2 para Ingeniería
  • MATH 135 - Álgebra para matemáticas de honores
  • ECE 105 - Física de la ingeniería eléctrica 1
  • ECE 106 - Electricidad y magnetismo
  • ECE 124 - Circuitos y sistemas digitales
  • ECE 140 - Circuitos lineales
  • SE 101 - Métodos de ingeniería de software

Como puede ver, los cursos de primer año también son bastante similares. Ambos cubren algunos cursos fundamentales de informática y algunos cursos de matemáticas en álgebra lineal y cálculo.

La única diferencia importante es que la Ingeniería de Software tiene componentes adicionales de física e ingeniería eléctrica, mientras que Ciencias de la Computación tiene algunas materias optativas más.

Cursos después del primer año:

¿Qué tal los cursos obligatorios y optativos después del primer año? Echemos un vistazo a varios ejemplos aquí:

Ciencias de la Computación:

  • MATH 239 Introducción a la combinatoria
  • STAT 230 Probabilidad
  • Estadísticas de STAT 231
  • Estructuras de datos CS 240 y gestión de datos
  • CS 241 Fundamentos de programas secuenciales
  • CS 245 Lógica y cálculo
  • CS 246 Desarrollo de software orientado a objetos <- no se requiere en las carreras de Ingeniería de software
  • Organización y diseño de computadoras CS 251
  • Algoritmos CS 341
  • Sistemas operativos CS 350
  • Además, varias asignaturas optativas de informática

Ingeniería de software:

  • CHE 102 Química para ingenieros
  • Computadoras digitales ECE 222 (incluye lenguaje ensamblador)
  • ECE 358 Redes de computadoras
  • MATH 213 Matemáticas avanzadas para ingenieros de software
  • MATH 239 Introducción a la combinatoria
  • STAT 206 Estadísticas para ingeniería de software
  • MSCI 261 Engineering Economics: Gestión financiera para ingenieros
  • CS 241 Fundamentos de programas secuenciales
  • Estructuras de datos CS 240 y gestión de datos
  • Principios de ingeniería de software de CS 247 <- no se requiere para los estudiantes de ciencias de la computación
  • Algoritmos CS 341
  • Interfaces de usuario de CS 349 <- no se requiere para los estudiantes de Ciencias de la Computación
  • Programación simultánea y paralela CS 343 <- no se requiere para los estudiantes de Ciencias de la Computación
  • CS 348 Introducción a la gestión de bases de datos
  • SE 212 Lógica y Computación
  • Sistemas operativos SE 350
  • Pruebas de software y control de calidad SE 465
  • SE 464 Arquitectura y diseño de software
  • SE 463 Especificación y análisis de requisitos de software
  • Proyecto de diseño SE 490
  • Además, algunas asignaturas optativas de informática e ingeniería eléctrica

Te he dado MUCHA información para digerir aquí. Pero aquí está mi resumen:

Cuando se trata de los requisitos en matemáticas y estadística, la informática y la ingeniería de software son casi idénticas. Cubren combinatoria, probabilidad y estadística.

Los requisitos básicos de la informática también son similares, abarcando algoritmos, estructuras de datos y sistemas operativos.

La diferencia clave es que:

  • La ingeniería de software tiene más requisitos en la ingeniería eléctrica y los fundamentos de la ingeniería de software, como las pruebas de software, el diseño y la especificación de requisitos de software.
  • Ciencias de la computación permite más electivas en cursos de ciencias de la computación de nivel superior. Puede elegir entre una amplia gama de temas como seguridad, fundamentos de la ingeniería de software, visión por computadora, aprendizaje automático y administración de bases de datos.

Entonces, ¿qué especialización deberías elegir?

Creo que depende principalmente de tus preferencias. En breve:

  • Debe elegir Ciencias de la Computación si le gustan las matemáticas, la lógica o si desea ingresar a un campo especializado en informática, como inteligencia artificial, aprendizaje automático, seguridad o gráficos.
  • Debe elegir Ingeniería de software si está más interesado en el enfoque práctico y si desea conocer el ciclo de vida general de cómo se construye y mantiene el software.

Pero espera, ¿cuál es entonces? ¿Qué especialidad es mejor si quieres ser ingeniero de software?

Aqui esta mi opinion. En esta universidad en particular (Universidad de Waterloo), con este conjunto particular de requisitos del programa, Ciencias de la Computación es una mejor especialidad si quieres ser un ingeniero de software.

Solo para simplificar, supongamos que espera obtener uno de los trabajos mejor pagados (~ $ 100,000 USD / año) como ingeniero de software en América del Norte. Estos trabajos son normalmente a grandes compañías de software (piensa Microsoft, Google, Amazon, etc.) o en general, las empresas de alto crecimiento medianas (piensa Dropbox, Lyft, Snapchat, Pinterest, etc.).

Por lo general, lo que buscan en un candidato a ingeniero de software es la capacidad de escribir código sólido y crear proyectos interesantes, así como los fundamentos de la informática, incluidas las estructuras de datos y los algoritmos.

Creo que la mejor manera de cultivar este conjunto de habilidades es aprendiendo rápidamente los fundamentos de la informática y dedicando su propio tiempo a practicar la resolución de problemas y la escritura de código.

Basado en el plan de estudios de Ingeniería de Software y basado en lo ocupados que tienden a estar los estudiantes de ingeniería en general, creo que sería más difícil hacer esto con Ingeniería de Software que con Ciencias de la Computación.

Otro beneficio de este programa de informática en particular es que permite más asignaturas optativas de informática. Esto también es genial porque, dependiendo de la demanda en el mercado laboral, podrás ajustar tus cursos. Por ejemplo, si hay demanda de desarrollo de aplicaciones móviles, puede aprenderlo. Y si hay demanda de computación paralela, puede concentrarse en eso.

Estoy seguro de que hay algunos beneficios al aprender los fundamentos de la ingeniería de software (gestión de proyectos, diseño, pruebas, etc.). Pero personalmente preferiría tomar la flexibilidad sobre un conjunto predefinido de habilidades. Es por eso que creo que Ciencias de la Computación es una mejor especialización para convertirse en ingeniero de software con este plan de estudios en particular.

Por supuesto, esa es solo mi opinión, y esta es solo una universidad en particular. Me encantaría conocer su opinión y cómo fue su experiencia si se especializara en Ciencias de la Computación o Ingeniería de Software. Házmelo saber en un comentario a continuación.

Algunas notas

Nota 1: Las diferentes universidades tienen diferentes requisitos para estas dos especialidades. Este artículo debería ser un buen punto de partida, pero aun así debería echar un vistazo a los requisitos del programa en la universidad a la que le interesa asistir.

Nota 2: Algunas universidades ni siquiera tienen una especialización en Ingeniería de software. Por ejemplo, la Universidad de Columbia Británica en Vancouver tiene títulos en Ciencias de la Computación e Ingeniería en Computación, pero no en Ingeniería de Software. Pero tienen una concentración en ingeniería de software dentro de su programa de Ciencias de la Computación, así como en Ingeniería en Computación.

Si la universidad a la que le interesa ir no tiene una especialización en Ingeniería de Software, yo iría con Ciencias de la Computación si quiere convertirse en desarrollador de software. La ingeniería informática se centra más en el hardware que en la informática o la ingeniería del software, por lo que está menos relacionada directamente con el trabajo de un desarrollador de software típico.

Y aquí están las principales fuentes que utilicé:

  • Ciencias de la Computación en Waterloo
  • Ingeniería de software en Waterloo

¡Gracias por leer y buena suerte eligiendo una universidad y tu especialización! ?