¿Qué hace un ingeniero de software? La respuesta simple es que él o ella está involucrado en la ingeniería de software, el proceso de aplicar los principios de ingeniería a los productos de software.
Sin embargo, realmente hay muchos detalles y matices al describir lo que hacen los ingenieros de software en el mundo del software. Nos adentraremos en algunos de estos mientras observamos «un día en la vida» de un ingeniero de software que trabaja para crear todas las excelentes cosas digitales que usamos todos los días. (Para obtener más información sobre el rol de alguien en el campo, consulte Cómo llegué aquí: 12 preguntas con el escritor e ingeniero de software David Auerbach).
Ciclo de vida del desarrollo de programas
Para comprender el papel del ingeniero de software, es útil conocer el ciclo de vida del desarrollo de software (SDLC).
El ciclo de vida del desarrollo de software implica varias fases clave, a menudo descritas como requisitos de planificación, diseño, codificación, prueba, implementación y entrega (tomar o realizar varios pasos de acuerdo con los procesos propietarios).
«El software comienza con el problema que estamos tratando de resolver», dice John Quigley de Value Transformation LLC, describiendo el ciclo de vida de desarrollo de software convencional, comenzando con algo de lo que sucede al principio del proceso. “Esto se articulará en algún tipo de documento y es el resultado de entrevistas con clientes o personas que sufren el problema… El documento describirá cómo se ve el problema, lo que ayudará a generar ideas para compararlo y resolverlo. Ese será el enfoque de este documento, establecer lo que estamos tratando de lograr».
En la fase de requisitos, dice, los ingenieros establecen la descripción técnica específica del producto, tanto del hardware (si lo hay) como del software.
Luego está la codificación: «Los ingenieros de software escribirán las instrucciones específicas en el código que producirá el producto deseado que cumpla con los requisitos específicos», dice Quigley sobre la fase de codificación.
Después de eso, dice, están las pruebas y luego otro conjunto de pasos que llevan el software sólido a un entorno de producción. Hacia el final del proceso, hay espacio para varias ideas sobre implementación e implementación. Quigley también agrega que un nuevo modelo «ágil» para SDLC funciona un poco diferente.
“En el mundo ágil, las cosas se ven mucho [the same] pero las iteraciones son más pequeñas y más juntas”, dice Quigley. «El requisito se puede administrar a través de historias de usuario, que son de naturaleza menos técnica y están más escritas para comprender la aplicación, de modo que los ingenieros de software puedan hacer inferencias y deducir los atributos clave requeridos en función del uso real».
El variado rol del ingeniero de software
Dado que el ciclo de vida del desarrollo de software tiene varias fases y operaciones, tiene sentido que el trabajo del ingeniero de software también varíe.
«Un ingeniero de software tiene un papel más amplio que la mayoría en la creación de soluciones de software», escribe Samuel Malachowsky, profesor del Instituto de Tecnología de Rochester. «Cada elemento del SDLC tiene especialistas: RE y ventas para las etapas iniciales, arquitectos para la fase de diseño, codificadores/programadores para la construcción, control de calidad para verificación/prueba, TI para implementación/mantenimiento y gerentes de proyecto para el movimiento y la gestión. de cada miembro/fase del equipo, pero se espera que los ingenieros de software apliquen ampliamente a todo el proceso. Con eso en mente, una mejor pregunta podría ser preguntar qué no hace un ingeniero de software”.
Aquí hay otro punto interesante que Malachowsky hace sobre la diferencia entre TI e ingeniería de software, que revela mucho sobre cómo es el trabajo típico de un ingeniero de software:
«La TI es operativa y repetitiva, mientras que la ingeniería gira en torno a nuevos problemas que deben resolverse como proyectos únicos», dice. “Es mucho más probable que el personal de TI busque certificaciones individuales basadas en herramientas debido a esta repetición. A diferencia de algo como Ingeniería Informática, muestra dónde se cumplen los requisitos: CE tiende a centrarse en resolver el problema con el hardware, con el software que lo respalda. SE resuelve el problema con el software, con el hardware brindando soporte”.
El ingeniero de software y los equipos de proyecto
En muchas empresas, los ingenieros de software se agrupan y se les asignan funciones en función de su papel en el proceso complejo.
Brennan Meagher describe un ejemplo de TeleTracking, una empresa que aparece en los titulares sobre innovación en el cuidado de la salud en Fierce Healthcare, American College of Emergency Physicians, Health Data Management, Healthcare IT News y otros lugares.
“En TeleTracking, los ingenieros de software son responsables de codificar y probar todos los módulos y aplicaciones que forman parte de la plataforma de TeleTracking”, dice Meagher. «También ayuda a desarrollar soluciones de software y producciones. Esto incluye investigar, diseñar, documentar y desarrollar nuevo software. En resumen, nuestros ingenieros de software crean las soluciones de software que se alinean con la visión técnica de TeleTracking para mejorar el acceso de los pacientes”.
Puede imaginar a estos profesionales en un campus corporativo, primero redactando, luego modificando el modelo, luego probando, en equipos, conduciendo cuidadosamente un proyecto hasta su finalización.
«Un ejemplo de algo de lo que los ingenieros de software son responsables de manera regular podría incluir: escribir, depurar, probar unidades y probar el código de rendimiento en todas las capas de la aplicación», dice Meaghan. «Esto incluye el front-end (web), la capa intermedia (servicios web) y las capas de acceso a datos».
La conclusión es que los ingenieros de software tienen trabajos diferentes y especializados. Todos ellos deben comprender algunos de los conceptos básicos de la codificación, pero algunos deben profundizar en los detalles de las pruebas, la transparencia de los requisitos de diseño o, en algunos casos, el mundo del desarrollo ágil.
Luego apareció el modelo DevOps y fusionó muchos procesos iterativos que se enfatizaron de manera muy específica y categórica en el modelo convencional. Entonces, el rol del ingeniero de software está cambiando. (Para obtener más información sobre DevOps, consulte Los gerentes de DevOps explican lo que hacen).
Esto le da poco para continuar cuando se dispone a aprender más sobre el trabajo de estos profesionales centrales de producción de software. El ingeniero de software ha sido descrito como la «navaja suiza» del diseño y la creación de software, y puede terminar desempeñando muchas funciones en una empresa ocupada.