sabato 14 novembre 2009

Alla faccia della professionalità...

In ufficio abbiamo il "peace-maker", ossia un pezzo di cavo elettrico spesso almeno 3cm, bello duro. Nonostante il nome rispecchi in pieno la sua funzione (ovviamente non è mai stato usato anche se spesso verrebbe voglia di...), io l'avrei sempre voluto chiamare "The Wolf", con chiaro e ovvio riferimento al personaggio interpretato da Harvey Keitel in Pulp Ficion (1984) ed alla sua splendida frase "I'm Winston Wolfe. I solve problems."

Ieri (Venerdì 13) l'avrei voluto usare volentieri sulle gengive del fornitore che come risposta ad una mia email, nella quale evidenziavo i problemi sia architetturali che realizzativi del database che si trova sotto una applicazione (oltretutto piuttosto importante) usata in azienda ha avuto il coraggio (e la sfacciataggine) di rispondere che sarebbe piaciuto anche a loro sviluppare un 'bel' database ma non hanno avuto tempo. Già.
Alla faccia della professionalità.



Oltretutto andando ad analizzare bene la cosa, è facile rendersi conto che il problema non sta nella mancanza di tempo, ma nell'incapacità di base. Il database in questione è composto da circa 15 tabelle. Eppure nonostante la sua ridottissima dimensione riesce ad avere una serie di difetti da record:
  • nessuna delle tabella è dotata di una chiave primaria, nonostante siano tutte dotate di un campo che ha quella funzione. Loro dicono che la loro "copia" di sviluppo ha le chiavi primarie e che non sanno come mai la versione nostra non le abbia: la risposta sta nel fatto che le hanno aggiunte dopo che lo hanno rilasciato, perchè mi manca ancora la voglia di cancellare chiavi primarie per il solo gusto di...;
  • non esiste una "naming convention" costante: ad esempio, i campi di descrizione possono variare da XxxDesc, XxxDescr, DescrXxx o DescXxx. Questo non può derivare dalla fretta e dal poco tempo a disposizione, ma da vera a propria incapacità, dall'assenza di uno schema e di regole (mentali e/o aziendali) nello sviluppo di progetti. Oltretutto la cosa diventa ancora più grave quando questo accade in database molto piccoli;
  • non esistono indici. Anche la risposta a questo appunto mi ha fatto inorridire: "non li abbiamo messi così potete metterli voi in base all'uso". Certo, peccato che le interrogazioni al sistema non le abbiao scritte noi, ma loro. Loro sanno come accedono ai dati, il tipo di query... insomma, loro hanno scritto l'applicazione e loro sono i più adatti a disegnare gli indici. Noi, semmai, possiamo intervenire dopo, aggiungendone ad hoc...
La cosa triste... tristissima, è che li abbiamo pagati e continuiamo a pagarli per patches (già, paghiamo anche quelle), interventi spot, piccole modifiche... per loro il bottoncino con il calendario per la scelta di una data non era parte integrante di un campo data... già...

Mi piacerebbe fare il nome dell'azienda e del responsabile, ma rischierei troppo. Ma se volete contattatemi in provato che vi metterò in guardia molto volentieri da questa manica di incapaci.