La differenza tra un sistema push e un sistema pull è come le unità di lavoro sono assegnate alla persona che eseguirà quell'unità di lavoro. Il concetto di push and pull non è unico per lo sviluppo del software - l'idea nasce dalla logistica e dalla gestione della supply chain .
In un sistema push, viene creato un qualche tipo di compito e quindi assegnato a uno sviluppatore. Un'attività può essere qualsiasi cosa dall'implementazione di un requisito (o di un componente necessario per realizzare un requisito) a una correzione di bug di un documento da scrivere. Qualcuno, di solito una specie di manager o team leader, prende le unità di lavoro che devono essere fatte e poi le assegna ai membri del team per completare. Semplicemente, il lavoro viene spinto verso le persone che lo faranno.
In un sistema pull, le attività che devono essere eseguite sono archiviate in una coda, spesso una coda di priorità di ordinamento. Un esempio potrebbero essere i backlog di prodotto e di sprint di Scrum, che contengono storie di utenti che devono essere fatte. Uno sviluppatore che al momento non sta lavorando su qualcosa andrà in coda e decollerà la storia con la priorità più alta che è in grado di fare e lavorare su di essa. Le persone che stanno facendo il lavoro estrapolano il lavoro da un elenco e lo fanno.
Il concetto di push e pull non è correlato allo sviluppo iterativo / incrementale rispetto allo sviluppo sequenziale. Un team che utilizza tecniche iterative / incrementali / agili potrebbe utilizzare un sistema push, mentre un team che utilizza lo sviluppo sequenziale potrebbe utilizzare un sistema pull. Tuttavia, in genere, i metodi agili (XP, Scrum) favoriscono i team auto-organizzanti e quindi i sistemi pull.
Per ulteriori informazioni, potresti essere interessato a questo post del blog su Push vs. Pull in Scrum . Kanban potrebbe anche essere di interesse - Kanban è una metodologia che viene dalla produzione, ma può essere applicato allo sviluppo di software , che enfatizza lo sviluppo just-in-time e riduce il sovraccarico sui lavoratori. Kanban è anche correlato e spesso usato con Lean , un altro concetto di produzione che può essere applicato allo sviluppo di software .