¿Qué diferencia a un desarrollador de software de un programador?
Cuando hablo con la gente fuera de mi ámbito de trabajo me suelen preguntar -"Oye Fred, ¿esos clientes "informáticos" son todos unos frikis tremendos verdad?"-. Y yo les suelo contestar, con gesto algo circunspecto -"Pues hay de todo en la villa del Señor, como en todas partes supongo..."-.
Pero no contento con esta explicación tiendo a profundizar más en el tema, quizás porque soy una persona que en general me río de los estereotipos y de las etiquetas que existen en el subconsciente colectivo, aunque yo mismo también peco de ello y contribuyo a que existan (en estos casos me río de mí mismo cuando me doy cuenta del ridículo que estoy haciendo).
Y con la misma les explico que en la informática y la computación hay muchos campos, que hay especialistas en hardware y en sistemas, que hay especialistas en software, y que dentro del software hay a su vez personas que se dedican a la programación en sentido estricto y otras que se dedican a al análisis y al desarrollo de aplicaciones
Llegados a este punto les explico que los clientes y las personas que se acercan a Velneo se dedican en su gran mayoría al desarrollo de aplicaciones empresariales y de software de gestión. Que además de programar, son analistas que "dibujan" como fluye la información en una empresa para luego plasmarla en un desarrollo, en una aplicación que gestiona datos.
Muchos se sorprenden. De repente caen en la cuenta de que los desarrolladores se tienen que vestir de corbata, visitar al cliente, hacer demos y hacer labores comerciales además de todo la enjundia técnico de programar aplicaciones que funcionen.
Y ahí es cuando empiezan a entender la diferencia entre un desarrollador de software y un programador. Y entonces es cuando comprenden mejor que el perfil de los clientes de Velneo no es el de un programador en el sentido más restrictivo del término, sino de un analista-programador, de un desarrollador de aplicaciones para empresas.
¿Qué es un desarrollador de software?
La definición que existe en la Wikipedia de desarrollador de software está bastante bien, aunque la definición que la comunidad “wikipedista” ha elaborado en inglés me parece más precisa y completa.
En la primera parte de la definición se aclara que un desarrollador de software es una persona u organización encargada de aspectos que van más allá de picar código y del diseño dentro del proceso de desarrollo del software, y que en general se puede definir como la gestión de proyectos de desarrollo de software. Se especifica que a los desarrolladores de software también se les denomina analistas de software.
Tras esta primera aclaración se explica que cada vez más la diferenciación entre el diseño de sistemas, el desarrollo de software y la programación es cada vez más pronunciada y aparente a medida que pasa el tiempo.
Yo estoy de acuerdo con esta idea, aunque está claro que existen muchas opiniones y debates en torno a los límites exactos entre unas tareas y otras. Pero la parte de la definición de Wikipedia que más me gusta es la enumeración de las tareas que suele desempeñar un desarrollador de software que no hace un programador. El desarrollador de software suele desempeñar todas estas tareas:
- 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 supervisión del proceso de arranque de prueba de la aplicación
- mantenimiento
En relación con este tema, Eric Sink, autor del muy recomendable The Business of Software, recomienda a las ISV's ("Independent Software Vendors", autónomos y pequeñas empresas de desarrollo de aplicaciones) contratar a desarrolladores y no a programadores -programador entendido como profesional de escribir código que no está dispuesto a hacer muchas de las tareas enumeradas arriba-.
Y claro, en las empresas grandes las tareas enumeradas arriba las realizan entre varias personas, pero en un departamento de programación o en una PYME dedicada al desarrollo de aplicaciones, en muchos casos hay una sola persona que se dedica a hacerlo todo.
Y aquí es cuando entra Velneo, una de las plataformas de desarrollo de aplicaciones empresariales más rentables que existe en el mercado.
¿Qué diferencia a un desarrollador de software de un programador en 2024?
Aunque estos términos a menudo se utilizan indistintamente, hay algunas diferencias sutiles entre un desarrollador de software y un programador:
1. Enfoque: Un programador se centra principalmente en escribir y depurar código, siguiendo las especificaciones proporcionadas por otros. Por otro lado, un desarrollador de software abarca una visión más amplia del proceso de creación de software, involucrándose en el diseño, arquitectura, implementación, pruebas y mantenimiento de aplicaciones o sistemas.
2. Habilidades técnicas: Los programadores suelen dominar uno o varios lenguajes de programación y se especializan en escribir código eficiente y optimizado. Los desarrolladores de software, además de las habilidades de programación, también tienen conocimientos en áreas como diseño de software, arquitectura de sistemas, gestión de proyectos y pruebas de software.
3. Responsabilidades: Un programador se enfoca en convertir las especificaciones en código ejecutable, mientras que un desarrollador de software participa en la toma de decisiones sobre el diseño y la arquitectura del sistema, colabora con otros miembros del equipo, como diseñadores y analistas de negocio, y puede estar involucrado en la supervisión de otros programadores.
En resumen, un desarrollador de software tiene un enfoque más amplio y suele asumir un rol más estratégico en un proyecto de software, mientras que un programador se enfoca en la creación y depuración del código en sí. Sin embargo, estos roles pueden variar según la organización y el contexto del proyecto.