Como lidar com dependências 'externas' no scrum?

13

Se você planejou várias histórias de usuário para um sprint e uma história candidata depende de algum fornecedor externo entregar algo para sua equipe. Por exemplo, um provedor de serviços online que adiciona uma nova chamada de API ao sistema ou habilita sua conta de teste no sistema ou algo semelhante.

Você sabe que está chegando 'em breve'.

Você segue em frente e adiciona a história ao sprint, esperando que eles entreguem o necessário a tempo de você completar sua história ou você espera até o próximo sprint, quando você sabe que estará pronto e poderá começar imediatamente, mesmo se significa não começar a história o mais cedo possível.

Se o primeiro, como você lida com os pontos da história "não aprendidos", perdidos por causa da dependência? crédito parcial (eek!) ou leve no queixo.

TygerKrash
fonte

Respostas:

12

Por fim, depende se você está 100% confiante de que o provedor externo fornecerá algo que você pode usar no momento em que precisar usá-lo.

Se você não tiver certeza de que eles serão entregues a tempo, não inclua a história no sprint. No entanto, apenas porque eles sempre entregaram no passado, não há garantia de que entregarão desta vez.

Você deve informar ao cliente que essa dependência existe e que precisará aguardar a API (ou qualquer outra coisa) disponível antes de poder agendar o trabalho.

No lado positivo, pode haver aspectos da história que você pode contar - ou seja, desmembrá-la até que você tenha isolado as dependências o máximo possível. Isso pode permitir que você faça parte da história antes que o fornecedor entregue seu trabalho.

Uma coisa que você pode fazer é criar uma interface entre seu código e a API de terceiros. Você codifica para sua interface para que o restante do projeto possa prosseguir e até que a API real use uma simulação para retornar dados de exemplo. Então, quando a API real chegar, basta alterar o código por trás da interface, o que não afetará o restante do aplicativo. Faça isso apenas se concordar com o fornecedor da API de que a interface deles não será alterada (pelo menos não drasticamente).

ChrisF
fonte
Você sugeriria "fingir" a API se não houver muitos problemas?
JeffO 03/10/11
@ JeffO - bem, isso depende. Se você precisar de resultados reais, pode ser um problema e sabe-se que as APIs mudam.
ChrisF
2
@ JeffO Eu não fingiria uma API isoladamente, mas você pode concordar com uma interface comum com a qual possa codificar. Mesmo quando os componentes de terceiros entram, proteger seu código contra chamá-los diretamente não é uma má idéia.
Adam Lear
Portanto, no gerenciamento de projetos, essa é uma discussão sobre riscos.
21714 Jamie Clayton
12

É a equipe que assume o compromisso. Em nossa equipe, se sentimos que estamos esperando (por exemplo) por um desenvolvedor externo, aprendemos a dizer que não estamos dispostos a entender a história. A história não está em um estado adequado para entender.

Há uma chance muito boa de que a entrega atrasada, inesperada ou diferente do recurso externo signifique que suas estimativas e prioridades podem mudar.

Até você ter todas as informações, a equipe não deve ser tão ingênua para pensar que pode completar a história. Se eles dizem que podem, então chega tarde, no formato esperado, ou de modo algum, eles decepcionaram todo mundo.

Parece duro, mas quero expressar meu ponto de vista.

Kieren Johnstone
fonte
4

No Scrum, existe uma definição de done e uma de ready for user stories. Em uma situação como a sua, é importante ter uma definição de pronto que todas as partes interessadas entendam e concordem. Por exemplo, parece muito razoável ter uma linha na sua definição de ready como:

  • Todas as APIs externas necessárias para a história devem ser entregues e testadas.

Se você precisar que essa API agregue valor ao seu produto, o mais lógico é esperar até que tenhamos realmente essa API para iniciar nosso trabalho. Enquanto isso, podemos fazer outros EUA que agregam valor ao produto. Eu realmente não gosto desse EUA com implementações simuladas e similares, se não houver valor real para o cliente, não há EUA, seu desperdício de tempo e recursos. .

AlfredoCasado
fonte
Não há Definição de Pronto na estrutura do Scrum . É uma adição, às vezes um portão de fase tradicional, que algumas organizações usam.
Alan Larimer
2

Se você está esperando por algo que ainda não conhece, não pode planejá-lo, mesmo que tenha 100% de certeza de que será entregue amanhã. Por quê? Porque se você não o conhece, não pode nem mesmo estimar sua complexidade e, se não pode estimar, não pode planejar.

Se você definiu alguma "interface" / "contrato" inicial que deve ser seguida por uma empresa externa, você pode planejar e criar uma simulação de serviço do seu lado. Seu desenvolvimento usará o serviço simulado para que eles não dependam de entrega externa. Ainda o desenvolvimento com simulação deve ser planejado para o sprint, onde o serviço real será entregue porque o recurso desenvolvido e testado contra o mock não foi concluído - ele deve ser testado com o serviço real para ser considerado concluído no final do sprint.

Ladislav Mrnka
fonte
2

Comunicação e acordos

Dois sistemas são integrados por programadores, não pela própria metodologia. Se uma empresa decidiu integrar um sistema externo, haverá um contrato entre (mínimo) 2 entidades. O contrato deve garantir que a integração ocorra . Consequentemente, se o acordo entre as empresas não exigir uma colaboração técnica entre os dois departamentos, o problema não é a metodologia de desenvolvimento. O problema é a metodologia de negócios (basicamente o contrato) .

Dito isto, deve ser considerado um risco durante o planejamento desses casos e, considerando que você não conhece a velocidade da equipe, precisará ser generoso com essas margens.

Como um gerente de projetos pode gerenciar uma dependência de uma equipe externa?

/pm/1400/how-can-a-project-manager-manage-a-dependency-on-an-external-team

marcocs
fonte
1

Se não depender da sua equipe e você puder realizar outras tarefas, aconselho que você a execute apenas quando estiver pronta. Mesmo que você tenha um serviço da web, esquema, interface e / ou contrato de maquete, ele ainda pode ser quebrado (lembra-se da Lei de Murphy?).

Pedro Polonia
fonte