Il software migliore
Pino, il nostro giovane programmatore, agli esordi della sua carriera fu contattato da una piccola software house per realizzare un sistema software.
Le specifiche non erano particolarmente esaustive, ma alcuni requisiti erano chiari fin da subito: applicazione Windows, ambiente distribuito su intranet, scalabilità, prestazioni, modularità. Insomma, le solite belle parole che lasciano ampio spazio all'interpretazione.
Pino si buttò sul lavoro con entusiasmo, e i motivi erano semplici: nonostante la sua esperienza fosse relativamente povera, aveva in gestione quasi completa un sistema abbastanza complesso. Questo gli permetteva di scegliere in maniera autonoma le soluzioni da applicare e le tecnologie da utilizzare. E allo stesso tempo aveva la possibilità di realizzare l'applicazione sulla base della propria analisi architetturale.
A pensarci non è mica poco !
In ambienti più strutturati spesso chi progetta non implementa, chi implementa non fa test e non ha una visione globale sul codice che sta sviluppando, chi fa test non ha mai nemmeno letto il listato completo della classe che verifica e via dicendo.
Pino, invece, era insieme progettista, sviluppatore e tester, con tutti i vantaggi e gli svantaggi che ne derivano.
Alla fine del lavoro, il risultato non era niente male.
L'applicazione era stratificata e modulare.
Il data tier, in particolare, era il "pezzo" che soddisfaceva Pino più di ogni altro.
Aveva seguito il manuale del bravo programmatore: utilizzo di stored procedure, indipendenza dal motore database, modalità di accesso ai dati disconnessa. Prestazioni niente male, a maggior ragione in condizioni di carico elevate.
Quindi, dal suo punto di vista, aveva realizzato il software migliore.
Alcuni giorni dopo la consegna del prodotto, il cellulare di Pino squillò con insistenza.
Immaginatevi il nostro giovane programmatore immerso nella vasca, cocktail e sigaretta, musica new age, in stato di completo relax, bruscamente riportato alla realtà da un trillo fastidioso.
Lo stavano chiamando dalla ditta che gli aveva commissionato il lavoro. Come rovinare una mattinata perfetta.
Pino andò in ufficio, già nervoso di suo, imbottigliato in mezzo al traffico e con lo stomaco sottosopra.
Il software non funzionava.
Erano state necessarie piccole modifiche, e la ditta aveva messo mano al programma di Pino nel tentativo di aggiungere una semplice funzionalità.
Pino ci mise poco ad individuare il problema: il funzionamento del data tier era stato frainteso, lo schema dei definizione degli oggetti non era corretto, il programma dava risultati sbagliati.
Mentre Pino illustrava il modo di correggere il problema, si ritrovò a descrivere la struttura del data tier.
"Allora, per aggiungere questo metodo occorre definire e implementare una stored procedure fatta così, definire uno schema XSD così è così, aggiungere questo parametro qui, modificare l'interfaccia grafica qui e qui, rebuild solution e via".
Nel mentre, gli arrivò una domanda: "Ma non era meglio fare un metodo che formatta la stringa con la query e la esegue direttamente ?".
Pino provò a spiegare i motivi per cui la soluzione proposta non era per niente migliore.
Ma era evidente che non stava convincendo nessuno.
Da una parte, vedeva i softwaristi un po' perplessi: non conoscevano a fondo le tecnologie che Pino aveva utilizzato ed erano un po' spaventati.
Dall'altra parte, i commerciali non avevano la minima idea di che differenza ci fosse tra un approccio e l'altro, ma temevano che l'architettura utilizzata da Pino fosse troppo complessa per le competenze interne: mettere le mani in un'applicazione che non si conosce è tanto più semplice quanto questa fa cose semplici in modo diretto e con pochi fronzoli.
Risultato: la ditta non era contenta perchè temeva di non riuscire a mantenere un prodotto sviluppato in modo troppo articolato.
Tornando a casa, imbottigliato nuovamente nel traffico, Pino era pensieroso.
La sua convinzione non era cambiata: aveva realizzato il software migliore.
Ma se l'avesse scritto un po' peggio, magari a quel punto era ancora nella vasca da bagno, con il terzo cocktail in mano.
Lo stomaco sarebbe stato sottosopra lo stesso, ma almeno per motivi legittimi ...