Ho accettato un lavoro da semisuicidio...:-)

Correggere e ampliare una serie di software gestionali realizzati in Delphi: il precedente sviluppatore (che a sua volta aveva rimesso mano su sorgenti non suoi) ha mollato i progetti a metà e naturalmente nessun'altro in azienda conosce una virgola di Object Pascal.

Con un passaparola che ha dell'increbile la piccola software house mi contatta e io, inconsapevole del girone infernale nel quale mi sarei infilato, accetto di buon grado la collaborazione: "Woow, e' da tanto che non sviluppo in Delphi, e poi ci sono sentimentalmente legato, ho iniziato la carriera proprio con quel linguaggio", penso...:-)

Dopo lunghe ricerche su CD, DVD, share di rete e servers FTP sparsi per il mondo riescono a fornirmi un pacchetto che dovrebbe contenere i sorgenti di un paio di questi fantomatici gestionali, che scopro in seguito essere stati tutti realizzati modificando e riadattando il codice di un applicativo 'padre', realizzato nientepopodimeno che nel 1996, passato indenne a conversioni da Delphi 3 a Delphi 4, poi al 6 e infine al 7 e a modifiche operate da almeno 3 diversi sviluppatori.

Il primo lavoro da effettuare a livello prettamente teorico era minimo: aggiungere alla stampa delle fatture il valore di 'Ritenuta d'acconto al 4%'.
Dico 'a livello teorico' in quanto del software attualmente in mano il cliente i sorgenti non ci sono, spariti assieme al precendente programmatore, quindi la semplice aggiunta di un campo a una fattura si tramuta in:

  1. Recupera i sorgenti di un programma simile

  2. Modificalo copiando i form dall'eseguibile del programma da verificare, in modo da renderlo il piu' simile possibile

  3.  Verifica le funzionalità del precedente e modifica il codice nuovo in modo da 'fargli fare le stesse cose'.

  4. Applica finalmente la modifica alla fattura.


Inizialmente mi era stato detto: 'non preoccuparti, il programma del quale abbiamo il sorgente differisce da quello che devi modificare esclusivamente per un form'. Beh...commento fatto in buona fede da un non programmatore e quantomai sbagliato: a livello funzionale il software era infatti totalmente diverso.

Difatti, dopo aver risolto il punto 2 con una furbata (utilizzando un decompilatore come PE Explorer, che permette partendo da un eseguibile compilato con Delphi di recuperare il sorgente dei form, naturalmente limitandosi esclusivamente alla parte visuale) mi sono trovato davanti alla missione quasi-impossibile di 'intuire' il codice presente dietro a quei form e riprodurlo, risolvendo nel frattempo la marea di dipendenze (decine di librerie, freeware, shareware e commerciali, spesso ridondanti) risultato di anni di modifiche effettuate seguendo la filosofia del 'devo fare in fretta, ora lo accrocco, poi mi preoccupo di scriverlo bene' :-)

Inaspettatamente, dopo un paio di nottate passate davanti al monitor, quando ormai la tentazione di mollare tutto era forte, riesco a trovare un filo conduttore in quell'orgia di 'spaghetti-code': tempo un paio d'ore riesco a allinearmi al programma attuale e applicare le piccole modifiche richieste.

Un attimo prima di premere F9 per lanciare l'ultima compilazione prima di uploadare il tutto sull'FTP del cliente scorgo un commento lasciato da uno dei precedenti programmatori:
{ Così funziona, non so perchè ma funziona. Quindi lascio tutto così e vaffan####!}

Allora non sono stato solo io a dare di matto! :-D