Histórias de usuário e requisitos são bestas muito diferentes.
Exigências
Os requisitos pressupõem que o design do aplicativo seja feito antecipadamente e que o desenvolvimento seja a implementação desse design. Portanto, os requisitos se concentram em como implementar uma funcionalidade.
Exemplo de requisito:
- Crie um formulário de contato do usuário com os seguintes campos: nome, sobrenome, email, texto livre e um botão de envio. Quando o botão enviar é pressionado, um email é enviado à nossa equipe de suporte.
Histórias de usuários
As histórias do usuário concentram-se no que alcançar e insistem em que o design do produto seja feito no último minuto e seja uma colaboração entre uma pessoa do produto e uma pessoa do desenvolvedor. Os detalhes são decididos durante a implementação com base na oportunidade.
Exemplo de uma história:
- Como Jimmy, o usuário, quero entrar em contato com sua equipe de suporte quando não puder usar o site corretamente para que eles possam me ajudar.
Qual é a diferença?
Como você pode ver, certamente há uma diferença na quantidade de detalhes fornecidos, mas também há muitas informações disponíveis apenas na história, ou seja, o objetivo que estamos tentando alcançar com esse recurso.
Embora possa parecer que o objetivo seja relativamente sem importância, essa é uma suposição errada no desenvolvimento ágil. Normalmente, existem dois casos em que conhecer o objetivo é muito importante: reduzir o custo de oportunidade e permitir agilidade.
Custo de oportunidade
Se houver suposições ocultas no requisito, pode ser muito difícil de alcançar. Por exemplo: existe um servidor de correio disponível? Caso contrário, o requisito poderá levar muito mais tempo para ser desenvolvido. Em alguns outros casos, uma maneira mais simples de alcançar o mesmo objetivo pode ser perdida por causa do design.
Por outro lado, a história do usuário é sobre um usuário entrando em contato com nosso departamento de suporte. Se o envio de um email for inviável ou muito caro, podemos criar uma solução diferente no local: escrever em um banco de dados, por exemplo, ou usar um formulário via documentos do Google, ou simplesmente colocar um endereço de email em vez do formulário. Isso não pode ser feito facilmente com um requisito, mas é fácil com uma história e uma pessoa do produto presente.
Agilidade
Por esse motivo, com os requisitos, geralmente tendemos a pensar nessas suposições ocultas antecipadamente e a garantir que não haja problemas. Portanto, nesse caso, pode haver um requisito diferente, agendado previamente, que garante a presença de um servidor de correio.
Isso nos leva a outra enorme diferença entre histórias e requisitos, que é a hierarquia . Como exemplifiquei acima, os requisitos devem, por sua própria natureza, ser ordenados em alguma hierarquia natural para que as dependências sejam atendidas. As histórias, por outro lado, concentram-se no propósito e não têm tais restrições.
Isso ocorre por design, já que no ágil é de fundamental importância adicionar, remover, reagendar e modificar histórias, conforme necessário durante a execução do projeto. Os requisitos geralmente podem ser adicionados, às vezes modificados ou removidos, mas geralmente é muito doloroso movê-los por causa de todas as dependências. Simplesmente não é feito com muita frequência. Se você estiver trabalhando com requisitos, sua implementação ágil sofrerá, ou provavelmente não será muito ágil, no sentido de poder abraçar a mudança.