Quanto costa?
Inviato: 05 ago 2026, 11:56
Quanto costa un software? Il problema che mi tormenta da quarant'anni (e una proposta a mattoncini)
C'è una domanda che mi porto dietro da quando ho iniziato a scrivere codice sui mainframe IBM, alla fine degli anni Settanta: quanto costa davvero un programma? Non quanto lo si vende, non quanto lo si preventiva sperando di non sbagliare — quanto vale il lavoro che c'è dentro, e come lo si misura in modo che abbia un senso sia per chi lo scrive sia per chi lo paga.
Chi fa questo mestiere da abbastanza tempo ha visto passare almeno tre epoche di risposte a questa domanda. E nessuna, a mio parere, ha davvero funzionato.
Le epoche del "come si conta"
Prima epoca: la riga di codice. Anni fa si pagava a righe. Ogni programma aveva un prezzo commisurato al numero di istruzioni, con — e qui c'è già la prima crepa — un valore diverso tra la riga di istruzione e la riga di commento. Il paradosso è evidente a chiunque abbia programmato sul serio: la riga di codice premia la prolissità e punisce l'eleganza. Il programmatore bravo, quello che risolve lo stesso problema con metà del codice, guadagnava meno. Si misurava il peso del prodotto, non il suo valore.
Seconda epoca: il tempo. Poi si è passati al tempo: tante ore, tanto costo. Più onesto in linea di principio, ma il calcolo resta difficile. Quanto ci metto io con quarant'anni di esperienza e un framework che conosco a memoria non è quanto ci mette un altro — e non è giusto che il cliente paghi la mia lentezza né che io venga penalizzato per la mia velocità. Il tempo misura l'operatore, non l'opera.
Terza epoca: la preventivazione a stima. E qui il problema si fa ancora più spinoso, indipendentemente dal livello di analisi che riesci a fare. Preventivare un software significa mettere un prezzo su qualcosa che, per definizione, non esiste ancora. Chi lavora ad Agile lo sa bene: il preventivo totale "quanto costa finire tutto" è di fatto impossibile senza requisiti congelati, e i requisiti non si congelano mai. Così si oscilla tra il preventivo gonfiato per prudenza e quello ottimistico che poi ti massacra i margini.
L'intuizione: il software è fatto di mattoncini
Sono sempre stato convinto di una cosa: un programma, uno script, altro non è che l'insieme di tanti micro-componenti opportunamente collegati. Tanti piccoli mattoncini Lego che si incastrano tra loro.
Una form di caricamento dati non è un blocco monolitico. È una struttura base — i campi standard — a cui si aggiungono, uno per uno, componenti che hanno ciascuno un peso e un valore ben identificabili:
Gli optional: lo stesso mattoncino, tante varianti
C'è però un secondo livello, che è quello che rende il metodo davvero interessante. Un mattoncino non è mai una cosa sola: ha i suoi optional, esattamente come un'automobile ha lo stesso telaio ma allestimenti diversi.
Prendiamo il mattoncino più banale che esista: un campo di un form. Nella sua versione nuda è quasi gratis. Ma quel campo può portarsi dietro:
Il paradosso dei framework
C'è però una riflessione che non posso tacere, e che tocca da vicino chiunque lavori con un framework — Scriptcase compreso. L'adozione dei framework ha portato un doppio effetto, e i due lati della medaglia vanno guardati insieme.
Da un lato hanno standardizzato e reso velocissimo lo sviluppo: quello che una volta richiedeva giorni di codice scritto a mano oggi si genera in poche ore, con qualità uniforme e meno errori. È un progresso innegabile.
Dall'altro, però, hanno abbassato e omogeneizzato il valore economico percepito, appiattendo proprio quelle differenze che con gli optional cercavamo di valorizzare. Se il framework ti dà "gratis" la validazione, l'evidenziazione visiva, il supporto di aiuto — se quegli optional sono ormai un checkbox nell'ambiente invece che il frutto visibile di una competenza — allora il cliente fatica a percepire che valgono qualcosa. Il mattoncino con tutti i suoi optional montati sembra costare quanto il mattoncino nudo, perché produrlo costa quasi uguale.
Ed è esattamente qui che il configuratore diventa non solo uno strumento di preventivo, ma un atto di riappropriazione del valore. Non conta che il framework abbia reso facile montare l'optional: conta che quell'optional fa qualcosa in più, protegge un dato in più, evita un errore in più. Il configuratore serve a rendere di nuovo visibile — e quindi remunerabile — una differenza che la velocità di sviluppo aveva reso invisibile. Il framework abbassa il costo di produzione; il configuratore difende il valore d'uso.
Un listino di esempio
Per rendere l'idea concreta, ecco come potrebbe apparire un frammento di listino. La chiave è tenere separato il prezzo base del mattoncino — che si paga una volta sola — dal prezzo di ogni optional, che è il puro incremento che quell'aggiunta comporta. Il totale di un componente è quindi la base più la somma degli optional scelti. I valori sono puramente esemplificativi — servono a mostrare il meccanismo, non a fare da tariffario:
Un esempio di lettura: un campo con aiuto contestuale e validazione leggera costa € 5 (base) + € 5 + € 15 = € 25. Lo stesso campo con validazione pesante al posto di quella leggera arriva a € 5 + € 5 + € 55 = € 65. Il cliente vede esattamente quanto pesa ogni scelta, e può ragionare — "la validazione pesante su questo campo mi serve davvero, o mi basta quella leggera?". Il preventivo diventa una conversazione, non una trattativa al buio.
In fase di preventivazione: funziona già
La bella notizia è che, in fase di preventivazione, costruire un metodo simile è del tutto fattibile. In fondo è ciò che facciamo istintivamente quando pensiamo a un prodotto: lo scomponiamo mentalmente nei suoi pezzi. Formalizzare quel processo — dare un valore a ogni mattoncino e alle sue varianti — trasforma un'intuizione in un listino.
I vantaggi sono concreti e li ho toccati con mano:
Il vero scoglio: la consuntivazione
Ma qui arriva l'onestà intellettuale. In fase di preventivazione il metodo a mattoncini è elegante. In fase di consuntivazione? Come rendo trasparente l'elenco reale dei mattoncini effettivamente montati, con le loro varianti, e come genero una sorta di distinta base — una vera bill of materials del software, come si fa in produzione industriale?
Questo è lo scoglio contro cui si infrangono i buoni propositi. Perché i normali ambienti di sviluppo non facilitano affatto questo aspetto. Nascono per automatizzare alcune fasi primarie della scrittura del codice, non per consuntivare il lavoro. Ti danno il cosa hai prodotto, non il di cosa è fatto in termini economicamente leggibili. E gli ambienti più evoluti, quelli che forse potrebbero aiutarti, sono spesso chiusi: non ti lasciano interrogare il loro interno.
Il preventivo resta così una promessa che il consuntivo non sa mai confermare o smentire con precisione. E senza consuntivo affidabile, il listino a mattoncini rischia di restare un bell'esercizio teorico.
Perché Scriptcase cambia le carte in tavola
Ed è qui che, nella mia esperienza, un ambiente come Scriptcase diventa interessante — non per marketing, ma per una ragione strutturale.
Scriptcase ha un suo ambiente interno, un repository che nasce per facilitare e uniformare lo sviluppo. Ogni applicazione è descritta, catalogata, resa omogenea. E un ambiente che uniforma lo sviluppo, per sua stessa natura, permette anche un'indagine di tipo "economico": se le applicazioni sono descritte in modo strutturato, quella struttura è interrogabile. Diventa possibile, almeno in linea di principio, risalire dai manufatti alla distinta dei mattoncini che li compongono.
Lo dico con la prudenza di chi ci sta ancora lavorando, non di chi ha la soluzione in tasca. Ma la direzione mi sembra quella giusta: usare la standardizzazione imposta dall'ambiente non solo per produrre più in fretta, ma per rendere finalmente misurabile ciò che si è prodotto. Il repository che serve a sviluppare in modo uniforme è lo stesso che può servire a consuntivare in modo trasparente.
Un esempio concreto: GERIM
Non parlo per astrazioni. Ho costruito nel tempo un sistema — oltre milleduecento applicazioni interdipendenti sviluppate in Scriptcase — e quando è arrivato il momento di metterci un valore sopra, mi sono trovato esattamente davanti a tutte le domande di questo articolo. Quanto vale? A righe? A tempo? A stima?
La risposta sensata non è stata nessuna delle tre in purezza. È stata ragionare per componenti e per valore di sostituzione: non quanto è costato scriverlo, ma quanto costerebbe rifarlo da zero. E un sistema fatto di tanti mattoncini specializzati — moduli di analisi, controlli antifrode, reportistica, logiche di compliance — mostra il suo valore proprio quando lo scomponi e ti accorgi di quanti pezzi distinti, ciascuno frutto di una competenza specifica, ci sono dentro. La distinta base del software non è solo uno strumento di prezzo: è uno strumento di consapevolezza, per te prima ancora che per il cliente.
In sintesi
Il problema di come misurare il costo del software non è risolto — probabilmente non lo sarà mai in modo definitivo, perché il software non è un manufatto fisico e ogni analogia industriale ha un limite. Ma la strada a mattoncini mi sembra la meno peggiore tra quelle percorse finora:
E allora la domanda che vi giro è duplice. Qualcuno di voi ha già provato a costruire un listino a componenti — magari con optional, magari senza chiamarlo così — per il proprio lavoro? E soprattutto: qualcuno è riuscito a chiudere il cerchio dal lato della consuntivazione, a generare cioè una vera distinta base del software prodotto? Perché il preventivo a mattoncini, in un modo o nell'altro, lo facciamo quasi tutti. È il consuntivo trasparente il vero terreno inesplorato — ed è lì che mi piacerebbe confrontarmi con chi ci ha già messo le mani.
Rino
C'è una domanda che mi porto dietro da quando ho iniziato a scrivere codice sui mainframe IBM, alla fine degli anni Settanta: quanto costa davvero un programma? Non quanto lo si vende, non quanto lo si preventiva sperando di non sbagliare — quanto vale il lavoro che c'è dentro, e come lo si misura in modo che abbia un senso sia per chi lo scrive sia per chi lo paga.
Chi fa questo mestiere da abbastanza tempo ha visto passare almeno tre epoche di risposte a questa domanda. E nessuna, a mio parere, ha davvero funzionato.
Le epoche del "come si conta"
Prima epoca: la riga di codice. Anni fa si pagava a righe. Ogni programma aveva un prezzo commisurato al numero di istruzioni, con — e qui c'è già la prima crepa — un valore diverso tra la riga di istruzione e la riga di commento. Il paradosso è evidente a chiunque abbia programmato sul serio: la riga di codice premia la prolissità e punisce l'eleganza. Il programmatore bravo, quello che risolve lo stesso problema con metà del codice, guadagnava meno. Si misurava il peso del prodotto, non il suo valore.
Seconda epoca: il tempo. Poi si è passati al tempo: tante ore, tanto costo. Più onesto in linea di principio, ma il calcolo resta difficile. Quanto ci metto io con quarant'anni di esperienza e un framework che conosco a memoria non è quanto ci mette un altro — e non è giusto che il cliente paghi la mia lentezza né che io venga penalizzato per la mia velocità. Il tempo misura l'operatore, non l'opera.
Terza epoca: la preventivazione a stima. E qui il problema si fa ancora più spinoso, indipendentemente dal livello di analisi che riesci a fare. Preventivare un software significa mettere un prezzo su qualcosa che, per definizione, non esiste ancora. Chi lavora ad Agile lo sa bene: il preventivo totale "quanto costa finire tutto" è di fatto impossibile senza requisiti congelati, e i requisiti non si congelano mai. Così si oscilla tra il preventivo gonfiato per prudenza e quello ottimistico che poi ti massacra i margini.
L'intuizione: il software è fatto di mattoncini
Sono sempre stato convinto di una cosa: un programma, uno script, altro non è che l'insieme di tanti micro-componenti opportunamente collegati. Tanti piccoli mattoncini Lego che si incastrano tra loro.
Una form di caricamento dati non è un blocco monolitico. È una struttura base — i campi standard — a cui si aggiungono, uno per uno, componenti che hanno ciascuno un peso e un valore ben identificabili:
- la validazione avanzata dei dati inseriti;
- i controlli di coerenza tra campi correlati;
- le verifiche in tempo reale contro un database esterno;
- i suggerimenti automatici durante la digitazione;
- il salvataggio temporaneo automatico;
- il controllo di duplicazione;
- l'upload documenti con preview e validazione di formato e dimensione.
Gli optional: lo stesso mattoncino, tante varianti
C'è però un secondo livello, che è quello che rende il metodo davvero interessante. Un mattoncino non è mai una cosa sola: ha i suoi optional, esattamente come un'automobile ha lo stesso telaio ma allestimenti diversi.
Prendiamo il mattoncino più banale che esista: un campo di un form. Nella sua versione nuda è quasi gratis. Ma quel campo può portarsi dietro:
- un supporto di aiuto contestuale (un tooltip, un help in linea, una descrizione a comparsa);
- una modifica visiva che richiama alcuni stati del contenuto — il campo che diventa rosso se il valore è fuori range, verde se validato, evidenziato se obbligatorio e vuoto;
- una validazione, che a sua volta può essere leggera (formato, lunghezza) o pesante (controllo incrociato su database, verifica di coerenza con altri campi, chiamata a un servizio esterno).
Il paradosso dei framework
C'è però una riflessione che non posso tacere, e che tocca da vicino chiunque lavori con un framework — Scriptcase compreso. L'adozione dei framework ha portato un doppio effetto, e i due lati della medaglia vanno guardati insieme.
Da un lato hanno standardizzato e reso velocissimo lo sviluppo: quello che una volta richiedeva giorni di codice scritto a mano oggi si genera in poche ore, con qualità uniforme e meno errori. È un progresso innegabile.
Dall'altro, però, hanno abbassato e omogeneizzato il valore economico percepito, appiattendo proprio quelle differenze che con gli optional cercavamo di valorizzare. Se il framework ti dà "gratis" la validazione, l'evidenziazione visiva, il supporto di aiuto — se quegli optional sono ormai un checkbox nell'ambiente invece che il frutto visibile di una competenza — allora il cliente fatica a percepire che valgono qualcosa. Il mattoncino con tutti i suoi optional montati sembra costare quanto il mattoncino nudo, perché produrlo costa quasi uguale.
Ed è esattamente qui che il configuratore diventa non solo uno strumento di preventivo, ma un atto di riappropriazione del valore. Non conta che il framework abbia reso facile montare l'optional: conta che quell'optional fa qualcosa in più, protegge un dato in più, evita un errore in più. Il configuratore serve a rendere di nuovo visibile — e quindi remunerabile — una differenza che la velocità di sviluppo aveva reso invisibile. Il framework abbassa il costo di produzione; il configuratore difende il valore d'uso.
Un listino di esempio
Per rendere l'idea concreta, ecco come potrebbe apparire un frammento di listino. La chiave è tenere separato il prezzo base del mattoncino — che si paga una volta sola — dal prezzo di ogni optional, che è il puro incremento che quell'aggiunta comporta. Il totale di un componente è quindi la base più la somma degli optional scelti. I valori sono puramente esemplificativi — servono a mostrare il meccanismo, non a fare da tariffario:
Codice: Seleziona tutto
MATTONCINO BASE OPTIONAL INCREMENTO
--------------------------------------------------------------------------------------
Campo dato € 5 — solo input, nessun controllo (incluso)
+ supporto di aiuto contestuale € 5
+ evidenziazione visiva stati del contenuto € 10
+ validazione leggera (formato, lunghezza) € 15
+ validazione pesante (cross-check DB / esterno) € 55
--------------------------------------------------------------------------------------
Form € 150 — layout, salvataggio, navigazione (incluso)
+ salvataggio temporaneo automatico € 80
+ controllo duplicazione record € 120
+ upload documenti con preview e validazione € 200
--------------------------------------------------------------------------------------
Griglia (grid) € 180 — elenco, ordinamento, paginazione (incluso)
+ filtri avanzati multi-campo € 150
+ export (PDF / Excel / CSV) € 100
+ drill-down su dettaglio correlato € 220
--------------------------------------------------------------------------------------
Report € 250 — struttura base + un raggruppamento (incluso)
+ ogni raggruppamento / totalizzazione aggiuntiva € 80
--------------------------------------------------------------------------------------
In fase di preventivazione: funziona già
La bella notizia è che, in fase di preventivazione, costruire un metodo simile è del tutto fattibile. In fondo è ciò che facciamo istintivamente quando pensiamo a un prodotto: lo scomponiamo mentalmente nei suoi pezzi. Formalizzare quel processo — dare un valore a ogni mattoncino e alle sue varianti — trasforma un'intuizione in un listino.
I vantaggi sono concreti e li ho toccati con mano:
- Trasparenza. Il cliente capisce esattamente cosa sta comprando. Non un totale opaco, ma un elenco di funzioni.
- Personalizzazione. Può scegliere solo i controlli che gli servono davvero, e aggiungerne altri in fasi successive.
- Valorizzazione della competenza. Il prezzo riflette cosa fa quel componente, non quanto tempo ci ho messo io a scriverlo.
- Educazione del cliente. Che è forse la cosa più importante: gli fai capire perché la qualità del software ha un costo.
Il vero scoglio: la consuntivazione
Ma qui arriva l'onestà intellettuale. In fase di preventivazione il metodo a mattoncini è elegante. In fase di consuntivazione? Come rendo trasparente l'elenco reale dei mattoncini effettivamente montati, con le loro varianti, e come genero una sorta di distinta base — una vera bill of materials del software, come si fa in produzione industriale?
Questo è lo scoglio contro cui si infrangono i buoni propositi. Perché i normali ambienti di sviluppo non facilitano affatto questo aspetto. Nascono per automatizzare alcune fasi primarie della scrittura del codice, non per consuntivare il lavoro. Ti danno il cosa hai prodotto, non il di cosa è fatto in termini economicamente leggibili. E gli ambienti più evoluti, quelli che forse potrebbero aiutarti, sono spesso chiusi: non ti lasciano interrogare il loro interno.
Il preventivo resta così una promessa che il consuntivo non sa mai confermare o smentire con precisione. E senza consuntivo affidabile, il listino a mattoncini rischia di restare un bell'esercizio teorico.
Perché Scriptcase cambia le carte in tavola
Ed è qui che, nella mia esperienza, un ambiente come Scriptcase diventa interessante — non per marketing, ma per una ragione strutturale.
Scriptcase ha un suo ambiente interno, un repository che nasce per facilitare e uniformare lo sviluppo. Ogni applicazione è descritta, catalogata, resa omogenea. E un ambiente che uniforma lo sviluppo, per sua stessa natura, permette anche un'indagine di tipo "economico": se le applicazioni sono descritte in modo strutturato, quella struttura è interrogabile. Diventa possibile, almeno in linea di principio, risalire dai manufatti alla distinta dei mattoncini che li compongono.
Lo dico con la prudenza di chi ci sta ancora lavorando, non di chi ha la soluzione in tasca. Ma la direzione mi sembra quella giusta: usare la standardizzazione imposta dall'ambiente non solo per produrre più in fretta, ma per rendere finalmente misurabile ciò che si è prodotto. Il repository che serve a sviluppare in modo uniforme è lo stesso che può servire a consuntivare in modo trasparente.
Un esempio concreto: GERIM
Non parlo per astrazioni. Ho costruito nel tempo un sistema — oltre milleduecento applicazioni interdipendenti sviluppate in Scriptcase — e quando è arrivato il momento di metterci un valore sopra, mi sono trovato esattamente davanti a tutte le domande di questo articolo. Quanto vale? A righe? A tempo? A stima?
La risposta sensata non è stata nessuna delle tre in purezza. È stata ragionare per componenti e per valore di sostituzione: non quanto è costato scriverlo, ma quanto costerebbe rifarlo da zero. E un sistema fatto di tanti mattoncini specializzati — moduli di analisi, controlli antifrode, reportistica, logiche di compliance — mostra il suo valore proprio quando lo scomponi e ti accorgi di quanti pezzi distinti, ciascuno frutto di una competenza specifica, ci sono dentro. La distinta base del software non è solo uno strumento di prezzo: è uno strumento di consapevolezza, per te prima ancora che per il cliente.
In sintesi
Il problema di come misurare il costo del software non è risolto — probabilmente non lo sarà mai in modo definitivo, perché il software non è un manufatto fisico e ogni analogia industriale ha un limite. Ma la strada a mattoncini mi sembra la meno peggiore tra quelle percorse finora:
- supera la riga di codice, che premia la prolissità;
- supera il puro tempo, che misura l'operatore e non l'opera;
- rende il preventivo un elenco trasparente invece di un totale opaco;
- e — questa è la scommessa — apre la possibilità, dove l'ambiente di sviluppo lo consente, di consuntivare davvero, generando la distinta dei componenti realmente montati.
E allora la domanda che vi giro è duplice. Qualcuno di voi ha già provato a costruire un listino a componenti — magari con optional, magari senza chiamarlo così — per il proprio lavoro? E soprattutto: qualcuno è riuscito a chiudere il cerchio dal lato della consuntivazione, a generare cioè una vera distinta base del software prodotto? Perché il preventivo a mattoncini, in un modo o nell'altro, lo facciamo quasi tutti. È il consuntivo trasparente il vero terreno inesplorato — ed è lì che mi piacerebbe confrontarmi con chi ci ha già messo le mani.
Rino