Storie dalla Sala Macchine


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Imposta lingua:en it | Login/Register


Importantissimo

Ok, questa e' un'altra "non-storia", nel senso che non c'e' veramente un "finale" e, purtroppo, nessuno riceve una solenne ma meritata mazzata sulla capoccia per il comportamento idiota fino all'assurdo. Ma dato che che sembra un problema continuo, devo per forza scriverne.

Come ho detto, e ripetuto, molteplici volte, sono dell'opinione che se una "cosa" e' parte integrante della catena che, alla fine, produce il denaro che vi entra in tasca, tale cosa dovrebbe meritare tutte le attenzioni ed i riguardi che merita. Quindi non solo essere considerata quando viene acquisita ma anche quando viene gestita e mantenuta.

Il che vale per qualunque cosa, sia un attrezzo, oggetto, tecnologia o persona. Se vi rende dei quatrini, dovreste prendervene cura.

Non ci vuole molto a capire cosa succede quando questa semplice regola non viene rispettata.

Almeno, non ci vuole molto se avete un grammo di cervello funzionante, ma sembra che questo importante ingrediente e' sempre mancante dalla testa di quelli che dovrebbero essere piu' interessati nell'argomento, cioe' quelli che danno gli ordini.

Per esemplificare la cosa, prendero' come esempio non una sola ditta, ma un'intera collezione, perche' tutte queste possono essere consolidate in una unica che le rappresenta tutte, pertanto chiamero' questa ditta-che-non-e-una, $integrale.

Questa gente aveva... una serie di software che provvedevano diversi tipi di servizi per diversi clienti, sostanzialmente il tutto era basato su software abbastanza standard ma incollato insieme con pezzi di roba sviluppati ad-hoc.

Cosa c'e' di male in tutto questo? Niente... fintanto che tieni sotto controllo la cosa e sei in grado di fare manutenzione e modifiche quando necessario al tutto. Ma se la tua idea di "massimizzare il ritorno di investimento" e' "far fare le parti ad-hoc dal primo coglione che entra dalla porta" e poi "terminare il contratto di supporto"... hai qualche cosa che non funziona nella testa.

Adesso, dato che ho gia' fatto un collage di diversi demen... hemmm.. CLIenti, vediamo di mettere qualche dettaglio.

La base del tutto era un software che implementava dei protocolli standard ben documentati, anche se vecchi come il cucco, il problema era che le funzionalita' di quella cosa erano state "estese" usando un insieme di script in perl e python che erano stati scritti nella notte dei tempi da due individui diversi in tempi diversi.

E dato che certe cose erano abbastanza complesse, qualcuno (sospetto una terza persona) aveva anche deciso di aggiungere un database al diorama. Un bel (si fa per dire) MySQL. Purtroppo, uno dei due "programmatori" si era dimostrato un po' troppo creativo ed aveva deciso di svolgere diverse operazioni utilizzano un insieme di Stored Procedure.

E che c'e' di male dite voi? Dipende da come le usi, dico io. Perche' avere uno script richiamato in Cron che esegue una stored procedure va bene, ma quando tale Stored Procedure crea una tabella temporanea, la riempie con alcuni dati di una tabella, salva su disco il risultato in un file .csv e poi richiama un secondo script che legge tale file .csv da disco e lo usa come input per creare un secondo file .sh che contiene una serie di "Insert into" e poi richiama tale file con il fine ultimo di aggiungere dei records in un'altra tabella... Io comincio a pensare che chi ha scritto tutto questo accrocchio sia affetto da Labirintite acuta.

Ora, una procedura puo' essere complessa o complicata. E se vi state domandando che differenza c'e' tra le due e' presto detto: una cosa e' COMPLESSA se e' costituita da tante cose semplici che lavorano all'unisono. Se prendiamo un orologio meccanico, e' fatto da tanti ingranaggi che di loro sono molto semplici, o ruotano trascinando altri ingranaggi nel moto, o oscillano, e finisce li'. Per quanti siano, e' possibile, con pazienza e cura, seguire il moto e capire come funziona il meccanismo. D'altra parte una cosa e' COMPLICATA se e' composta da elementi COMPLESSI e come esattamente questi interagiscono tra di loro non e' chiaro o e' appositamente oscurato. In quest'ultimo caso, la quantita' di pazienza e cura da impiegare per sbrogliare la matassa del funzionamento diventa elevata, ed in alcuni casi e' decisamente impossibile. Soprattutto quando dettagli importanti dell'intero arnese sono mancanti o forniti erroneamente (di proposito o meno).

