SheCanCode

¿La respuesta? Bueno, depende de a quién le preguntes

No hay una distinción oficial entre los roles, ya que las empresas utilizan su propia experiencia y conocimiento para definir las descripciones que se adaptan a sus necesidades. Para confundir aún más el asunto, también puede haber variaciones regionales, con una clara diferencia en la educación. Sin embargo, la variedad de fuentes de datos puede ser evaluada y analizada para sacar conclusiones.

Según Computer Science Degree Hub los desarrolladores de software y los ingenieros de software tienen roles separados:

«La ingeniería de software se refiere a la aplicación de principios de ingeniería para crear software. Los ingenieros de software participan en el ciclo de vida del desarrollo de software conectando las necesidades del cliente con las soluciones tecnológicas aplicables. Así, desarrollan sistemáticamente procesos para proporcionar funciones específicas. En definitiva, la ingeniería de software significa utilizar conceptos de ingeniería para desarrollar software.

Por otro lado, los desarrolladores de software son la fuerza creativa impulsora de los programas. Los desarrolladores de software son responsables de todo el proceso de desarrollo. Son los que colaboran con el cliente para crear un diseño teórico. A continuación, hacen que los programadores informáticos creen el código necesario para que el software funcione correctamente. Los programadores informáticos prueban y solucionan los problemas junto con los desarrolladores de software. Los desarrolladores de software proporcionan el liderazgo del proyecto y la orientación técnica a lo largo de cada etapa del ciclo de vida del desarrollo de software»

Udacity está de acuerdo en que existe una fuerte separación:

«Los términos Desarrollador de Software e Ingeniero de Software, en contra de la creencia popular, no son intercambiables. Un desarrollador sabe cómo codificar y puede tener las habilidades técnicas necesarias para construir productos significativos. Un ingeniero de software sigue un proceso sistemático de comprensión de los requisitos, trabajando con las partes interesadas y desarrollando una solución que satisfaga sus necesidades. Un desarrollador tiende a trabajar solo. Un ingeniero de software forma parte de un equipo más amplio»
¿Qué significa esto en la práctica? Exploremos la diferencia con más detalle.

Habilidades del ingeniero de software y descripciones del trabajo

Un ingeniero de software es un desarrollador de software altamente competente que es capaz de gestionar un sistema complejo. Una persona que no sólo es capaz de construir una aplicación totalmente funcional, sino que tiene la experiencia suficiente para saber cómo construirla de una manera que es fácil de refactorizar, auto-documentada, y como resultado más fácil de depurar.
Desempeñarán un papel activo como líder, consultor y colaborador individual en varios proyectos. Deben proporcionar asesoramiento analítico en la identificación e implementación de nuevos usos de TI con el fin de ayudar a los clientes y a la empresa a alcanzar los objetivos estratégicos. Deben ser capaces de gestionar los recursos, coordinar las tareas de desarrollo y supervisar los planes de proyectos técnicos. Suelen colaborar con el personal de TI, de operaciones y de desarrollo a lo largo del ciclo de vida del desarrollo de software
Saben que la consideración y la previsión en la fase inicial pueden ahorrar días de trabajo y dolores de cabeza en el futuro. No se dedican a crear el código más inteligente, sino a hacer que su código sea obvio. Saben que el mejor código es el que nunca hay que escribir.
Se espera que los ingenieros de software:

  • Tengan conocimientos técnicos, con experiencia trabajando en una amplia gama de proyectos

  • Sean competentes en el diseño de patrones para crear sistemas resistentes y tolerantes a fallos

  • Utilicen la automatización de pruebas utilizando herramientas como Gherkin, Cucumber o Ansible

  • Saben crear y mantener la arquitectura de TI, los almacenes de datos a gran escala y los sistemas basados en la nube.

  • Build scalable deployment pipelines, to support Continuous Integration and Continuous Delivery

  • They must be able to work effectively by themselves and with remote teams.

  • Senior software engineers must oversee complex systems analysis, design and development programs.

