¿Cuáles son los distintos ámbitos de la industria del software?

Asumo que por dominios te refieres a diferentes campos dentro de la industria del software. Esta respuesta NO cubrirá todos y cada uno de los campos. Pero intentaré incluir todo lo posible basándome en mi conocimiento de la industria.

La industria del software consiste en dos tipos de empresas - basadas en el servicio y en el producto.

Entendamos qué es una empresa basada en el servicio. Proporcionan servicios de desarrollo de software para otras grandes empresas de software o instituciones gubernamentales/instituciones financieras/hospitales, etc. En general, no tienen su propio producto pero hay algunas excepciones.

Diferentes roles/equipo en una empresa basada en servicios

Analista de negocio: Digamos que hay una empresa XYX software Pvt LTD y que tienen un gobierno como cliente. El analista de negocios es el punto de contacto entre las dos partes. Discutirá con el gobierno sus necesidades. Los requisitos no son más que las características que el cliente quiere en su software. Como un analista de negocios interactúa directamente con el cliente, él / ella debe tener grandes habilidades de comunicación.

Gerente de Proyecto/Líder: Supongamos que el contrato está cerrado entre el gobierno y la empresa. La empresa desarrollará el software para el gobierno. La empresa ha conseguido el proyecto. El director del proyecto es el responsable del mismo. El director delega las tareas a los respectivos miembros del equipo, hace un seguimiento de las tareas y gestiona todo el equipo.

Equipo de desarrollo: Hay diferentes etapas del ciclo de desarrollo de software. Hasta ahora hemos obtenido los requisitos del cliente. Antes de pasar directamente a la fase de desarrollo, el Arquitecto de Soluciones/Líder Técnico que forma parte del equipo de desarrollo o más bien el jefe del equipo de desarrollo diseñará la arquitectura del proyecto. (A veces dará las entradas y dejará que la gente la diseñe) Para realmente implementar o desarrollar el software. La arquitectura o infraestructura es la base de cualquier proyecto. El arquitecto decidirá qué pilas de tecnología son las más adecuadas para el proyecto. Decidirá qué lenguaje de programación utilizar, qué base de datos utilizar, qué patrones de diseño utilizar, qué proveedor de la nube utilizar, entre otras cosas. Una vez que la arquitectura y el diseño están listos, llega la fase de implementación. Dependiendo de la naturaleza del software, el equipo se compone de desarrolladores web con experiencia en el desarrollo del front-end (si ves un sitio web bonito, ¡gracias a un desarrollador web!). JavaScript es el lenguaje de desarrollo front-end más popular y existen frameworks como ANGULAR y ReactJS. Para simplificar, se puede decir que los frameworks facilitan el trabajo del desarrollador. Hay tipos que se encargan del desarrollo backend. Tareas que suceden en segundo plano. Por ejemplo, si vas a la web de Amazon y buscas algo. Es responsabilidad del desarrollador de backend escribir el código que entenderá tu petición, se conectará a la base de datos y te devolverá lo que has pedido. Lo estoy simplificando. Es mucho más que eso. Java es el lenguaje de backend que conozco y en el que trabajo. También hay otros. Tanto los desarrolladores web como los de back-end trabajan juntos para construir el software. Hay otro perfil llamado desarrollador full-stack que se supone que tiene experiencia en ambos.

Equipo de control de calidad: Ahora digamos que se construye una pequeña característica. Tiene que funcionar según las expectativas del cliente. El equipo de calidad se asegura de que todo lo que se está desarrollando está en buenas condiciones y funciona según lo esperado. Hay dos tipos de pruebas: manuales y automáticas. En las pruebas automatizadas, el probador escribe el código. Hay diferentes marcos de trabajo. Selenium-Java es el más popular para automatizar el proceso de pruebas.

Para una empresa basada en servicios, estas son las principales funciones. Puede que me haya olvidado de alguna, pero ya te has hecho una idea.

Para una empresa basada en productos que desarrolla su propio producto de software (Uber, Ola, Amazon, Flipkart, Adobe son empresas de productos) para los usuarios, además de los equipos mencionados anteriormente, hay algunos más.

Equipo de UX: Este equipo juega un gran papel en la etapa de diseño del producto. Ellos harán una lluvia de ideas y tratarán de analizar la perspectiva del usuario. ¿Qué les gustará a los usuarios? ¿Cómo hacer que un sitio web sea fácil de usar? Si ves un sitio web bonito y fácil de usar. ¡Gracias a un diseñador de UX! Crearán maquetas. Tienen experiencia en Adobe Illustrator y Photoshop.

Administración de bases de datos: La base de datos es una parte integral de cualquier proyecto y es bueno tener un equipo dedicado a ella. La tarea principal es diseñar, implementar y mantener la base de datos. SQL es el requisito básico para convertirse en un administrador de bases de datos.

Equipo de despliegue: Una vez que el software es desarrollado y probado a fondo, debe ser entregado al cliente o alojado en los servidores donde el cliente puede acceder. Esto es manejado por el equipo de despliegue.

Otros dominios incluyen el equipo de pruebas de rendimiento, equipo de soporte de aplicaciones.