
Comienzo con un par de analogías (comparando el desarrollo de software con la construcción de edificios) para facilitar el entendimiento más profundo:
- Un programador de software (que “pica código” en base a unos requisitos) podríamos compararlo con un albañil de la construcción (que usa “el pico y la pala” siguiendo unos planos). Esto lo digo sin ánimo de ofender ni a programadores ni a albañiles jaja.
- Un desarrollador de software es (más o menos) lo mismo que un analista/programador (esto sería un programador —aquí parece que discrepo con algunas de las respuestas— que además es capaz de realizar análisis funcionales y definir los requisitos a partir de las necesidades del cliente, entre otras funciones) y podríamos compararlo con un Arquitecto Técnico (que en la construcción sería un profesional capaz de llevar a cabo la ejecución de una obra: instalaciones, estructuras, sistemas constructivos, topografía, organización de obra, economía, legislación, dirección de obra, calidad, seguridad, organización, materiales, dibujo, etc.).
Para completar la comparativa (pero sobrepasando ya de la cuestión planteada) podríamos decir que por encima del rol de desarrollador (o analista/programador) tenemos al arquitecto de software (que fácilmente se podría comparar con el arquitecto que se encarga en el ámbito de la construcción de proyectar, diseñar, dirigir la construcción y el mantenimiento de edificios y otras estructuras), aunque el arquitecto de software suele intervenir principalmente en proyectos de cierta envergadura (no es una figura imprescindible, y en ocasiones el analista/programador puede tener el rol de este.
Como decía el desarrollador de software se puede encargar de muchas funciones (en contraste con el programador, que normalmente se limitaría a programar), dejo un listado de las mismas:
- Participa en la definición del producto de software que se va a comercializar, incluyendo el análisis de los nichos de mercado al que va dirigido
- Especificaciones del software
- El análisis de requerimientos del software
- Diseño y mejora de prototipos y de demos para validar requerimientos
- El análisis del costo-beneficio, que incluye elegir el tipo de arquitectura y el framework que implica tener claro el presupuesto y el calendario de trabajo
- Diseño
- Programación
- Implementación
- Documentación para los usuarios del software desarrollado
- Testeo de las aplicaciones y supervisón del proceso de arranque de prueba de la aplicación
- Mantenimiento