Debito Tecnico #1: Come ridurlo

by Andrea Maioli on 15 gennaio 2013

Quando devo raccontare da dove è nato Instant Developer circa dodici anni fa, mi ritorna in mente il contesto in cui lavoravano le software house di quel tempo: software poco testato, codice disconnesso, applicazioni che diventavano obsolete senza rimedio. Ho visto più di un’azienda informatica letteralmente bloccata nel cercare di manutenere la codebase esistente senza poterla più evolvere. E alla prima crisi, chiudere.

Anche oggi la situazione non è cambiata di molto. I nostri amici americani, a cui piace studiare e trovare una definizione per tutto, hanno persino dato un nome alle cause di questo fenomeno a cui va inesorabilmente incontro il software: Debito Tecnico.

Il concetto di Debito Tecnico, pur essendo stato introdotto ormai vent’anni fa da Ward Cunningham, continua ad essere un tema centrale nella gestione della ingegneria del software. L’intuizione di Cunningham deve la sua longevità al fatto che i problemi da lui identificati continuano ad affliggere organizzazioni grandi e piccole in tutto il mondo. È interessante leggerne la definizione in Wikipedia:

“il debito tecnico è il lavoro che deve essere ancora fatto per poter considerare totalmente completata una singola attività di sviluppo. Quando si inizia una modifica ad un progetto software, spesso devono essere apportate altre modifiche coordinate in altre parti di codice, nella documentazione, ecc… Le modifiche richieste, ma non completate, sono considerate debito tecnico, che dovrà essere pagato prima o poi in futuro.”

Ma cosa c’entra il Debito Tecnico con Instant Developer? Dodici anni fa, senza nemmeno rendercene conto, abbiamo iniziato a sviluppare Instant Developer intorno ad un concetto nuovo, che si è poi rivelato la chiave di volta per affrontare il problema del debito tecnico: la programmazione relazionale.

Come sa bene chi usa Instant Developer, la programmazione relazionale è una tecnica innovativa di generazione del codice grazie alla quale l’IDE di Instant Developer memorizza l’intero progetto software, l’intera code base, in un grafo di relazioni e dipendenze invece che in tanti file di testo. Proprio così, nessun file di testo: anche le singole righe di codice non vengono memorizzate come stringhe di caratteri, ma come nodi di una rete che le mantiene collegate le une alle altre.

Per dimostrare perché Instant Developer funziona tanto meglio quanto più è complesso il progetto software che si sviluppa, vogliamo approfondire le origini e le cause del Debito Tecnico. Per questo vi invitiamo a seguire una mini-serie di post che in questo blog ci terrà compagnia per qualche settimana.

Ma nel frattempo vi invito a fare una riflessione: avete mai pensato che mentre state sviluppando software, proprio in quel momento vi state indebitando (tecnicamente)?

In questa serie:

{ 5 comments… read them below or add one }

1 Giuseppe Cassanelli 15 gennaio 2013 alle 15:36

Non sapevo si chiamasse così, ma mi stava sullo stomaco anche allora, per questo mi piacevano le tue idee e ti ho dato fiducia.
Da allora il mio “Debito Tecnico” si è minimizzato, anche se una parte rimane presente a causa dei problemi quotidiani/economici e delle brutte abitudini, ma ho verificato in questi anni che è sempre governabile, anche a medio/lunga scadenza, e questo è l’essenziale.
E spesso pagare una parte di quel debito (cioè ultimare qualche dettaglio) risulta spesso più semplice del temuto, sempre grazie alla struttura sottostante.
Mi piace questo “Amarcord” :-)

2 John Willems 15 gennaio 2013 alle 18:47

I am looking forward to the other articles in this series. The more I work with Instant Developer the more convinced I am that it resolves a host of issues in software development found in using other tools.

3 Massimo Vannucci 16 gennaio 2013 alle 09:13

Molto interessante.
Argomento attuale in quanto anni fa un linguaggio di programmazione diventava obsoleto dopo diversi anni, ora è facile investire in
tecnologia che diverrà obsoleta a breve … e quindi rischi veramente la chiusura dell’azienda !

4 Riccardo Bianco 16 gennaio 2013 alle 09:19

Molto interessante

5 Riccardo La Monica 29 gennaio 2013 alle 21:45

Ricordo molto bene l’inizio della tua avventura con Instant Developer, la mia azienda è stata una tra le prime ad implementare ed questa nuova tecnica, per gestire dei sistemi complessi, ottenendo ottimi risultati!

Oggi, dopo 12 anni, stiamo utilizzando la nuova versione di IN.DE per realizzare un sistema di controllo globale (Worldwide) dei costi legati alle perdite generate durante i processi di produzione dei ns. prodotti.
In questo progetto sono coinvolti tutti i nostri 52 stabilimenti, dislocati nei diversi Paesi sui quali siamo presenti.

Congratulazioni!

Leave a Comment

Previous post:

Next post: