Un problema fondamentale nello sviluppo del software è che i requisiti effettivi per i sistemi sono, nell'istanza generale, non chiari e che, peggio, cambiano (per un numero qualsiasi di ragioni). Ci sono casi in cui questo non è vero ma sono l'eccezione, non la regola.
Le persone non sanno quello che vogliono (anche se di solito capiscono quale problema stanno cercando di risolvere / risolvere) e tutti spesso vengono a conoscenza del divario tra ciò che vogliono e ciò che chiedono quando il prodotto viene consegnato.
Gli approcci "Agili" allo sviluppo del software mirano ad accorciare il ciclo di feedback fornendo poco e spesso per poter imparare dal feedback e adattare i requisiti per adattarsi. Un sacco di discussioni in questo settore sono intorno a fornire valore.
Così agile non si tratta di tecnologia (lo stesso vale per i processi di produzione "Lean" che hanno molto in comune). Detto questo, ci sono un certo numero di pratiche tecniche che facilitano l'agilità indipendentemente dalla metodologia - le cose che rendono il cambiamento gestibile, che lo rendono facile da consegnare ad alta cadenza, e così via - quindi è ragionevole voler parlare di problemi tecnici in un contesto agile.
Un'ultima cosa che nasce dall'obiettivo di essere agili (o snelli) è il valore della comunicazione e dello sviluppo delle persone: la mischia (per esempio) è, o almeno può essere, un mezzo per facilitare la comunicazione tra ingegneri e, fatto giusto, per esporre problemi che ostacolano la consegna