A Software Engineer role will typically involve:

  • Research, design, develop and test their software as well as compiling and distributing software over the network

  • Modify existing software is to resolve defects, to adopt a new hardware or improve its performance.

  • Analyze the user needs and assess software requirement including design feasibility and cost/time constraints.

  • Consultar con los clientes en relación con la especificación y el diseño.

  • Coordinar el software del sistema para su despliegue e instalación

  • Supervisar es el trabajo de los tecnólogos e ingenieros

Habilidades del desarrollador de software y descripción del trabajo

Un desarrollador de software no sólo es responsable de la escritura de código, también debe revisar el sistema actual, haciendo ideas para las mejoras, incluyendo el esfuerzo necesario para hacerlo. Un desarrollador de software trabajará estrechamente con los analistas, los usuarios finales/comercialización y los diseñadores.
Los desarrolladores de software también deben asegurarse de que su código funciona probándolo, utilizando situaciones controladas y reales antes de que pueda salir al mercado. Deben tener un ojo para la perfección con el fin de resolver adecuadamente los errores y las revisiones de los programas para aumentar la eficiencia operativa.
El mejor desarrollador de software es creativo y tiene la experiencia técnica para llegar a una idea innovadora para resolver un problema del cliente y tienen la experiencia suficiente para ver muchos problemas antes de que surjan.
Un desarrollador de software suele seguir una metodología de ciclo de vida de desarrollo o un marco de entrega como Scrum, XP o Kanban.
Los desarrolladores de software deben tener:

  • Excelentes habilidades analíticas porque tendrán que comparar continuamente las necesidades con las capacidades del software.

  • Deben estar familiarizados con los lenguajes informáticos para poder trabajar eficazmente con los programas informáticos, como Java, C#, C++, Python

  • Tener experiencia con el uso de herramientas de código abierto como GitHub

  • Grandes habilidades de comunicación y retroalimentación, con una gran atención a los detalles, ya que los pequeños errores podrían dar lugar a grandes problemas

  • Estar orientado a los detalles les ayudará a gestionar proyectos simultáneos en diferentes etapas de desarrollo.

  • Entender la lógica del código incluso en lenguajes con los que no están familiarizados.

  • Los desarrolladores de software deben supervisar continuamente los cambios que realizan, incluyendo la resolución de defectos, para garantizar una alta calidad y consistencia. En consecuencia, deben alternar constantemente entre el trabajo asignado, gestionando los plazos y los horarios.

    Resumen

    Resumiendo las principales diferencias entre el desarrollador y el ingeniero de software:
    Un desarrollador ejecuta. Sus talentos suelen centrarse en una sola área. Sin la necesidad de la «gran imagen». Así que el desarrollador de software se centra principalmente en el desarrollo de código que forma parte del ciclo de desarrollo de software.
    Un ingeniero diseña y planifica aplicando los principios de la ingeniería al desarrollo de software. Siempre es consciente del «panorama general», con talentos en muchas áreas. Un ingeniero puede asumir el papel de desarrollador, pero el enfoque principal de un ingeniero reside en la arquitectura.
    Al final, la principal diferencia entre la ingeniería de software y el desarrollo de software es que el segundo supervisa la ingeniería mientras que el primero se centra en crear programas funcionales.
    Cualquiera puede ser desarrollador de software. Si conoces una pequeña cantidad de conceptos de programación, entonces tienes la base para convertirte en Desarrollador de Software. Escriben código sin ningún análisis de rendimiento y escalabilidad. Siempre hay algo nuevo que aprender si eres un desarrollador de software o un ingeniero, con muchas personas que cambian entre las dos funciones en función del proyecto y el cliente.
    Echa un vistazo a la nueva bolsa de trabajo Beta de SheCanCode, que anuncia puestos de trabajo de empresas que se toman en serio la diversidad. Puedes evaluar la diferencia entre los roles actuales de Desarrollador de Software e Ingeniero de Software por ti mismo.