continua (next page) main index Carissimi, vi voglio raccontare della più colossale impresa che io abbia mai affrontato nella megaditta dove lavoro. TUTTO VERO! Ma stavolta ci metto un po' di descrizione del lavoro che avremmo dovuto fare - la storia è troppo lunga da raccontare tutta in un unica pagina.

Fine aprile 199X. Mi telefona il direttore megagalattico e mi dice... Ma questo è l'inizio che già sapete. Passiamo subito in medias res.

Yes, the documentation they gave me was in German, and I had to use all my intuition resources to understand at least the minimum useful information!!

All'epoca (maggio 199X) c'era XXX, il commerciale coi baffi (chissà se indossava anche la camicia coi baffi), conosciuto più per i suoi baffi che per tutto il resto. In un altro messaggio ve lo presenterò, per ora vi basti sapere questa sua storica frase:

"XXX, XXX: questa è una commessa particolarmente seria e noi non possiamo certo sfigurare. La data entro cui il vostro lavoro software e firmware deve essere completo è l'11 luglio, poco importa se il magazzino a XXX è ancora in costruzione o loro non sono pronti".

NON FINÌ LA FRASE!!

L'undici luglio 199X eravamo APPENA partiti col lavoro. Si trattava di scrivere un programma intelligente su terminalini "via radio", a cui avremmo lavorato io ed Er Paolino, e di scrivere un programma su PC che gestisse tutta la comunicazione tra i terminalini e l'host del megacliente (sul PC però avrei lavorato io da solo perché ero "notevolmente più esperto" ;-).

Documentazione in nostro possesso:

firmware terminalini, linguaggio da usare: PL/M 80 Clicca qui per le Ferrovie dello Stato

1) un listatone di ottanta pagine strettamente commentato in tedesco, con variabili in tedesco e stile di programmazione tedesco (vi spiego dopo che significa "stile di programmazione tedesco"!);

2) spiegazione delle librerie utilizzabili per stendere il firmware, in stretto tedesco, corrette a penna da un altro tedesco, e con aggiunte a matita di un altro tedesco ancora. L'unica cosa facilmente leggibile erano i numeri di pagina;

3) programmino di esempio di colloquio terminalino/PC, in grafica EGA ed in stretto, strettissimo, rigorosissimo tedesco. TRAGICAMENTE all'epoca nella megaditta l'unico computer "con grafica" era uno sterco umano di PC/XT con CGA, per giunta con monitor traballante. Gli altri tutti Hercules o addirittura monocromatica... e dunque questo software non lo abbiamo MAI, dico MAI visto in funzione prima di aver completato il lavoro (poi vi spiego anche perché non lo abbiamo funzionalmente MAI completato);

software su PC per gestione colloquio PC/terminalini/host computer; linguaggio da usare: C

1) un listato di una paginetta scarsa, sbiadito, ovviamente commentato in tedesco, e per giunta non provato su PC (infatti non funzionava): serviva solo a capire come doveva essere strutturato il corpo del programma-tipo;

2) un elegante, enorme, rilegatissimo manualone in tedesco letterario con la descrizione più particolareggiata che si potesse immaginare della scheda di colloquio PC/host. Pagine dedicate alla programmazione di suddetta scheda: mezza, scarna, ed in tedesco antico;

3) un listato, spaventosamente incompleto, di un programma di carico e scarico dati dall'host, che ovviamente usava proprio le funzioni di cui io non avevo bisogno (filetransfer/XXX anziché il bypass della stampante).

Click here for helicopters pages In pratica, quando ricevemmo tutta (?) questa robaccia a fine giugno, ci guardammo in faccia e ci dicemmo: "siamo nella XXX più nera".

