La mejor respuesta
La ingeniería de software es un vasto campo de juego con muchos tipos y subtipos diferentes, pero los principales tipos de ingeniería de software son dos: Software de sistemas y software de aplicación.
Software de sistemas: Los ejemplos incluyen, entre otros, los programas que se dedican a administrar la computadora o algún dispositivo dedicado a una tarea específica, como: sistema operativo Windows (Microsoft Windows 10), sistema operativo IOS (OS X 10.10 Yosemite., 4.13 OS X 10.11 El Capitan, 4.16 macOS 10.14 Mojave ……), sistema operativo Android (SO Android), Linux (Ubuntu…)
Software de aplicación: Programas de usuario final que permiten al usuario realizar tareas como crear documentos (Microsoft Word, Pages…), enviar correo electrónico (aplicación Gmail), diseñar gráficos (Photoshop), etc.
Y todo lo anterior se puede romper en subcomponentes más pequeños / categorías que forman subárboles de software de aplicación y subárboles de software de sistemas.
Un ejemplo de una subcategoría de software de aplicación: Photoshop es una aplicación que pertenece a un conjunto de aplicaciones de software en Adobe Creative Software Suite que consta de photoshop, InDesign y otros.
En Ingeniería de software, cuando un ingeniero de software desarrolla un sitio web, una aplicación móvil o un juego: todas estas aplicaciones se incluyen en la categoría de software de aplicación. El ingeniero desarrolla software que se ejecuta quizás en un dispositivo físico de caja negra diseñado específicamente para un avión específico: este desarrollo específico puede incluirse en el software de aplicación y en el software de sistemas porque está diseñado para hacer que un dispositivo funcione específicamente y este dispositivo depende específicamente de ese software para arrancar y ejecutar otro componente que abarque o haga que la caja negra funcione: supongamos ahora que el mismo desarrollador de software ha desarrollado un componente adicional para esa caja negra para permitir que los usuarios accedan a la caja negra y vean la ubicación actual del avión: ese componente, ya sea que se esté ejecutando en la caja negra o en un dispositivo móvil, pertenece al software de la aplicación.
Respuesta
Hay pésimos ingenieros de software. Simplemente hay ingenieros de software malos. Hay ingenieros de software mediocres. Hay ingenieros de software bastante buenos. Hay buenos ingenieros de software. Hay grandes ingenieros de software.
Y hay ingenieros de software que entregan software a tiempo y dentro del presupuesto. Dios le ayude si tiene que mantener ese software, pero fue a tiempo y por debajo del presupuesto.
Pero en serio …
Esta lista no es exhaustiva. Además, el mismo SWE podría desempeñar varios roles, quizás en diferentes momentos y quizás en diferentes momentos. Por cierto, estas no son las mejores prácticas.
Hay SWE que redactan documentos de requisitos. Puede que ni siquiera sepan programar, pero comprenden los requisitos comerciales y traducen los requisitos comerciales en requisitos del programa.
Hay diseñadores que toman los requisitos y crean un diseño de software. Por lo general, su salida es algo como un diagrama UML o un diagrama de flujo (¡horrores!) O un diagrama de flujo de datos o algún tipo de pseudocódigo. También hacen con frecuencia un análisis de varios diseños competitivos para ver cuál es «óptimo». También elaboran un plan de prueba.
Luego están los ingenieros de desarrollo de software (SDE) quienes realmente convierten los requisitos en código. Solíamos llamar a estas personas «programadores» porque escribían programas, pero esa palabra ha caído en desuso (hoy en día, todos son ingenieros o científicos. Los bibliotecarios son ahora científicos bibliotecarios. Los padres que se quedan en casa son ingenieros domésticos. Los conserjes son ahora son ingenieros de construcción. Los conductores de camiones son ahora ingenieros de operaciones de transporte, etc. Ellos prueban el software de acuerdo con el plan de prueba. Por lo general, hay dos fases de prueba: pruebas unitarias y pruebas del sistema.
Finalmente, el software pasa a los ingenieros de versiones. No soy exactamente lo que ellos hacen, porque lo fui por un tiempo.
También hay redactores técnicos que escriben documentación del cliente e ingenieros de soporte que ayudan a los clientes cuando algo sale mal.
Hay ingenieros de soporte de ventas y su trabajo es deslumbrarlos con brillo o desconcertarlos con tonterías. Me han dicho que sería bueno en eso. Eso me preocupa.