Storie dalla Sala Macchine


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Login/Register

Uno + Uno = Zero

Tanto tempo fa, in una galassia lontana lontana, prima che un certo "George" cominciasse ad assomigliare troppo a Jabba the Hut (anche nei modi di fare), esistevano degli ANALISTI che decidevano cosa doveva fare il software e su quali piattforme avrebbero dovuto funzionare, questi scrivevano le specifiche del software che poi erano usate dai PROGRAMMATORI per scrivere il software.

Ovviamente esistevano dei "cicli di aggiornamento" che in generale duravano piu' di 3 ore e non venivano ripetute 32 volte al giorno, ed in quelle occasioni si vedeva cosa doveva essere aggiornato dell'infrastruttura.

Poi il tempo passa e le prequel si sprecano... cosi' arriviamo ai giorni nostri quando l'analisi e' una cosa che si da dallo psichiatra ed invece di PROGRAMMATORI abbiamo "Apps Developers Supremo" (davvero: ho visto il titolo sul biglietto da visita di uno, per poco non mi strozzo con il caffe'), che come primo passo nella procedura di sviluppo o di manutenzione di qualsiasi cosa deve mettere necessariamente "prendere l'ultimissimissima versione di qualunque stronzata che potrebbe essere usata oppure no".

Allora, spieghiamoci, non e' che non si dovrebbero aggiornare gli ambienti (di sviluppo o meno), solo che, di solito, ci deve essere un motivo ed una procedura ben definita per aggiornare qualunque componente di un ambiente, in funzione di cosa questo componente fa e quanto va ad influire sul resto del sistema.

Aggiornare il DNS? Probabilmente non dara' nessun problema su un webserver. Aggiornare il web-server stesso? Heeeem... Forse prima dovremmo verificare se le 47000 redirect e rewrite funzionano ancora?

Comunque sia, bando ai preamboli e sotto con la storia.

Capito' un bel giorno di maggio che uno dei nostri clienti decise di farsi fare un nuovo sito interdet con una qualche connessione ad un feed di dati, non ricordo esattamente il cosa ed il come, ma della faccenda fu notificato il nostro Marketing Man che si affretto' ad inviare una offerta per un nuovo "serveruccio" (come lo defini' lui), con installazione standard LAMP.

Dopo il dovuto tira-e-molla, il cliente decise di non avere un backup ne' un sistema di test (si, lo so, se le cercano). A questo punto il server fu "installato" da qualcuno (chiamiamolo CL) ed il programmatroto di turno comincio' a domandare accessi, password e capperi vari.

Dopo un paio di giorni ricevemmo le prime lamentele: la versione di PHP installata non era quella richiesta. Richiesta a chi e quando? A nessuno e mai ovviamente, ma per il programmatroto "installare PHP" significa "installare l'ultimissima versione piu' uno di PHP" e non "installare la versione stabile e collaudata e soprattutto supportata dalla distribuzione".

Ripetete la stessa cosa per la meta' delle librerie e roba varia che erano installate su quel server.

Ora, come semplice esercizio di resistenza allo stress, mi andai a cercare i changelog di cio' che era cambiato tra le varie versioni e, per quello che ne capii io, sostanzialmente niente era cambiato, almeno niente che avrebbe dovuto essere critico per il funzionamento di quel sito.

Comunque sia, lo stesso CL installo' le nuove versioni e ripasso' la palla al programmatroto.

Circa una settimana dopo, che, incidentalmente, coincideva con -3 giorni al momento in cui tale sito doveva andare "live", ricevemmo una telefonata in tandem dal cliente e programmatroto perche' apparentemente il sito non funzionava e non si capiva perche'.

Dato che quel giorno mi trovavo di turno come "supporto clienti", mi misi a guardare questa pila di schifezze.

Prima cosa: un rpm -q mi disse che la versione di php installata era ancora quella originale, un rapido controllo pero' mi disse che php-cli era la versione nuova... Dal che dedussi che CL non aveva disinstallato la versione originale e reinstallato quella nuova via package, ma aveva fatto qualche cosa d'altro. Qualche cosa di molto sbagliato probabilmente.

Seconda cosa: MySQL non stava funzionando. Cioe' mysql sembrava funzionare, ma dopo la connessione non ricevevo un tubo di niente. Di nuovo, rpm diceva che la versione installata era quella precedente.

Stessa cosa per quasi tutti i moduli di php e parecchia altra roba.

Una delle richieste speciali del cliente era di installare una specifica versione di ImageMagik. Qui le cose si infittiscono, perche' RPM mi diceva che ImageMagik non era installato per niente ma l'eseguibile era presente, tuttavia ad eseguirlo ritornava un segfault.

Insomma il server avrebbe dovuto essere reinstallato daccapo.

A questo punto ho deciso di passare la faccenda a DumBoss e gli dissi c'erano due sole vie: reinstallare tutto il server (e domandare a CL perche' cazzo aveva marcato il server come "pronto" nel foglio di installazione) o cercare di capire cosa c'era di sbagliato, ma io potevo fare quello o andare avanti con il 'supporto clienti' perche' le due cose erano totalmente incompatibili tra di loro.

