Desarrolladores en Scrum: ¿Cuál es la diferencia entre un programador y un desarrollador?

Los desarrolladores (develpers) del equipo Scrum poseen competencias multidisciplinarias que los hacen más atractivos que los programadores que se dedican exclusivamente a escribir código. Veamos algunas diferencias entre ambos perfiles desde el punto de vista de la agilidad.

A menudo me encuentro frente a situaciones donde se confunde “programador” con “desarrollador”, o más aún, “desarrollador” con “programador”. Veamos cuál es la diferencia entre un programador y un desarrollador (developer) en Scrum.

¿A qué se dedica el programador?

Antes de partir, estamos describiendo al programador aquel que se dedica exclusivamente a escribir código.

La tendencia del desarrollo de software y la agilidad va hacia comprender cada vez más la necesidad de contar con equipos multidisciplinarios, o en otras palabras, personas que contribuyen de distintas maneras al objetivo buscado, en lugar de personas que solo se especialicen en una parte del proceso y que no tengan una visión completa de él.

De esta manera, todos los miembros tanto del Scrum Team como los del Scrum Development Team, son igual de responsables para alcanzar los logros y la existencia de fracasos (si la hubiera). La solución más razonable que algunas organizaciones están ofreciendo frente a los contextos de negocios cambiantes es aumentar la flexibilidad. Incluso es lógico deducir que el hecho de contratar solo especialistas en determinadas áreas generará muchos mayores costos económicos e incluso de comunicación dentro del equipo, lo que puede atentar contra el desarrollo exitoso del producto.

Contratar solo especialistas en determinadas áreas generará muchos mayores costos económicos e incluso de comunicación dentro del equipo.

¿Qué se espera que haga un desarrollador (developer) ágil?

El desarrollador es básicamente quien aunque no hace TODO al mismo tiempo (eso sería un absurdo), conoce el proceso de principio a fin y por eso logra detectar "a tiempo" cualquier "contratiempo" que pudiera surgir. Entre las tareas de un desarrollador se encuentran:

  • Entender el negocio y los objetivos que se están persiguiendo
  • Colaborar con el Scrum Product Owner para identificar las historias de usuario y sus criterios de aceptación
  • Ser protagonista a la hora del armado y mantenimiento del entorno de trabajo
  • Garantizar las prácticas ágiles de desarrollo de software como Integración Continua, Test-driven development (TDD), Acceptance Test Driven Development (ATDD)
  • Participar en el diseño de la solución, tanto lógico como arquitectónico

¿Qué conocimientos técnicos necesitan el Scrum Master y el Scrum Product Owner?

Para que los productos creados sean realmente efectivos y asombrosos, las responsabilidades del desarrollo del producto deben estar compartidas entre todos los involucrados en el proyecto, con la salvedad de que el Scrum Product Owner no requiere, en la mayoría de los casos, tener conocimientos técnicos. ¿Y el Scrum Master? La respuesta es otra pregunta: ¿Cómo podría el Scrum Master remover impedimentos y garantizar al equipo un adecuado entorno de trabajo si no tiene los conocimientos técnicos necesarios de los desarrolladores?:

"Un conocimiento íntimo y detallado de cómo algo funciona incrementa las posibilidades de que el líder ayude al equipo a descubrir las cuestiones técnicas más sutiles que deban ser tratadas” (LaFasto & Larson, When teams work best, 2001, p. 133).

En el fondo, aunque el Scrum Development Team o Equipo de Desarrollo en Scrum sea el encargado principal de desarrollar el producto y naturalmente es quien mejor conoce su desarrollo, el Scrum Master no debería desconocer los aspectos del desarrollo y en algunos casos, hasta debería ser quien mejor los conozca si es que se quieren evitar problemas de comunicación, interpretación y estimación; pero sobre todo, si se pretende alcanzar un objetivo exitoso.

Volviendo al comienzo: lo que necesitamos son verdaderos desarrolladores, personas que cuenten con las herramientas y prácticas necesarias para lograr un proceso de desarrollo exitoso y un producto de alta calidad. Esto no quiere decir que no se necesite también de los programadores, pero no confundamos un desarrollador o developer con un programador. Incluso un excelente programador podría ser un pésimo desarrollador y un Scrum Master que no ha adquirido estas herramientas a lo largo de su formación podría eventualmente ser percibido por el equipo de desarrollo como falto de las habilidades necesarias para cumplir su función.

Un excelente programador podría ser un pésimo desarrollador.

Si podemos entender estas diferencias fundamentales entre lo que es un programador y un desarrollador, y lo que esto significa en el contexto del framework Scrum, habremos dado un paso más hacia un mundo de trabajo ágil mucho más exitoso.