Las historias y los requisitos de los usuarios son bestias muy diferentes.
Requisitos
Los requisitos presuponen que el diseño de la aplicación se realiza de antemano y que el desarrollo es la implementación de ese diseño. Por lo tanto, los requisitos se centran en cómo implementar una funcionalidad.
Ejemplo de requerimiento:
- Cree un formulario de contacto de usuario con los siguientes campos: nombre, apellido, correo electrónico, texto libre y un botón de envío. Cuando se presiona el botón Enviar, se envía un correo electrónico a nuestro equipo de soporte.
Historias de usuarios
Las historias de los usuarios se centran en qué lograr e insisten en que el diseño del producto se realiza en el último minuto y que es una colaboración entre una persona productora y una persona desarrolladora. Los detalles se deciden durante la implementación en función de la oportunidad.
Ejemplo de una historia:
- Como Jimmy, el usuario, quiero ponerme en contacto con su equipo de soporte cuando no pueda usar el sitio correctamente para que puedan ayudarme.
¿Cuál es la diferencia?
Como puede ver, ciertamente hay una diferencia en la cantidad de detalles proporcionados, pero también hay mucha información que solo está disponible en la historia, a saber, el propósito que estamos tratando de lograr con esta función.
Si bien puede parecer que el propósito es relativamente poco importante, esta es una suposición errónea en el desarrollo ágil. Normalmente hay dos casos en los que conocer el propósito es muy importante: reducir el costo de oportunidad y permitir la agilidad.
Costo de oportunidad
Si hay supuestos ocultos en el requisito, podría ser muy difícil de lograr. Por ejemplo: ¿hay un servidor de correo disponible? De lo contrario, el requisito puede llevar mucho más tiempo en desarrollarse. En algunos otros casos, se puede perder una forma más simple de lograr el mismo objetivo debido al diseño.
Por el contrario, la historia del usuario trata sobre un usuario que se contacta con nuestro departamento de soporte. Si enviar un correo no es factible o es demasiado costoso, podemos idear una solución diferente en el acto: escribir en una base de datos, por ejemplo, o usar un formulario a través de documentos de Google, o simplemente poner una dirección de correo electrónico en lugar del formulario. Esto no se puede hacer fácilmente con un requisito, pero se hace fácilmente con una historia y una persona de producto presente.
Agilidad
Por esta razón, con los requisitos generalmente tendemos a pensar en estas suposiciones ocultas de antemano y nos aseguramos de que no haya problemas. Entonces, en este caso, podría haber un requisito diferente, programado de antemano, que aseguró que un servidor de correo estuviera presente.
Esto nos lleva a otra gran diferencia entre historias y requisitos que es la jerarquía . Como he ejemplificado anteriormente, los requisitos deben, por su propia naturaleza, ordenarse en alguna jerarquía natural para que se cumplan las dependencias. Las historias, por otro lado, se centran en el propósito y no tienen tales restricciones.
Esto es así por diseño, ya que en ágil es de suma importancia agregar, eliminar, reprogramar y modificar historias según sea necesario durante la ejecución del proyecto. Los requisitos generalmente se pueden agregar, a veces modificar o eliminar, pero generalmente es muy doloroso moverlos debido a todas las dependencias. Simplemente no se hace con mucha frecuencia. Si está trabajando con los requisitos, su implementación ágil sufrirá, o probablemente no será muy ágil en absoluto, en el sentido de poder aceptar el cambio.