Decidemmo di cominciare dal programma per i terminalini, che sembrava più difficile (mai dire mai...!). Passammo giornate intere a sbraitare e a fare prove. Ogni volta che facevamo una modifica al programma (che assemblavamo su PC) dovevamo resettare il terminalino, aggiornargli un po' di dati da firmware, e ricaricargli il programma. Ogni volta si perdevano una ventina di minuti netti: i 20-30k di codice 8080 venivano schiaffati nel terminalino via porta seriale, a 2400 baud (!) e per giunta non in un formato "umano" (tipo binario diretto o hex), ma in formato Intel, cioè con righe hex con CRC e address, qualcosa del tipo /0000223300112233445566..., per cui era di una lentezza esasperante. Se putacaso poi si staccava il "XXX" (così chiamavamo quei maledetti SERVICE-STECKER per entrare nel modo supervisore del terminalino), dovevamo ripetere tutta la procedura daccapo. E via di nuovo con PROGRAMM WIRD GELADEN... ;-).

Verso fine luglio c'era da andare su a XXX e presentare al XXX un prototipo funzionante di tutta l'impresa da concludere; l'appuntamento "sicuro" per la conclusione del lavoro era settembre. Noi eravamo nella cacca più verde, per cui, d'accordo col megaboss, decidemmo di creare per l'occasione il programma ALLI-XXX (che sta "allisciamento XXX"): l'idea era "noi con questo ci allisciamo il Fala, poi dopo se ne parla". L'ALLI-XXX fece il suo dovere, noi già sudavamo freddo, ma il XXX fu contento e partì per le ferie in santa pace, mentre noi dovevamo capire cosa c'era che non andava e perché ALLI-XXX funzionava decentemente in locale (senza scambio dati via radio) e non funzionava per niente via radio.

Click here for Circumvesuviana Dimenticavo di parlare della PROGRAMMAZIONE! Il terminalino funzionava con un sistema multitasking (su processore 8080, cose da pazzi): il sistema operativo si chiamava RTM80 o qualcosa di simile (cominciava sicuramente per R), e noi dovevamo sviluppare qualcosa come mezza dozzina di task diversi ognuno con un compito ben specifico.

I tedesconi usavano un sistema di programmazione oserei dire davvero notevole (questo lo dico oggi, all'epoca dicevo "ma che diavolo è 'sta roba??!?").

In pratica il task principale è un ciclo che chiede ad un altro task qual è il prossimo evento da processare; da qui, e da una tabella di comportamento "se stato X ed evento Y allora esegui Z e passa allo stato K", decide cosa fare e cosa far fare agli altri task! (qualcuno la chiama "programmazione tabulare", qualcun altro "programmazione reticolare", o altri nomi ancora).

Bene, noi riuscimmo a ripartire dal programma dimostrativo dei tedeschi, modificando qua e là solo dove strettamente necessario, e cominciammo finalmente a vedere -verso settembre- un prototipo QUASI funzionante.

Però per vederlo colloquiare via radio dovemmo sputar sangue. Alla fine ci arrendemmo e il megaboss organizzò una megamissione in Germania con me ed Er Paolino per farci spiegare dagli unni cosa c'era che non andava.

In Germania, tra le prime frasi [in inglese mangiucchiato, sia da loro che da noi; solo io lo parlavo bene, anche se fino a due anni prima avevo sempre preso 5 in inglese al liceo], ci fu una sentenza pressoché da infarto: [traduco] "Ma voi non avete linkato il modulo TRN, è normale che non funzioni!". Noi: "ma non ci ha dato nessun errore!". Il tedesco XXX ci disse "beh, infatti quel compilatore NON genera errori se uno #include un file che non esiste, ma solo un WARNING!". Seguirono imprecazioni in napoletano stretto ed in romanesco/torpignattonto stretto, più tardi riprese la discussione. Scoprimmo che il modulo TRN e una quantità non piccola di altri moduli, a noi non erano mai arrivati. I tedesconi ce li diedero, ovviamente SENZA documentazione, e ci dissero "beh, pasta ke linkate kfesti und tutto funtziona, non serfire dokumentazionen". Per cui capimmo che se volevamo vedere quel programma funzionare, dovevamo ancora di più rispettare TUTTI gli standard impostici dai tedescacci della malora, inclusa la programmazione reticolare di cui sopra!!!

Quella fu la prima volta che andai in Germania per lavoro; capimmo subito alcune cosucce: 1) i tedeschi fanno un caffè talmente annacquato che se lo usate per lavarci la camicia bianca, questa rimane bianca; 2) i tedeschi non mangiano molto a mezzogiorno, ma si abbuffano di robetta varia durante tutto il pomeriggio; 3) i tedeschi son TEDESCHI! Infatti si stupivano dalla quantità di cose diverse che facevamo noi due ragazzetti (programmazione assembler, C, PLM80, etc, nonché facchini, commerciali, tecnici, montatori, hardwaristi, rappresentanza, segretari, etc), mentre loro -incredibile ma vero- erano specifici e precisi al massimo: avevano un tizio assunto in ditta SOLO per fare i disegnini, prenderli con lo scanner e trasformarli in XXX per altri lavori di suoi colleghi (dimostrativi per fiere, test per programmi, etc). Cose da pazzi! Pagato per fare i disegnini... maremma carrettera!

