Tales from the Machine Room


Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Set language to:en it | Login/Register


Extremely Important

This is another "non-tale", in the sense that there isn't an "end" to it and, unfortunately, nobody gets hit with a nicely planted baseball bat on the head as reward for the asinine behavour. But since it seems a very well-established behavour, I have to write about it.

As I said multiple times, my opinion is that if there is a "thing" that is pivotal in the chain that, in the end, deliver money into your pockets or bank account, you should take care that the "thing" gets all the required maintenance and support. Before and during purchase or acquiring, during implementation and, moreover, during maintenance.

No matter what this "thing" is. Being it a tool, a technology or people. If it brings you money, you should take care of it.

It shouldn't take a genious to understand what happens when this simple rule isn't followed.

At least, it shouldn't if you have at least 1 gram of functioning brain. But it looks like this very important ingredient is almost always missing in the heads of whoever is in charge, even if they are the ones that should be more interested in the matter.

To portrait the thing, I'll take as example not just one company, but a whole collection of them, because all of them can be coalesced into a single item that represent all of them. As such, I'll call this "company that is not one" $integral.

They had a ... thing, that provided different services for several customers and everything was based on a collection of more-or-less standard software glued together with a plethora of ad-hoc scripts.

What's wrong in all of this? Nothing... As long as you keep the thing under control and can do maintenance and changes when required. But if your idea of "maximize the ROI" is "let the first asshole that walk in the door do the software and then kick him out when it (barely) works", you have a problem. Between your ears.

Now, since I've already glued lot of idio...hemm.. customers, let's add some detail.

As said, the base of everything where a number of software that implemented well-documented protocols, some of them as old as Internet. The problem was in the plethora of scripts used to either glue different pieces together or "extend" the functionalities. Those scripts were made either in perl or python, and were written by different people in different time and with different style.

Since some operations were quite complex, somebody (I suspect somebody else from the script developers) decided to add a database to the system, a nice (let's pretend) MySQL. Unfortunately, one of the "developer" was quite a creative lad, that decided to add a series of Stored Procedure to the picture.

And what is the problem? You ask. It depends how you use them, say me. Because to have a script called in Cron that execute a stored procedure is no problem, but when the stored procedure create a temporary table, then fill it up with data coming from various tables, then write the resulting table on disk as a CSV file, then run a second script that read the CSV and use it as input to build another script that perform INSERT into the database...
I begin to think that whoever wrote this garbage was affected by schizofrenia.

Now, a procedure can be complex or complicated. And if you are asking yourself what is the difference between the two, is easy to explain. A thing is COMPLEX if it is composed by many simple things that works all together. Take a pocket watch for example. Is made up with lots and lots of small gears, each one of them is very simple, they all rotate or oscillate and drag the others in the motion, and, with patiente and care, you can follow the process and understand how the whole thing works. On the other hand, a thing is COMPLICATED when is made up with lots of complex things and how they are connected together is undefined or hidden (by chance or design). At this point it doesn't matter how patient and careful you are, you won't be able to figure out completely the function of that thing. Especially when some detail is missing from the picture.

So everything in that thing worked kinda ok (if we ignore some little problem) until, one day, one of $integral's customer decide to become an ex-customer. And at that point $integral had to modify its procedure to cut them out.

And them, of course, turned the thing to us. And we, of course, pointed out that "this stuff should be done by your developers, not us".

And almost immediately a giant fight developed because the various UL/SL of $integral said that since we were responsible for the server, we had also to be responsible for the application, and so also to provide fixes and changes to the same when required.

And of course I pointed out that 1. No, 2. No. And 3. Since we had no documentation whatsoever of the thing, there was no way to do any kind of change without potentially fucking everythign up and so No.

And of course, none of the various UL/SL involved was happy about that answer, so the thing was reported and repeated numerous time at several levels, and we also repeated that if $integral considered that thing "essential" for "business continuity", they should also have considered maintenance and support of the thing and not requesting changes ad penisus to somebody that didn't know anything about the thing and couldn't guarantee the functionality of the same.

What they had to do, was to ask some competent developer and produce a software with documentation and support.

The thing went on for a while, even with some request of manual changes into the database to 'fix' some little problem with the invoicing (since nobody knew how to change stuff in it). In fact, they were still talking about it when I left.

And why do I pull this shit out now? Well... there is this guy that has this bunch of VBS scripts that...

Davide
06/01/2020 13:28

Next

Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.

10 messages  this document does not accept new posts

Thomas

By Thomas posted 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 By Blahh posted 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

By Messer Franz posted 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 By Davide Bianchi posted 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 By Messer Franz posted 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

By Manuel posted 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

By Anonymous coward posted 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

By Anonymous coward posted 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

By Guido posted 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

By Nik posted 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 messages  this document does not accept new posts

Next


This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.


This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.

This site isn't optimized for vision with any specific browser, nor it requires special fonts or resolution.
You're free to see it as you wish.

Web Interoperability Pleadge Support This Project Powered By Gigan