lunedì, febbraio 20, 2012

Analisi dei requisiti? Non serve: fammi un pezzo alla volta

È un gelido mattino di gennaio, i gatti mi hanno guardato con quella faccia da "Ma tu sei completamente deficiente!" quando sono uscito di casa e la Gamamobile(tm) era tramutata in un ghiacciolo che mi ha ustionato anche solo restando ad un metro di distanza.

La mattinata lavorativa comincia con una mail da parte $utOnto@$exGestoreTributiImmobili. The story so far: fino a tre anni orsono $exGestoreTributiImmobili forniva un software che, come dice il nome, permetteva di gestire la tassa sugli immobili. Quando venne iniziato $megaProgetto al sottoscritto appiopparono la scrittura di un applicativo che facesse le stesse cose ma meglio. Per farla breve il progetto è stato fermato cinque volte perché "coloro che tutto vogliono" dovevano fare in modo di far usare il software di $aziendaEsterna. Cosa è accaduto? Il nuovo programma si è rivelato una porcata (consegnato in ritardo di un anno tra l'altro NdGama), la mancanza di alcune funzionalità ha fatto in modo che l'ufficio competente usasse quel poco da me scritto affiancato al programma di $exGestoreTributiImmobili (il cui contratto è stato rinnovato per gli ultimi anni).
Tutto questo fino al cambio dei vertici.
Il progetto è ripartito, questa volta in maniera definitiva, ed io e $nuovaCollega ci siamo messi a sviluppare con la ferocia di un gruppo di labrador in vista della confezione aperta del Ciappi.

Di come è andata la storia dello sviluppo del nuovo programma parlerò in un altro momento e mi focalizzo su quanto segue: essendo il programma di $aziendaEsterna una porcata colossale i dati storici da importare sono quelli di $exGestoreTributiImmobili.
Siccome $collegaNuova è un genio nel trovare anomalie e puntigliosa al punto giusto per stanare qualsiasi bug presente nel codice, l'operazione di importazione ha dato risultati inaspettati: la banca dati fa pena! I principali criteri di integrità sono risultati dediti al meretricio, il rispetto per i tipi di dati un'opzione trascurabile (campo numerico: valore "1-2"... $mioSql l'ha fatto diventare -1 tra l'altro!), dati di test ancora presenti nella banca dati di produzione e, come ciliegina sulla torta, campi di importanza fondamentale vuoti come l'anima di un commerciale.

Considerando che tale programma è stato usato per un decennio inizio a capire come mai ci sono stati tutti quei problemi nella gestione di quell'ufficio...

Tornando a noi è quindi facile immaginare come $nuovoDirigente si sia inc@zz@to come un'ape ed abbia preteso da parte di $exGestoreTributiImmobili una bonifica dei dati.

Il colloquio con $utOnto è stato del tipo:

$nuovoDirigente - Questi dati fanno schifo!

$utOnto - Ve li bonifichiamo noi dati!

Dopo un mese da queste frasi e dalla fornitura delle anomalie (di un solo anno) è tornato $utOnto con $tiziaSconosciuta per dire che si sarebbero occupati dell'operazione di bonifica. Ci hanno messo un mese per decidere chi doveva fare il lavoro? Andiamo male, molto male!

Ed eccoci quindi al presente: l'email di $utOnto@$exGestoreTributiImmobili


Oggetto: R: Estrazione dati errati
A: Gama, $nuovoDirigente

Buongiorno,

invio i file bonificati per i fabbricati e per i terreni con identificativi
mancanti e/o errati.…



In allegato un file.

L'apparizione di $nuovaCollega sulla porta con il fumo che usciva dalle orecchie doveva avvertirmi.

1600 righe presenti nell'allegato
6 bonificate

"Ve li bonifichiamo noi i datiiii!"

Quasi scordavo: To be continued!

Gama

10 commenti:

Anonimo ha detto...

... no, cioè, il FORNITORE DEL SOFTWARE si offre (nemmeno subisce che gli venga imposto, no, si offre lui) di BONIFICARE I DATI? I DATI?

... come dicevano i Bulgari: rabbrividiamo ...

:-)

Giuda

Daniele C. ha detto...

Guarda, io ho dovuto preparare l'import dei dati nel nuovo gestionale di un azienda, prendendo i dati dall'Ex sistema sviluppato su "FileMaker", una versione di 5 anni fa tra l'altro.
Inutile dirti che ho dovuto rifare il db due volte, dato che, analizzando i requisiti, la metà dei campi erano di tipo sbagliato.
Da notare che non sono io che li ho fatti sbagliati, ma loro che li hanno voluti di tipo sbagliato.

Es classico: campo Portata Gru (N.B parliamo di carriponti che sollevano tonnellate)
IO - Ho fatto il campo Double, cosi scrivete 3,5 indicando le tonnellate
Loro - Nono, noi mettiamo i Kg

Rendi il campo Integer...
IO - Ho messo il campo Intero, così scrivete 3500, indicando i Kg...
Loro - Nono, perché ci possono essere 2 Paranchi/Carrelli, quindi il dato lo scriviamo 3500-2500.