DumBoss a questo punto si rese conto che aveva autorizzato un po' troppe ferie e giorni di "lavoro da casa" tutto insieme, con il risultato che l'ufficio era piu' deserto della spiaggia in dicembre mentre i tickets straripavano. Ovviamente uno degli assenti era CL. Io decisi di lasciare DumBoss a ruminare sulle difficolta' del management quando non hai nessuna voglia di "managerare" e per quel giorno non sentii piu' nulla.

La mattina dopo, notai che il suddetto CL era presente in ufficio, onde per cui gli feci immediatamente qualche cauta domanda sul server e su quello che lui considerava una procedura di installazione ed aggiornamentoaccettabile, le sue risposte tuttavia furono... insoddisfacenti.

Apparentemente l'idea di CL riguardo ad "installare la versione X.Y di Z" consisteva nel "prendere una macchina con la versione X.Y di Z e copiare gli eseguibili su quelli esistenti". Ovviamente questo non aveva fatto molto bene alle dipendenze. E se la versione X.Y di Z non era disponibile da nessuna parte? Allora la procedure diventava "prendere il package dal primo sito che lo fornisce ed installarlo con '--force'", anche questo non aveva fatto molto bene alle dipendenze.

Dopo la nostra piccola discussione e' risultato abbastanza chiaro che l'unica soluzione era di reinstallare daccapo l'intero server perche' il cercare di aggiustare quello che non funzionava ci avrebbe richiesto molto piu' tempo di quello che ci restava prima della fine dell'universo. E che CL avrebbe fatto faville a friggere gli hamburger da MacDonalds.

Davide
22/03/2017 15:12

Precedente 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.

8 messaggi posta messaggio
Guido Di Guido - postato il 12/06/2017 07:26 - rispondi

c'e' di peggio, tipo quando nuovo collega appena arrivato (che per non sbagliarsi chiameremo $CL) senza nemmeno aver visto l'applicativo sul quale deve lavorare propone di rifarlo ex-novo usando un altro framework (evidentemente l'unico che lui conosce).

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


Daniele C.@ Guido Di Daniele C. - postato il 12/06/2017 16:10 - rispondi

 

> c'e' di peggio, tipo quando nuovo collega appena arrivato (che per non sbagliarsi chiameremo $CL) senza nemmeno aver visto l'applicativo sul quale deve lavorare propone di rifarlo ex-novo usando un altro framework (evidentemente l'unico che lui conosce).

mmm, a costo di beccarmi una LARTata, mi sento di dover spezzare una lancia a favore di codesto CL. Quantomeno, lui ci ha provato a voler sviluppare con un sistema che lui conosce e, si spera, sappia usare, invece di mettersi a fare i salti mortali per martellare roba in un framework sconosciuto, finendo per fare schifezze... (avendo sviluppato più cose con linguaggi e framework che non conoscevo, so di cosa parto, o se lo so...)