Quello che ho dovuto fare io a Roma per tirar su un software su PC è stato tutto lavoro TOTALMENTE alla cieca! Non avevo la più pallida idea di cosa mi aspettasse lì, per cui scrissi e testai alla buona tutto ciò che sapevo sia pur vagamente. Quando andammo a XXX Riviste tedesche di informatica a mostrare ALLI-XXX, io ne approfittai per fare alcune prove e per rendermi conto che metà del software che avevo scritto non serviva ad un'emerita mazza. Per fortuna riuscii a far funzionare qualcosa, e da quel puntino lì ci ho costruito tutto intorno il resto del programma. Un'arrampicata senza precedenti, di sesto grado, al buio, sotto pioggia neve e grandine e per giunta di fretta e a stomaco vuoto!

Ricordo una mitica megadiscussione in cui stupii il XXX con una mia genialissima trovata (un diagramma "tempo/eventi") e feci raggrinzire di invidia il Femmineo, anche perché gli avevo smontato tre quarti delle sue teorie per risparmiarsi fatiche varie. Eravamo a fine agosto nel CED (centro elaborazione dati), dove c'era il mio mefitico PC, il massiccio concentratore via radio e l'host locale (quello da XXX milioni), e -goduria delle godurie- un telefono abilitato a chiamare all'esterno che finché è stato tale mi ha permesso di chiamare gratis praticamente tutti gli amici in tutta l'Italia (posso negarlo: ho chiamato una sola volta e per giunta a casa mia per avvisare che sarei tornato con qualche giorno di ritardo!). Altro che telefonate senza pagare: queste sò telefonate GRATIS e basta! ;-) (posso negarlo: queste le fecero gli altri!). Un giorno si accorsero che qualcosa non andava e lo resero solo locale. Addio telefonate private a sbafo per me (posso negarlo) e per i tizi di Milano (potrei negarlo)... Ancora da una rivista tedesca di informatica

Nel frattempo imparai alcuni comandi del sistema operativo XXX v9.5: per una directory c'era il comando /FSTAT (abbreviabile in /FS)... :-) Se sbagliate, ci sono gli ovvi e comprensibilissimi messaggi di errore... in TEDESCO!!! Cose da pazzi! Ad ogni errore era poi associato un codice alfanumerico di 4 cifre, per cui a parte la cinquantina massima di caratteri per dirvi che cos'è andato storto, con il codice di 4 cifre potete benissimo consultare la mega-guida che vi riporta mezza pagina scritta in fitto fitto fitto (tedeschissimo) tutto quello che significa quell'errore, e magari anche come ovviarvi.