Il tutto funziono' piu' o meno decentemente (a parte qualche piccolo snafu) finche', un bel giorno, uno dei clienti di $integrale, decise di diventare un ex-cliente. A questo punto fu necessario per $integrale il cambiare la procedura di contabilita' per non contabilizzare certe cose.

E loro, ovviamente, girarono la cosa a noi. E noi, ancora piu' ovviamente, facemmo presente ai signori che "questa roba dovete domandarla a chi vi mantiene la procedura, noi gestiamo solo il server".

Si scateno' immediatamente un putifierio, dove i vari UL/SL di $integrale sostenevano che noi, essendo responsabili per il server, eravamo anche responsabili per il funzionamento dell'applicazione e quindi di tutto il software in generale e pertanto anche di apportare modifiche e correzioni al software quando necessario.

Ed io feci ovviamente presente che 1. No. 2. No. E 3. Anche se fosse, senza una documentazione esaustiva di questo coso non c'e' modo di fare niente che non sia potenzialmente distruttiva e quindi No.

Ovviamente nessuno dei vari SL/UL coinvolti fu soddisfatto della risposta e la cosa fu riportata (e ripetuta) parecchie volte ed a vari livelli. Dove venne ripetuto e reiterato che se $integrale riteneva questo coso "essenziale" per il funzionamento del loro "business", allora ancora di piu' non avrebbero dovuto richiedere modifiche ad cazzum a chi dello stesso non sapeva niente e non poteva garantirne il funzionamento. E quello che avrebbero dovuto fare e' fare sviluppare un prodotto documentato ed avere gli stessi programmatori, o qualcuno comparabile, a farne la manutenzione.

La faccenda ando' avanti per un bel po', con diverse richieste anche di cambiamenti manuali sul database per "correggere" degli errori di fatturazione (che dato che nessuno sapeva come veniva effettuata erano incorreggibili). In effetti, la cosa era ancora in discussione ai tempo della mia dipartita.

E perche' la tiro fuori adesso? Perche' c'e' questo tipo che ha questa pletora di script in VBS che ...

Davide
06/01/2020 13:28

Successivo

I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

10 messaggi this document does not accept new posts

Thomas

Di Thomas postato il 13/01/2020 09:49

Il problema di fondo è che certa gente non sa nemmeno cosa sia, il "supporto", perché finché tutto funziona (più o meno) bene vivono nel mondo delle nuvole. Di conseguenza: perché pagarlo? Tanto è inutile!



Inutile finché poi non succede il patatrack che li riporta rapidamente per terra. Atterrando con l'osso sacro. E lì si piange. O si ride, dipende da quale lato della fattura è scritto il tuo nome.



E non vale certo solo per il settore IT. Per dire, c'è un motivo se le auto di adesso hanno una spia o un allarme per tutto: perché sennò l'utonto-guidatore medio andrebbe avanti per mesi/anni senza curarsi della manutenzione, recandosi in officina solo dopo essere rimasto miseramente a piedi.

-- Thomas

Blahh

@ Thomas Di Blahh postato il 14/01/2020 09:01

Per dire, c'è un motivo se le auto di adesso hanno una spia o un allarme per tutto: perché sennò l'utonto-guidatore medio andrebbe avanti per mesi/anni senza curarsi della manutenzione, recandosi in officina solo dopo essere rimasto miseramente a piedi.

L'utOnto guidatore medio rimane comunque a piedi. "To', s'è accesa quella spia che sembra un motore; chissà cosa vuol dire." Lo chiede al cuGGino, e questo gli risponde "Ah, non è niente, fanno sempre così."; poi resta a piedi e il meccanico gli dice gongolando "Fanno seimila euro per la sostituzione del motore, che è rimasto senza olio e ha grippato di brutto."

 

 

-- Blahh

Messer Franz

Di Messer Franz postato il 13/01/2020 09:54

> Io comincio a pensare che chi ha scritto tutto questo accrocchio sia affetto da Labirintite acuta.

o da copincollite acuta...mi sa che ha trovato pezzi di codice su internet che facevano le varie cose, li ha attaccati per ottenere il risultato finale come quando si gioca a domino, e dato che il risultato sembrava funzionare...

Nel 2001 (mio secondo posto di lavoro) c'era uno "sono contabile ma ho imparato a programmare per stare al passo coi tempi" che faceva programmi....ehmmm....subottimali....del tipo che per acquisire un valore dall'utente si apriva una finestra popup, si inseriva il valore, la finestra prima di chiudersi scriveva il valore in un file formattato, poi scompariva la finestra, poi il programma apriva il file e cercava il dato. No, non sto scherzando. Però nel programma (un gestionale) c'era un tetris 3D! Sai, aveva trovato il componente già pronto su internet, e allora l'aveva aggiunto "perchè ai clienti piacciono queste cose"....

