HOWTO: using a java regex to match XML processing instructions

Some days ago, searching for a regex pattern to match a XML processing instruction, I found a nice tool that helped me to build one (increasingly often I’m so lazy that I don’t want to open a regex reference and build & test it myself, but I want to be spoon-fed…).

So, the nice tool is Regex Magic; nice interface to build and test regural expression strings…

Uh, and finally, the Java regex to match the XML PI I used is as follows:


"<\\?xml[^>?]+\\?>"

Cheers!

IT bill of materials: perché le organizzazioni sono ancora “IT immature”

Pozidriv-head screw
Image via Wikipedia

Il Bill Of Materials (BOM), la nostra Distinta Base (DIBA) è la lista delle materie prime, dei componenti, degli insiemi di componenti eccetera, che servono per costruire un prodotto finito.

Nell’IT il BOM è l’insieme dei riferimenti tra il software finale e i suoi componenti. Un esempio di modalità di gestione di un progetto software che molto si avvicina al concetto di BOM è l’uso di Apache Maven oppure di Apache Ivy o di altri tool di definizione delle dipendenze.

Per stare sull’esempio pratico, per Maven un software è un artifact che ha delle dipendenze dal altri artifacts i quali a loro volta possono avere delle dipendenze. Inoltre Maven è anche un build automation software, cioè esegue i compiti che servono per passare dal codice sorgente al codice eseguibile.

Questo tipo di approccio, come il BOM, promuove il riutilizzo dei componenti e la loro gestione.

La gestione dei componenti e lo sviluppo modulare sono un passo fondamentale per l’industrializzazione del software.

L’industria tradizionale ha già capito che la produzione in toto di un prodotto non è un’attività né conveniente né competitiva. Pensiamo ad un prodotto industriale: l’auto. Non esiste un produttore di auto che ha le miniere da cui estrae ferro e carbonio per il suo acciaio; solitamente non produce viti, dadi, materiali plastici, ma li acquista. Non alleva bestiame per ricavare le pelli per i rivestimenti. Tutt’altro. Sempre più spesso i produttori condividono progetti di motori, di tecnologie di sicurezza. Persino marchi meno industriali come Ferrari adottano volanti Momo o freni Brembo o pneumatici Bridgestone, solo per fare alcuni esempi,

Chi acquista una Ferrari tutto sommato è felice che non esistano pneumatici “Ferrari”, perché in tal modo se fora uno pneumatico, può trovarne uno nuovo più facilmente. Inoltre, per rimanere sull’esempio, i freni Brembo sono eccellenti; Ferrari potrebbe produrre freni eccellenti come Brembo?

Tutto questo nel mondo della produzione software è possibile e le chiavi perché questo accada sono:

  • la standardizzazione
  • l’apertura dei brevetti di base
  • la cooperazione sulle tematiche che danno i maggiori costi
I major vendor però non sono dello stesso avviso; seguono solo parzialmente gli standard, chiudono brevetti e formati ed, infine, poco frequentemente cooperano per lo sviluppo di software di base. Eppure assecondano la (autolesionista) domanda di mercato.
Perché quindi la domanda nel mercato del software è così fatta? La risposta, secondo me, è che l’industria del software è giovane e questo, unito al fatto che l’informatica, contrariamente a quanto alcuni potrebbero pensare, è una scienza complessa, fa sì che ci sia scarsa o nessuna cultura in materia da parte di chi acquista. E’ un po’ come con la finanza fatta in casa: nonostante la complessità della materia, ad un certo punto tutti o quasi ci siamo sentiti in grado di giocare in borsa, tutti siamo diventati promotori finanziari e ci siamo messi a parlare di tassi, quotazioni e mercati, come di marcatura a uomo o a zona; ebbene ora facciamo i conti con una crisi globale che non si sa se e come potrà concludersi.
Credo, in generale, che riceviamo troppe informazioni, troppo poco precise e su queste pensiamo di poter prendere delle decisioni; troppo DIY e poca professionalità; troppa supponenza e poca disponibilità ad ascolto e confronto.

Citazione interessante sui linguaggi di programmazione

The connection between the language in which we think/program and the problems
and solutions we can imagine is very close.
Bjarne Stroustrup

Aggiungo un’ulteriore considerazione: la stessa connessione esiste anche tra architetture o platform e soluzioni che possiamo immaginare.

E’ anche per queste due considerazioni di massima che ritengo che una buona qualità di un tecnico, di un analista, di un team leader, di una software house sia la vastità della conoscenze padroneggiate.

Eliminazione degli ordini professionali

Gangster's Law
Image via Wikipedia

Si parla in questo periodo di eliminazione degli ordini professionali. Se ne parla perché gli ordini professionali sono gruppi chiusi di professionisti, l’accesso ai quali è regolamentato dagli esami di stato e l’iscrizione ai quali è obbligatoria per svolgere alcune professioni. Insomma un ginepraio monopolistico di vincoli obbligatori per utenti e professionisti.

In linea di principio l’ordine professionale dovrebbe garantire all’utente che ha bisogno di una prestazione professionale che egli si potrà rivolgere per quella prestazione ad un professionista iscritto; ciò implica che questo si sia laureato, che abbia sostenuto l’esame di abilitazione e che l’ordine vigili sulla sua condotta deontologica.

