Cuál es la diferencia entre un ingeniero de sistemas, un ingeniero de software, un desarrollador web y un informático?

No hay reglas estrictas para estos títulos en las empresas. En algunas empresas, usted encontrará un poco de solapamiento y / o "mala clasificación". Aquí está mi opinión muy subjetiva sobre las cosas que diferencian estos roles.

Desarrollador web - Trabaja en la presentación de la información en la web, a veces incluyendo la lógica de negocio cuando hay una mala estratificación en una aplicación de varios niveles. Las principales tecnologías utilizadas son HTML, CSS, Javascript y frameworks basados en el navegador como Angular. No se requiere una formación específica, aunque muchos desarrolladores web tienen una educación formal que se concentra en la programación, el diseño de la interfaz de usuario, o CS.

Ingeniero de software - Trabaja en cualquier tarea que requiera el diseño y desarrollo de software. No se limitan a las tecnologías front-end (web). El trabajo puede ser en entornos front-end (web) o back-end (servidor), o en aplicaciones escritas para el escritorio o para dispositivos móviles. Los SWE suelen realizar tareas complejas de diseño y codificación. Programan utilizando cualquier tecnología que sea apropiada, que puede ir desde lenguajes de scripting (por ejemplo, python, ruby, etc.) hasta lenguajes de alto nivel (por ejemplo, C++, Java, Objective C, etc.). Por lo general, se requiere un título de CS o de Ingeniería de Software o equivalente para estos puestos.

Ingeniero de Sistemas - Trabaja en sistemas de una manera más holística a través de múltiples tecnologías (incluyendo software, hardware y procesos humanos). Suelen ocuparse de cuestiones más amplias en el diseño y la creación de sistemas, como los requisitos, la fiabilidad, el rendimiento, el mantenimiento, la verificación, la calidad, el proceso, la logística, etc. Un ingeniero de sistemas suele tener un título en una disciplina de ingeniería.

Informático: suele trabajar en problemas que requieren conocimientos de informática teórica. Si no trabaja directamente en la investigación académica, un informático aplicará sus conocimientos de teoría (por ejemplo, algoritmos, complejidad, teoría del lenguaje, etc.) para crear soluciones a problemas no resueltos, es decir, investigación aplicada. El código escrito por los informáticos suele ser de nivel de prototipo/prueba de concepto. A menudo se requiere un grado avanzado de CS para este tipo de trabajo.

Para poner esto en el contexto de un proyecto específico, considere algo como los mapas de Google. Los desarrolladores web trabajarán en la presentación del mapa en el navegador. Un informático trabajará en los algoritmos para almacenar y procesar eficazmente los datos del mapa. Los ingenieros de software crearán el código a nivel de producción que implementa los algoritmos creados por el informático, específicamente la ingeniería de las partes más prosaicas del sistema para manejar la fiabilidad y la escala. Los ingenieros de sistemas crearán las estrategias para el sistema global, desde el análisis de los requisitos técnicos hasta los procesos que recogen los datos cartográficos (incluida la obtención de información de los satélites y todos esos coches de Google que recogen la información de las calles), pasando por la validación, la actualización, el ciclo de vida de los datos, etc.