Come ridurre i tempi di sviluppo

Riunirsi tutti per aspettare meno e finire prima

A molte aziende piacciono i software e le promesse di innovazione che portano con sé, ma apprezzano molto meno i tempi che occorrono per realizzare un prodotto ad hoc funzionante, fatto con tutti i crismi. Per fortuna, in parte è possibile contrarre queste tempistiche.

Quando si progetta un software il processo nella sua interezza è composto principalmente da due fasi principali: prototipazione e sviluppo.
La prototipazione del software è essenziale e propedeutica alla realizzazione di un prodotto efficiente e di qualità.

La fase di programmazione invece è il periodo in cui gli sviluppatori si mettono a testa bassa sul codice e traducono le scelte fatte durante la prototipazione in uno strumento funzionante.
A meno di disporre di professionisti davvero fuori dalla media, lo sviluppo ha bisogno di tempo: si tratta di un lavoro delicato che richiede attenzione e concentrazione, che non trae nessun beneficio dall’essere condotto di fretta.

Capita che alcuni clienti rimangano sorpresi dalla quantità di tempo che richiede portare a termine lo sviluppo, ad esempio, di una web app (avevamo affrontato il tema nell’articolo su i veri tempi del web development).
Le ragioni di questa incredulità non le conosciamo per certo, ma pensiamo si tratti di un misto di inesperienza con il nostro settore e di aspettative alimentate dalla convinzione diffusa che sviluppare un software sia tutto sommato una passeggiata, quanto vuoi che ci vorrà?.

Come ridurre i tempi di sviluppo

Senza tergiversare: il modo più semplice per ridurre questi tempi è assumere più programmatori che lavorino in parallelo su aspetti diversi del software.

Workflow di programmazione

Con più risorse a disposizione è possibile “tagliuzzare” la sequenza di mansioni e ricomporla in parallelo per ridurre la durata della finestra temporale di progetto.

È bene sottolineare che assumere più sviluppatori non riduce il tempo necessario in modo lineare (es. se un programmatore porta a termine un compito in 2 giorni, averne due difficilmente li ridurrà a uno soltanto).
Hai mai sentito dire che nove madri non danno alla luce un bambino in un mese? Ecco, con la sviluppo vale un discorso analogo.

Questo articolo di Quantitative Software Management offre alcuni spunti di riflessione interessanti sui software e le dimensioni dei team di sviluppo.
Dall’analisi esposta nell’articolo si conclude che i gruppi di 3-7 programmatori sono i migliori anche dal punto di vista delle performance di tempo. Questo perché risulta il più indicato per velocizzare lo sviluppo, evitando i problemi eccessivi di management e coordinamento che caratterizzano i team più grandi.

Infatti un team allargato richiede sempre maggior coordinamento del personale nella gestione delle mansioni e parte del tempo viene investito per consentire a tutti di sapere esattamente cosa fare e come farlo senza intralciare il lavoro degli altri.

Sempre secondo QSM, partendo da un progetto con un solo programmatore, aggiungere uno o due collaboratori riduce del 30% i tempi di consegna, mentre aggiungerne da due a quattro li riduce del 40%.

Numero di sviluppatori e riduzione tempo di sviluppo

All’aumentare del personale coinvolto nello sviluppo, fino a sette persone il tempo necessario si riduce, ma non linearmente (le percentuali sono calcolate dal grafico di QSM).

Se stai pensando che l’alternativa sia assumere programmatori “più veloci” ti auguriamo che non sia un loro eufemismo per “più pressapochisti”, perché tutto il tempo “risparmiato” prima potrebbe rapidamente trasformarsi in tempo perso poi, quando verranno a galla tutti i bug e i problemi di una programmazione spicciola, dai quali deriveranno costi ben più alti di quello che hai risparmiato inizialmente, sia dal punto di vista temporale che monetario.

Accorciare i tempi non significa abbassare i costi

Come si è detto, per ridurre i tempi di sviluppo si deve pagare un team più grande ma questo non comporta una riduzione dei costi, a differenza di quanto potrebbe pensare qualcuno. Il prezzo finale del progetto tende ad aumentare, è solo la finestra temporale di progetto a diminuire.

Immagina di dover restaurare gli interni di casa; ipotizziamo che ci siano cinque stanze da sistemare.
Potresti assumere un solo professionista o affidarti a una ditta specializzata con più operai. Il professionista impiega più tempo ma sostiene costi bassi che rendono il suo prezzo competitivo; al contrario, la ditta può contare su più personale – che significa tempi brevi – ma deve coordinare i suoi operai e ha bisogno di più attrezzatura (strumenti, protezioni, furgoni, ecc.), cosa che fa aumentare i costi e quindi il prezzo.
In entrambi i casi il numero totale di stanze da sistemare non diminuisce, ma poter beneficiare di un lavoro fatto più velocemente è un plus significativo che comporta un costo extra.
Per i software vale lo stesso ragionamento: a prescindere dal numero di sviluppatori che le gestiscono, se il numero di attività da svolgere per ultimare la programmazione resta uguale ma aumenta l’impegno organizzativo perché dovrebbe costare meno?

Costi di sviluppo

Se assegniamo un costo (ipotetico) a ogni attività, affrontarle parallelamente o in ordine sequenziale non diminuisce il costo complessivo, anzi lo aumenta, perché si aggiunge un management delle risorse più complesso.
Non c’è solo la programmazione: i tempi morti

Se è vero che assumere più programmatori consente di accorciare le tempistiche di consegna di progetto, è altrettanto vero che esistono vincoli di tutt’altra natura che non hanno nulla a che vedere con il tempo concretamente dedicato al lavoro.

Il grande problema che rende molti progetti di software – ma anche “banali” siti Internet – lunghi e sofferti è il continuo presentarsi di tempi morti che non possono essere recuperati: festività, ferie, malattia, mail ignorate o dimenticate, riunioni annullate per imprevisti e altri impegni di lavoro che posticipano confronti importanti tra progettisti e cliente.
La sorte di un progetto è davvero costellata di situazioni imprevedibili che possono fare arenare le fasi operative tanto quanto quelle decisionali.
Se vuoi qualche spunto di riflessione su come ottimizzare i processi legati a un progetto, puoi leggere il nostro articolo tempi morti: un problema per la flow efficiency.

Devi commissionare una web app o una app mobile per la tua azienda e hai bisogno di una stima delle tempistiche? Contattaci, saremo felici di valutare assieme la fattibilità e i tempi di consegna.