A fine novembre riuscimmo a consegnare un prototipino funzionante che rispettava già quasi tre quarti delle richieste. Ma già cominciavano a piovere nuove megarichieste: "se in quella maschera si potesse mettere il codice prodotto... se lì ci metteste un numero che vi autoincrementate ogni volta che concludete un'operazione..." etc etc.

Era il tragico inizio della più colossale serie di "richieste di modifiche in corso d'opera": anche se avevamo avuto varie avvisaglie (però a livello di cambiare una scritta a video, che non è tragico), non avevamo certo sospettato che PERFINO il programma di gestione magazzino era ancora in lavorazione! (quello in pseudo-Cobol che vi dicevo la volta scorsa). Per cui ogni loro modifica comportava una ventina di modifiche nostre, ed ogni nostra comportava una ventina a loro: il punto era che loro "potevano" perché "abbiamo avuto precise direttive dall'alto" e noi non potevamo perché "non è il caso di andare a modificare qualcosa che già ci funziona!" (entrambe le frasi sono del Femmineo, però le hanno pronunciate anche gli altri, in seguito). Qualche volta però in caso di estrema necessità dovemmo chiedere (che goduria) delle modifiche anche a loro perché non potevamo uscirne fuori dalle nostre, e pertanto ancor oggi abbiamo sulla coscienza numerosi probabili attacchi di ulcera al Femmineo e alla sua banda di matti.

Da quel novembre 199X le modifiche sono state numerosissime. Il primo programma era di 20k di compilato 8080 e 14k di sorgente .C sul PC. [seguiranno numerosissime e tremendissime "varianti in corso d'opera": attualmente ci sono 47k di .C sul PC e 46k di compilato 8080].

Il firmware del terminalino è stato "versionato" correttamente fino alla 5.2, poi si è scocciato ed ha cominciato a non aggiornarlo più e a metterci invece la data. "5.2" significa quattro totali o quasi totali riscritture dei pezzi più importanti del programma.

Io invece [forse il mio inconscio già me lo diceva] ho sempre messo "versione 2 luglio 199X" e cose simili, proprio perché attualmente saremmo come minimo alla 10.0... :-) L'amico di Guidobaldo

Ogni volta che andavamo lì, sia pure per prove o manutenzione di poca importanza, ci chiedevano sempre modifiche, e così i software sono cresciuti a dismisura; il megaboss ci ha speso una cifra (ma ci ha pure guadagnato una cifra - spero - considerati i prezzi che propose loro all'inizio)... non ci andavamo così giusto per andarci, come al solito ad ogni megamissione nei dintorni di Milano (tipo a XXX o a XXX) ci facevamo una "scappata" a XXX e... ZOT! Ci bloccano manco fossero espertissimi giocatori di rugby e football americano e ci fanno modificare, aggiungere, aggiungere e ancora modificare!

Se "er Paolino" verso la primavera del 199X non avesse cominciato a muoversi totalmente da solo con quei terminalini, sarei rimasto anch'io vittima della "sindrome da megaditta", cioè esaurimento nervoso sicuro e cronico ;-). Alla fine il programma è diventato irriconoscibile: potrei ancora metterci le mani sopra ma con estrema cautela. A proposito: quel cacca di "er Paolino" non è più nella megaditta, e se richiedono modifiche qualcuno a caso tra me e il XXXastro avrà brutte gatte da pelare: "er Paolino" ha lasciato tutti i commenti in tedesco, per cui se c'è da modificare la Auf_proc o la Eing_daten o la Drucker_stat, è un'ammuina solenne! Và un po' tu a cercare la variabile Anzeigen e vedere (vattelapésca!) dov'è che viene incrementata di uno... :-)

Ma i guai non erano certo finiti: parallelo a questo lavoro ho avuto anche da gestirmene un'altro, per conto dello stesso cliente, nello stesso luogo, e di una disperazione ancora superiore: la gestione della stampa etichette! Ma di questo ve ne parlerò in un prossimo messaggio, qui oramai lo spazio è finito...


Click here for index page.

indietro (previous page) - send e-mail - continua (next page)