Certo, dal punto di vista dello sviluppo di un programma è impensabile ripartire da zero perché non funziona una cosa (tipo: Ah, guarda, ho una gomma a terra, compero un'altra auto! O_o^), ma credo che a tutti i programmatori sia capitato almeno una volta di prendere in mano un progetto di tempo addietro e di voler ripartire da zero, se non per evitare che ci sia scritto il proprio nome in cima ad ogni file pieno di porcate assurde...

--
"I was watching the London Marathon and saw one runner dressed as a chicken and another runner dressed as an egg. I thought: 'This could be interesting.'" -Paddy Lennox
---
D.


Guido@ Daniele C. Di Guido - postato il 13/06/2017 11:29 - rispondi

LART-ata non mi permetterei mai, pero' nemmeno io conoscevo icefaces 2 anni fa. Mi son messo li ed ho imparato qualcosa di nuovo... Se avessi avuto quest'altro atteggiamento non avrei imparato ad usare Hibernate, JPA, Spring ed un sacco di altra roba...

Poi dici giusto sul discorso che non si rifa un progetto che funziona, e vorrei aggiungere che e' stato assunto per fare manutenzione non per rifarlo...

<i>ma credo che a tutti i programmatori sia capitato almeno una volta di prendere in mano un progetto di tempo addietro e di voler ripartire da zero, se non per evitare che ci sia scritto il proprio nome in cima ad ogni file pieno di porcate assurde...</i>

Ne ho visti parecchi, pero' dipende da quello che vogliono da te, magarii e' un progetto "moribondo" per il quale non si investe piu' e deve solo "tirare avanti" un altro po' e nessuno vuole spendere soldi nel rifarlo o semplicemente ci sono cose piu' urgenti da fare e non ci sono abbastanza programmatori (aka budget) da dedicare allo scopo... Le ragioni sono molteplici. 

Quindi da una persona che abbia un minimo di competenze, prima di sparare sentenze, mi aspetterei di prendere consapevolezza della situazione.

Il progetto ha dei problemi? Benissimo intanto dimmi quali (e quindi devi entrare nel progetto, nonlo puoi dire senza nemmeno averlo visto). Una volta appurato quello vediamo come si risolvono. Non nego che ci siano delle classi scritte ad minchiam, ma nel nostro caso non risolvi cambiando framework e rifacendo il progetto da 0 ma semplicemente rifattorizzando quelle parti scritte male...

> c'e' di peggio, tipo quando nuovo collega appena arrivato (che per non sbagliarsi chiameremo $CL) senza nemmeno aver visto l'applicativo sul quale deve lavorare propone di rifarlo ex-novo usando un altro framework (evidentemente l'unico che lui conosce).

mmm, a costo di beccarmi una LARTata, mi sento di dover spezzare una lancia a favore di codesto CL. Quantomeno, lui ci ha provato a voler sviluppare con un sistema che lui conosce e, si spera, sappia usare, invece di mettersi a fare i salti mortali per martellare roba in un framework sconosciuto, finendo per fare schifezze... (avendo sviluppato più cose con linguaggi e framework che non conoscevo, so di cosa parto, o se lo so...)

Certo, dal punto di vista dello sviluppo di un programma è impensabile ripartire da zero perché non funziona una cosa (tipo: Ah, guarda, ho una gomma a terra, compero un'altra auto! O_o^), ma credo che a tutti i programmatori sia capitato almeno una volta di prendere in mano un progetto di tempo addietro e di voler ripartire da zero, se non per evitare che ci sia scritto il proprio nome in cima ad ogni file pieno di porcate assurde...

 

--- D.

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


Gama Di Gama - postato il 12/06/2017 08:10 - rispondi

Volevo commentare scrivendo qualcosa di intelligente e profondo, poi ho notato che la quantità di profanità che stavo per scrivere mi sarebbe costata un permaban dall'intera rete! cheeky

 

Mi chiedo chi faccia i colloqui a certi soggetti...

--
Tutti abbiamo bisogno di credere in qualcosa... Io credo che mi faro' un'altra birra!


Daniele C.@ Gama Di Daniele C. - postato il 12/06/2017 16:13 - rispondi

 

>Volevo commentare scrivendo qualcosa di intelligente e profondo, poi ho notato che la quantità di profanità che stavo per scrivere mi sarebbe costata un permaban dall'intera rete! cheeky

Se più persone la pensassero come te, Gama, Internet sarebbe un posto migliore!!!

 

> Mi chiedo chi faccia i colloqui a certi soggetti...

È una cosa che mi chiedo sempre anch'io: devi fare un lavoro X, perché non chiedi a qualcuno che X lo sa fare?

--
"I was watching the London Marathon and saw one runner dressed as a chicken and another runner dressed as an egg. I thought: 'This could be interesting.'" -Paddy Lennox
---
D.


Francesco Di Francesco - postato il 12/06/2017 11:49 - rispondi

Ma il CL in questione è lo stesso dei disastri precedenti o ne avete un intero zoo?

--
Francesco


Davide Bianchi@ Francesco Di Davide Bianchi - postato il 13/06/2017 07:20 - rispondi

Ma il CL in questione è lo stesso dei disastri precedenti o ne avete un intero zoo?

SERRAGLIO. Si dice "serraglio"

--
Davide Bianchi


Mirko@ Davide Bianchi Di Mirko - postato il 13/06/2017 08:35 - rispondi

Io lavoro per un'azienda che sviluppa un SW per la progettazione elettrostrumentale su base SQL Server: penso che quello che hai indicato sia il workflow utilizzato dai miei teutoprogrammatroti per ogni rilascio di release...

@Davide: domenica ero in Autodromo a Monza, e sono giusto passato dal Serraglio: non ci stanno tutti i tuoi CL...

@Gama: anche il tuo diario langue...

--
Mirko


8 messaggi posta messaggio

Precedente 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 Gort