-- Messer Franz

Davide Bianchi

@ Messer Franz Di Davide Bianchi postato il 13/01/2020 10:43

...per acquisire un valore dall'utente si apriva una finestra popup, si inseriva il valore, la finestra prima di chiudersi scriveva il valore in un file formattato, poi scompariva la finestra, poi il programma apriva il file e cercava il dato

...Come' che si chiamava sto tizio? Che mi sa e' lo stesso...

 

 

-- Davide Bianchi

Messer Franz

@ Davide Bianchi Di Messer Franz postato il 13/01/2020 14:32

 

...per acquisire un valore dall'utente si apriva una finestra popup, si inseriva il valore, la finestra prima di chiudersi scriveva il valore in un file formattato, poi scompariva la finestra, poi il programma apriva il file e cercava il dato

...Come' che si chiamava sto tizio? Che mi sa e' lo stesso...

Se la domanda è seria, si trattava di un'azienda di Padova e il gestionale era in Delphi (e giurerei che il suo nome iniziava per G)...

Se non lo era, no, penso che siano solo due esemplari dei cloni malvagi che stanno invadendo il mondo dell'informatica mandati dal malvagio regno alieno degli HR...

-- Messer Franz

Manuel

Di Manuel postato il 13/01/2020 13:15

Non immagino nemmeno quanto possa essere complicato mettere le mani su un "lavoro" fatto in questa maniera... Io sono in crisi perchè devo rimettere le mani su uno script-mostro (che peraltro funziona ancora bene, eh) che ho creato nel 2016 e che sta funzionando initerrottamente da allora!

E pensare che il codice è anche ultracommentato e ho scritto la documentazione, ma nonostante questo, dopo tutti questi anni, riprenderlo in mano mi provoca qualche grattacapo. 

-- ::: meksONE :::

Anonymous coward

Di Anonymous coward postato il 13/01/2020 16:14

Un po' come quando il business, alla nostra richiesta di avere più storage e più potenza di calcolo per poter fornire servizi in alta affidabilità, rispose "ma cosa serve avere le cose doppie se una non fa niente? Metà è sprecata!". Ovviamente, allo stesso tempo, il tempo di ripartenza dopo un guasto (sì, i sistemi si rompono, ma faglielo capire...) doveva essere 0 a prescindere...

-- Anonymous coward

Anonymous coward

Di Anonymous coward postato il 13/01/2020 16:36

Ciò che non è chiaro a molti è che il supporto IT è da considerarsi come le ambulanze.

In un mondo ideale non ne hai mai bisogno e paghi il personale per girarsi i pollici tra un corso di formazione che si rivelerà inutile e l'altro.

Nel mondo reale è brutto averne bisogno e doverli chiamare ma sei ben felice se, una volta che li hai chiamati, intervengono rapidamente e ti risolvono il problema.

-- Anonymous coward

Guido

Di Guido postato il 20/01/2020 07:47

E che c'e' di male dite voi? Dipende da come le usi, dico io. Perche' avere uno script richiamato in Cron che esegue una stored procedure va bene, ma quando tale Stored Procedure crea una tabella temporanea, la riempie con alcuni dati di una tabella, salva su disco il risultato in un file .csv e poi richiama un secondo script che legge tale file .csv da disco e lo usa come input per creare un secondo file .sh che contiene una serie di "Insert into" e poi richiama tale file con il fine ultimo di aggiungere dei records in un'altra tabella... 

Suppongo che fare direttamente la insert da Stored Procedure fosse troppo difficile...

E loro, ovviamente, girarono la cosa a noi. E noi, ancora piu' ovviamente, facemmo presente ai signori che "questa roba dovete domandarla a chi vi mantiene la procedura, noi gestiamo solo il server"

Tutti uguali! E' incredibile. Terminano il supporto e poi chiedono all'hosting...

-- who uses Debian learns Debian but who uses Slackware learns Linux

Nik

Di Nik postato il 23/01/2020 11:33

Tanto per dire, nella software house in cui lavoro attualmente, quando sono entrato usavamo un sistema di ticketing sviluppato in house da uno sviluppatore che già non era più in azienda quando io sono stato assunto.

Dopo un po' si è reso necessario fare delle modifiche al sistema per gestire nuove esigenze e migliorare il servizio in generale. Non vi sono stati dubbi: abbiamo sviluppato un nuovo sistema di ticketing e rimpiazzato il precedente. Stop.

-- Se striscia fulmina, se svolazza l'ammazza

10 messaggi this document does not accept new posts

Successivo


Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gojira