Qual é a diferença dos modelos de desenvolvimento push and pull?

14

Eu estava lendo Extreme Programming Explained, Second Edition e no capítulo 11 "The Theory of Constraints", os autores falam sobre o antigo e obsoleto modelo de desenvolvimento "push" e o modo XP, o modelo "pull" de desenvolvimento . Parece um conceito bastante importante, mas são necessários apenas um parágrafo muito pequeno e duas imagens que são meras ilustrações do processo "cascata" e iterativo, nada específico sobre esses modelos, exceto pela legenda da imagem. Eu procurei e ele não vai mais longe no resto do livro. Também não encontrei explicações ou discussões adicionais sobre o assunto na Internet.

Se a única diferença é que uma é "cascata" e a outra é iterativa , por que empurrar e por que puxar?

Alguém entende qual é realmente a diferença entre os dois e dá alguns bons exemplos?

michelpm
fonte
youtube.com/watch?v=OSKL1Ph0eQc
jfrankcarr 18/03/2012
1
Contínuo vs. incremental é outro conceito subjacente que pode ser confuso. Por exemplo, XP é um sistema de extração incremental, enquanto o Kanban depende de extração contínua (ou seja, sem sprints com tempo definido).
Michael

Respostas:

15

A diferença entre um sistema push e pull é como as unidades de trabalho são atribuídas à pessoa que executará essa unidade de trabalho. O conceito de push and pull não é exclusivo do desenvolvimento de software - a idéia se origina do gerenciamento de logística e da cadeia de suprimentos .

Em um sistema push, algum tipo de tarefa é criada e depois atribuída a um desenvolvedor. Uma tarefa pode ser qualquer coisa, desde a implementação de um requisito (ou um componente necessário para atendê-lo) até uma correção de bug ou um documento a ser gravado. Alguém, geralmente algum tipo de gerente ou líder de equipe, pega as unidades de trabalho que precisam ser feitas e as aloca para os membros da equipe para concluir. Simplesmente, o trabalho é empurrado para as pessoas que o farão.

Em um sistema pull, as tarefas que devem ser executadas são armazenadas em uma fila, geralmente uma fila de prioridades. Um exemplo pode ser o backlog do produto e sprint do Scrum, que contém histórias de usuários que devem ser feitas. Um desenvolvedor que atualmente não está trabalhando em nada vai para a fila e tira a história de maior prioridade que é capaz de fazer e trabalhar nela. As pessoas que estão fazendo o trabalho tiram o trabalho de uma lista e o fazem.

O conceito de push and pull não está relacionado ao desenvolvimento iterativo / incremental versus sequencial. Uma equipe que usa técnicas iterativas / incrementais / ágeis pode usar um sistema push, enquanto uma equipe que usa desenvolvimento sequencial pode usar um sistema pull. No entanto, normalmente, os métodos ágeis (XP, Scrum) favorecem equipes auto-organizadas e, portanto, puxam sistemas.

Para obter mais informações, você pode estar interessado neste post no Push vs. Pull in Scrum . O Kanban também pode ser interessante - o Kanban é uma metodologia que vem da manufatura, mas pode ser aplicada ao desenvolvimento de software , que enfatiza o desenvolvimento just-in-time e reduz a sobrecarga dos trabalhadores. O Kanban também está relacionado e é frequentemente usado com o Lean , outro conceito de fabricação que pode ser aplicado ao desenvolvimento de software .

Thomas Owens
fonte
Agora que eu entendo, vejo que não é realmente explicado no livro, apenas usado. Gosto de meus livros, mas esse parágrafo não era apenas inútil, mas enganador.
Michelpm 18/03/12
@michelpm Eu não sou o dono do livro, então não posso comentar sobre a validade do que eles estão dizendo, mas nunca ouvi falar de empurrar e puxar usado de qualquer outra maneira que como descrevi. Talvez se você puder editar sua pergunta para conter o parágrafo ou dois completos que descrevem o push and pull, eu posso refinar ainda mais essa resposta.
Thomas Owens
As imagens associaram especificamente a cascata ao push, o que entendo agora é que não é uma regra e realmente não ajuda a entender os modelos. Não foi isso que você disse?
Michelpm
1
@michelpm É isso mesmo que não é uma regra. Geralmente, os modelos seqüenciais são push e os métodos ágeis tendem a ser pull, mas não precisa ser assim.
Thomas Owens