Vi segnalo questo interessante post di Ian Barder su Ibuildings.co.uk, che personalmente ho stampato e incorniciato, perché riassume quello che dico da anni: «Tu dimmi quello che ti serve e io trovo la soluzione. (Altrimenti questo lavoro diventerà un bagno di sangue.)».
I requisiti per un progetto web, ce lo ripetiamo tutti i giorni, sono essenziali e determinano la buona riuscita del lavoro. Eppure molto spesso giungere ad un insieme di requisiti coerenti e utili è molto lungo e doloroso, cosa che allunga i tempi di sviluppo e inflaziona i costi con continui aggiustamenti e revisioni in corso d'opera.
I progetti migliori, infatti, sono quelli che hanno una buona vision del risultato finale, che non significa raccogliere abbastanza requisiti, ma raccogliere quelli giusti.
Cosa va evitato
- Evitare di sviluppare l'applicazione confrontandola con le funzioni del software che si sta per sostituire: si rischia di rendere centrali aspetti legati al vecchio applicativo, invece di valorizzare le reali necessità degli utenti.
- Lasciare le tecnologie sullo sfondo e valutarle in modo agnostico, rimanendo concentrati su quello che si vuole, piuttosto che su cio che è possibile. Inclusi standard, organizzazione del DB, front-end, browser, etc.
- Non farsi intrappolare nella spirale delle nuove funzionalità : i desideri espressi dagli utenti spesso non sono utili al raggiungimento dell'obiettivo finale e dovrebbero essere considerati come un'indicazione generica, piuttosto che come la richiesta di una specifica nuova funzionalità al di fuori del quadro generale.
Cosa va fatto
- Elencare le cose che gli utenti devono essere assolutamente in grado di fare e mantenere il focus sul risultato, piuttosto che sul metodo.
- Individuare le aree di business a cui l'applicativo sarà dedicato ed evitare di contaminare queste con ingerenze esterne: ovvero creare un software che faccia bene una cosa, piuttosto che due male.
- Una volta delineati i requisiti di massima (quelli giusti) sarà necessario attenervisi e stabilire delle priorità che consentano l'elaborazione di un progetto dettagliato con specifiche chiare per gli sviluppatori.