¿Qué es un ingeniero de herramientas de software? ¿En qué se diferencia de un ingeniero de aplicaciones de software? ¿Cuál es mejor?

No puedo decidir cuál sería mejor. Ambos tienen sus ventajas y desventajas.

Esto es, si entiendo los matices de los títulos. Sus ideas sobre lo que significa ser un ingeniero de herramientas de software pueden diferir de las mías. Lo mismo para el ingeniero de software de aplicaciones. Pero en un momento o más de mi carrera me he considerado como todo o un poco como ambos.

Como ingeniero de software de aplicación usted está escribiendo una aplicación que será utilizada por los usuarios finales. Tendrá que preocuparse por la interfaz y la experiencia del usuario. Tendrá que preocuparse de que su aplicación no funcione y de los informes de fallos que recibirá. Tendrá que preocuparse por las peticiones de características. Tendrá que preocuparse por la utilidad de su aplicación. Como ejemplo, considero que un IDE que [escribí/estoy escribiendo] para el desarrollo de juegos de NES es una aplicación. Por supuesto, no lo escribí como parte de mi trabajo habitual, así que no es realmente un trabajo que hice como "ingeniero de software de aplicaciones". Pero he hecho cosas similares en mi trabajo diario. Ahora, esta cosa es definitivamente una aplicación de nicho. No es muy útil para nadie más que para los desarrolladores de juegos extravagantes que odian la línea de comandos y desean que haya un IDE para lo que quieren hacer. Pero constantemente recibo correos electrónicos con sugerencias de características, o con quejas de "no se construye para mí", o "se bloquea si yo". Hago lo que puedo para apoyar a estas personas. Si se tratara de una aplicación escrita para mi trabajo diario, el apoyo sería necesario. Tal y como está, es de código abierto, así que me pongo a ello cuando/si puedo.

Como ingeniero de herramientas de software podrías estar escribiendo una herramienta que sería utilizada por los usuarios finales. Podrías estar escribiendo una herramienta que será invocada por un motor de construcción automatizado. Usted podría estar escribiendo una herramienta que es un motor de construcción automatizado. Las herramientas son enormes. De hecho, es un poco difícil diferenciar entre "esta cosa es una herramienta escrita por un ingeniero de herramientas de software" y "esta cosa es una aplicación escrita por un ingeniero de software de aplicación". He escrito herramientas que son aplicaciones independientes, como una interfaz gráfica de usuario para crear archivos binarios a partir de un conjunto de entradas XML [no preguntes], una interfaz gráfica de usuario para monitorizar transacciones Ethernet y serie, una interfaz gráfica de usuario para una herramienta de mantenimiento de prueba de concepto, etc. He escrito herramientas que se basan en la línea de comandos y sólo se invocan como un paso profundo en algún proceso de construcción.

En la actualidad, no podría elegir uno sobre el otro porque ambos son tan vastos. El software de aplicación [pensando en cosas como Microsoft Word, etc.] es divertido porque estás creando algo inmediatamente útil. Pero al mismo tiempo es estresante porque... bueno... los usuarios. Software de herramientas [pensando en cosas como WinZip, Wireshark, 'dd', ...]

¿Ves por dónde voy? Las herramientas también son aplicaciones. Wireshark es una herramienta. No... es una aplicación. Sí, pero es una herramienta que te permite ver el tráfico de la red. Sí, pero la considero una aplicación porque tiene una interfaz gráfica.

Podría discutir conmigo mismo todo el día, supongo. Espero que esto ayude. O no.