L'importanza del planning nello sviluppo Web

L'importanza del planning nello sviluppo Web

Il segreto del successo di un progetto è spesso riconducibile al planning operato a monte di tale progetto. Gestire un progetto complesso richiede un planning meticoloso in cui non bisogna lasciare mai nulla al caso. Nello sviluppo Web il planning è alla base di un codice flessibile, riusabile, modulare e scalabile. Senza un attento planning, il codice è mastodontico, ridondante, incoerente e spesso difficile da gestire. Tutto ciò comporta un notevole aumento dei tempi di consegna ed una difficoltà nel gestire la fase di testing e debugging dopo la prima messa online. Ma come si giunge ad un planning vincente?

Se lavorate in team, il primo requisito è una rigorosa divisione dei compiti. Un esperto di back-end deve occuparsi del suo settore e un esperto di front-end del suo. Non ci devono essere sovrapposizioni e interferenze. Sembra lapalissiano, ma molto spesso la causa dei primi problemi nel planning di un progetto è la confusione dei ruoli, con sviluppatori che si occupano di tutto ed altri limitati a semplici task.

Il secondo requisito è la scelta di un team leader o project manager in grado di coordinare il lavoro degli sviluppatori. Il project manager deve avere chiaro cosa vuole ottenere e quali sono i requisiti richiesti dal cliente. A quel punto, dopo le riunioni con il cliente, si passa ad esporre il progetto agli sviluppatori e si mette mano alla divisione dei compiti.

In tutto questo bisogna tenere a mente due cose: i requisiti dettati dal cliente e i tempi di consegna. Sul secondo aspetto occorre anticipare spesso le decisioni prese, poichè quasi mai il cliente consegna il materiale nei tempi prefissati e questo ritardo incide sul planning del lavoro e sulle deadline.

Una volta che sono chiari i requisiti del progetto, bisogna giocare d'anticipo e partire subito basandosi sulle linee guida già stabilite, senza aspettare che il cliente consegni tutto in tempo e senza sperare che rispetti i tempi di consegna. Fidarsi è bene, non fidarsi è meglio.

I compiti all'interno del team vanno pianificati, chiedendosi:

  1. Che soluzioni implementative sono necessarie per il compito X?
  2. Quanto tempo ci vuole per completare il compito X?

Ovviamente la somma dei tempi di ciascun task del progetto deve collimare con la tempistica stabilita col cliente.

Nel planning bisogna da subito chiarire il come del progetto, ossia chiedersi quale tecnologia verrà utilizzata per realizzarlo. È fondamentale scegliere una tecnologia che non solo soddisfi i requisiti del progetto, ma che permetta anche di gestirlo con facilità in futuro. Un errore che si commette in questa fase è quello di voler forzare una tecnologia a svolgere compiti diversi da quelli per cui è stata originariamente creata. Per esempio, scegliere Joomla perchè lo si conosce meglio di CakePHP o di Zend può essere un errore se il progetto presenta dei requisiti che ci costringerebbero a forzare Joomla ad eseguire un compito che non le è proprio.

Una tale forzatura può funzionare se siamo in ritardo con la tempistica e abbiamo fretta di consegnare, ma non funzionerà quando si tratterà di gestire il progetto sulla lunga distanza.

Un altro aspetto importante è il brain storming. Il project manager dovrebbe confrontarsi apertamente con gli sviluppatori in merito ad alcune scelte implementative senza voler imporre a tutti i costi le sue idee. Dal canto loro, gli sviluppatori dovrebbero rinunciare al loro individualismo ed orgoglio e mettersi al servizio del progetto con le loro competenze specifiche. Nel team non ci devono assolutamente essere gelosie e rivalità, perchè questo porterebbe a discussioni sterili che si risolverebbero con un nulla di fatto.

Infine, occorre stilare documenti (PDF, Excel, diagrammi UML ecc.) durante il planning, poichè verba volant et scripta manent. Senza questi documenti di riferimento risulta impossibile per il project manager e per gli sviluppatori seguire il workflow e tenere traccia dell'evoluzione nell'implementazione dei requisiti del progetto.

Torna su