I detrattori degli ordini professionali sostengono che tali ordini siano caste di professionisti “politicizzati”; anche la quota di associazione è spesso vista come una gabella da versare senza avere in cambio nulla. Dato che l’ausilio del professionista per alcune prestazioni casi è obbligatorio per legge e soggetto ad un tariffario, il meccanismo funziona come un vero monopolio che tutela solamente gli interessi economici e politici dell’ordine stesso e non di utenti e professionisti, i quali per esercitare devono obbligatoriamente passare per questa via.

Molti di noi conoscono da questo punto di vista alcune professioni, come quella del notaio; per effettuare una compravendita di un immobile e stipulare un contratto di mutuo ipotecario con la banca, dobbiamo stipulare l’atto presso un notaio, il quale deve essere un professionista iscritto al relativo ordine. Questo notaio ci presenterà alla fine della sua prestazione la relativa parcella che solitamente è ritenuta “salata” soprattutto se  commisurata al tempo che il professionista dedica in prima persona all’utente, che a volte è di pochi minuti.

L’eliminazione degli ordini, secondo il parere di chi la vorrebbe attuare, porterebbe ad una maggiore concorrenza sui prezzi e sulla qualità dei servizi, nonché a una maggiore liberalizzazione del mercato del lavoro.

L’eliminazione porterebbe i lavoratori a non dover essere più costretti ad iscriversi ad un ordine per esercitare una professione; chiunque può fare l’avvocato, il farmacista, il medico. O forse chissà magari si potrebbe far bastare la laurea magistrale. E poi chi ha la triennale non si lamenterà che i laureati magistrali costituiscono una lobby? Forse no, dato che le università sono molte e quindi vi sarebbe la tanto desiderata concorrenza.

Quello che io mi chiedo è: a che prezzo si eliminano gli ordini professionali?

Ragioniamo da utente e non da professionista e facciamo qualche esempio; diciamo che da un certo momento gli ordini non ci sono più. Questo significa che invece che andare dal notaio che mi fa spendere cinquemila euro per gli accertamenti relativi alla compravendita con mutuo posso andare dal vicino di casa, oppure non andare da nessuno. Lo stesso vale per la costruzione di un ponte: invece di un ingegnere che conosce la scienza delle costruzioni, posso andare da mio cognato che si intende di cementi armati, oppure scegliere da solo misure, forme dimensioni e materiali facendomi consigliare al Leroy Merlin. Infine per operarmi gli occhi per l’astigmatismo invece di un medico dell’ordine mi faccio operare dal tuttofare che sistema il giardino dei miei genitori, visto che ha fatto l’ottico per qualche tempo.

Esempi estremi sì, ma quando non c’è più una regola vale tutto. Se è il mercato che deve decidere quale servizio è buono e quale no, deciderà il mercato: prima mando un “caro amico” dal medico tuttofare e se non muore vado anche io.

E’ evidente che in certi casi il servizio non può essere “provato” e non può nemmeno essere scadente; deve essere quanto di meglio si possa avere dalle conoscenze attuali. E chi conosce cosa è meglio? Il paziente sa cosa è meglio o è più probabile che lo sappia il medico? Gli ordini professionali sono nati per questo motivo: un’istituzione che conosca la materia e stabilisca cosa è meglio, quale professionista è in grado di dare il meglio e quale no.

Come sempre, quando si parla di interessi e di politica, si perde di vista la concretezza dei fatti.

I fatti, in estrema sintesi, sono questi:

  • gli utenti dei servizi complessi quasi mai ne conoscono i dettagli (tecnici, scientifici, di attualità) e vorrebbero essere tutelati e garantiti da chi possiede tale conoscenza
  • gli utenti vorrebbero avere fiducia in chi tutela i loro interessi
  • gli utenti non sempre hanno fiducia negli ordini professionali ma vi si devono affidare per forza
  • i professionisti vorrebbero più servizi dal loro ordine
  • per esercitare una professione un professionista vorrebbe accedere facilmente al mercato
  • alcuni ordini professionali abusano della posizione privilegiata per il proprio interesse economico e politico
In parte, quindi, gli interessi degli utenti contrastano con quelli dei professionisti; i professionisti fuori dal mercato vorrebbero cominciare a guadagnare, quindi vorrebbero un mercato deregolamentato; gli utenti vorrebbero pagare poco i servizi ma li vorrebbero erogati da un mercato molto regolamentato: gli utenti, soprattutto gli utenti moderni, vogliono dare la colpa a qualcuno se qualcosa non va.
Quindi qui bisogna dare ascolto agli utenti, ma impedire il monopolio degli ordini. Far lavorare tutti i professionisti, ma farli lavorare vincolati a forti regole di qualità. Quindi perché l’eliminazione? Non è meglio una riforma, sul tipo di quella della previdenza, che introduca un minimo di concorrenza, quindi per esempio, più enti di garanzia della professionalità degli iscritti, a cui comunque il professionista sia tenuto ad iscriversi?