Rendi il campo Stringa...
IO - Ora potete scriverci quello che volete, basta che ve ne andiate...
Loro - Aspetta! Perché se ordino i dati per la Portata non me li ordina in modo corretto?
IO - Perché è una stringa! 3000 è maggiore di 10000 dal punto di vista di una stringa!
Loro - Nono, non va bene, devi ordinarli in modo corretto!

6 MESI TUTTI COSI'

Daniele C. ha detto...

Per non parlare di quando ho dovuto importare i sopradetti dati...

IO: Allora importo il dato nel campo Paranco come numero, controllando se è in formato 5000-3500, in tal caso importo il secondo numero nel campo Paranco2...
Loro: Ah, a volte ho messo 5000/3000!
IO: Vabbé, aggiungo il contro...
Loro: Ah, oppure 5000#3000!
IO: ... altro?
Loro: 5000 - 3500, 5000+3500, a volte lo ho messe in tonnellate ed altre volte le ho messe in un altro campo che non c'entra nulla
IO: ... ma perché hai fatto una roba simile?
Loro: È che lo compilano in tanti, ed ognuno ha il suo metodo. È per questo che vogliamo un gestionale che non permetta queste cose.
IO: (depresso) ok...
Loro: Ah, per l'$altroCampoNumerico
IO: Avevamo detto di farlo inter...
Loro: Nono, fallo testo che ognuno ci mette quello che vuole
IO: (alla "Urlo di Munch") HAI APPENA DETTO CHE NON LO VOI FARE!
Loro: Nono, meglio così!

Valeren ha detto...

Non so se sto ridendo più per la storia o per i commenti.

Sei righe bonificate in più di un mese... Non mi stupisco che il sw facesse pena.

P.S.: Trovo stupido che ogni singola PA si debba scrivere il gestionale.

P.P.S.: premio della giuria per la frase " vuoti come l'anima di un commerciale ".

Gama ha detto...

Risposte al volo:

@Giuda: in realtà c'è un contratto che li obbliga a farlo, quello che volevo sottolineare è la nonchalace con cui il tizio sboroneggiava l'operazione.

@Daniele: vedo che anche tu hai subito quello che noi abbiamo vissuto e che racconterò nella prossima parte di storia. Massima solidarietà!

@Valeren: per quanto riguarda la mia esperienza ti posso dire che, a quanto pare, scrivere il proprio gestionale sia l'unica soluzione senza che nessuno ci mangi sopra. Saltano fuori miliardi di software che cercano di monopolizzare la gestione di questo o quell'altro servizio che, casualmente, vengono generati da aziende che in qualche modo hanno a che fare con i soliti noti e che, sempre casualmente, sono disposte a concedere gratuitamente il software facendosi pagare delle cifre assurde per una valanga di servizi e customizzazioni.
Se poi consideriamo che io e la mia collega abbiamo scritto in tre mesi quello che i nostri predecessori non hanno fatto in più di tre anni solo al costo del nostro stipendio (1198€ mensili + 56€ per mia moglie a carico NdGama)

Adesso, giusto per la cronaca, stanno cercando di propinare un software (e relativo consorzio a cui aderire) che io ho già scritto al 90% due anni fa, il progetto è stato stoppato in quanto "non utile"... Adesso è diventato fondamentale!

Di cosa si tratta? Di un software che aggancia anagrafe, catasto, utenze elettriche, utenze del gas, contratti di locazione, successioni, dichiarazioni dei redditi e pagamento dei tributi. Allo stato attuale mancano giusto le locazioni ma, per usare un francesismo, in questo momento ci sono strumenti con cui posso fotografare anche i peli del culo di un evasore. Ed il tutto è stato letteralmente buttato nel cesso. Poi mi chiedono perché mi incazzo.

clark ha detto...

6 righe su 1600?
anche a spanne si puo' sapere il numero delle maledizioni e degli improperi che avete lanciato ai tizi e alle loro 7 generazioni antecedenti e successive?

Gama ha detto...

@clark: non abbiamo ancora finito di scagliare anatemi, oggi la mia collega ha inviato 7000 record da bonificare che potrebbero essere delle duplicazioni.

Valeren ha detto...

Gama, fammi capire.
In linea di massima il tuo tool è simile a quello che Finanza / Tesoro stanno mettendo insieme per stanare gli evasori.

Solo che ci stanno lavorando da molto, non riesce a mettere insieme le banche dati, è lento, è costoso...
Non penso di stare sbagliando.

Tienilo buono, perché se dovessero privatizzare la caccia all'evasore apriamo una società.

Gama ha detto...

@Valeren: si hai capito giusto, è sviluppato però solo sulle banche dati di Novara ma, sinceramente, basta aggiungere in tutte le tabelle in cui non è considerato un identificativo univoco del Comune di riferimento (tipo codice Belfiore), modificare poche query, ed il gioco è fatto. Ovviamente diventerebbe moooooolto più pesante incrociare così tanti dati.

Valeren ha detto...

Però se fornito alle singole entità comunali /provinciali / regionali, con l'indicazione di trovare possibili evasori nella propria zona, sarebbe uno strumento importante.
In quanto pronto.
In quanto funzionante.

Tienilo da parte, socio.