Benvenuti al mio nuovo libro di Programmazione Agile che ho scritto dopo aver visto come era difficile produrre risultati in un tempo predeterminato.

Il mio obiettivo è trasmettervi tutto quello che ho imparato e far si che lo possiate applicare ai vostri progetti e che questo vi aiuti a ottenere il successo che vi aspettate

Questo libro è applicato al mondo della programmazione però ci sono molte nozioni e spunti che si potranno applicare ad altri campi.

Perché Agile MVP?

In breve, odio non essere produttivo.

Dopo diversi anni che lavoro nel campo informatico, ho abbastanza esperienza ed ho accumulato molti errori che avrei potuto evitare seguendo le tecniche che descriverò più avanti.

TotalFailure

Il mio primo progetto fu un totale fallimento, ho lavorato per circa un anno con uno sviluppatore per pubblicare un programma per gestire i task, progetti e clienti.

Al tempo non conoscevo la importanza della nozioni che mi avrebbero potuto aiutare ed ho aspettato troppo tempo, investito troppi soldi e mi sono ritrovato con un prodotto che faceva molte cose che però non risolvevano nessun problema concreto che gli utenti non potessero risolvere attraverso altri tools che erano già in commercio.

Il prodotto non ha visto la luce del sole fino a che pensavamo che fosse in uno stato da me ritenuto pubblicabile, e quando finalmente ho reputato che lo era, il mercato aveva già disponibili versioni opensource che facevano le stesse cose del nostro programma già con migliaia di utenti attivi.

ProductToMarket

Da quel momento mi sono imposto di analizzare quello che era successo e di trovare un metodo che lo avrebbe evitato.

AgileTheSolution

Al che ho trovato in Agile e nella definizione del MVP le risposte che stavo cercando, di conseguenza ho letto libri, seguito corsi, seminari e lo ho applicato in tutti i miei progetti.

Innanzi tutto vediamo cosa è un MVP (Minimum Viable Product), è un sottoinsieme minimo di caratteristiche che il nostro prodotto deve avere per essere pubblicato per avviare un primo ciclo di feedback e testare la domanda del mercato.

Lo scopo delle tecniche agile applicate alla creazione del prodotto è quella di organizzare il lavoro in modo tale che tutte le features essenziali per la prima release, siano realizzate prima di tutto il resto.

in Agile si organizza il lavoro dividendolo in piccole parti e gestendole una a una in modo che ad ogni ciclo il team possa avere un prodotto testabile e funzionante.

La durata di una sprint varia da progetto a progetto, e nel caso ideale alla fine del primo ciclo dovremmo avere il nostro MVP.

MVP

Come Agile avrebbe potuto aiutare il mio primo progetto?

Evidentemente al posto di aspettare più di un anno, dopo un mese avremmo pubblicato la prima versione basica, e avremmo investito tempo in cercare utenti che ci avrebbero potuto dare i primi feedback.

Ci saremo subito resi conto, durante la ricerca dei cliente, che il mercato aveva delle esigenze specifiche che non stavamo coprendo, e che la acquisizione di nuovi utenti non sarebbe stata facile come pensavamo e che sarebbe stato necessario dedicare una buona parte del tempo a fare marketing se avessimo voluto raggiungere un minimo di utenti.

SpecificMarketNeeds

Con un approccio Agile avremmo avuto una visione piú realistica di dove eravamo posizionati nel mercato e avremmo probabilmente preso delle decisioni fondamentali per variare rotta o cercare soluzioni ai problemi che manifestavano gli utenti e che non erano risolti negli altri software disponibili.

Iteration

Un feedback negativo potrebbe anche aver decretato la fine del progetto in una fase molto iniziale, dove non si erano ancora investiti troppi soldi.

Nella maniera tradizionale di lavorare si pianifica troppo a lungo termine e si cercano di fare previsioni che molte volte risultano errate perché il futuro é in costante evoluzione, le esigenze dei clienti cambiano e la tecnologia evolve.

RequirementDesignDevelop

Agile aiuta a dividere obiettivi in piccole parti che sono facilmente gestibili e misurabili, si cerca di aggruppare i vari taks in determinate versioni che vengono subito proposte al cliente e ci si alimenta dal feedback per determinare i seguenti passi.

ScrumCycle

Bellissimo schema preso da wikipedia, che spiega molto bene visualmente come sono le 3 fasi Agile e da cosa si caratterizzano.

Andiamo a vedere nel dettaglio ciascuna Fase

PLAN

Quando si pianifica una iterazione bisogna seguire queste tre regole:

  1. Non mettere troppa carne sul fuoco, se metti dei task che richiedono piú tempo di quello disponibile, dovrai suddividerli in parti più piccole in modo da non sovraccaricare la iterazione. L’obiettivo è quello di avere un risultato concreto dopo ogni ciclo che si concretizza in una nuova versione del nostro software.
  2. Bisogna dare priorità alle cose Più importanti per avere una release funzionante, quindi lavorare su cose di secondaria importanza per il release è vietato.
  3. Non prefiggetevi goals troppo ambiziosi per ogni ciclo, perchè l’idea è mettere nella iterazione solo cose che si possono realmente realizzare nel tempo a disposizione. La costanza e disciplina in seguire a deliverare costantemente versioni è la vera magia dietro il metodo agile.

SprintDuration

Non c’è una durata fissa delle iterazioni (sprint), questa può variare da progetto a progetto, però è preferibile scegliere una durata breve rispetto a una lunga. Bisogna trovare un giusto compromesso perché avere più tempo vuol dire poter includere più funzionalitá in un ciclo, però vuol anche dire non includere il feedback del cliente per più a lungo e in caso questo è negativo il prezzo che paghiamo è più caro.

In questo libro vedremo i seguenti capitoli:

Questa sarà la intro del libro che sto scrivendo su Agile Programming, lo pubblicherò sul mio sito capitolo per capitolo e poi con il feedback degli utenti metterò tutto assieme e lo pubblicherò aggiungendo del materiale extra.