Essere un Ranger

By U.S. Marine Corps Cpl. Aaron Hostutler [Public domain], via Wikimedia Commons
Non so a te, ma a me capita spesso di fare un bilancio della mia vita professionale.
Provo a guardarmi da lontano e rifletto su ciò che sò, ciò che faccio, come  potrei fare meglio il mio lavoro e come posso aiutare gli altri a farlo meglio.
Ti sei mai chiesto qual’ è la tua essenza nel profondo ?
La mia è affrontare un problema e cercare di risolverlo in modo elegante con la speranza che possa essere di aiuto alla comunità di cui faccio parte.
Il mio spirito è quello del Ranger che và in avanscoperta, si muove da solo o in gruppo con equipaggiamento leggero su terreni sconosciuti. Forte della sua esperienza è pronto a tutto, esplora territori nuovi li mappa, trova una via poi torna alla base e fà da guida al resto del gruppo.
Credo che la mia sia un’attitudine che deriva dalla curiosità e dalla vocazione alla formazione.
A ciò  si aggiunge l’esperienza fatta in contesti operativi dove l’efficacia e l’efficienza sono elementi primari per la sopravvivenza.
Il Ranger spesso si muove da solo per essere più veloce, ma per valutare scenari ampii opera necessariamente in squadra.
E’ coraggioso e rischia in prima persona ma si muove avendo ben presente la responsabilità che ha verso il gruppo.
Guarda avanti e precede gli altri, interpreta i segni ma una volta rientrato alla base deve anche saper essere un buon comunicatore per condividere con il gruppo la scelta del percorso da seguire.
E’ lavoro delicato ma affascinante.
L’attività diventa efficace se a livello strategico si condivide la meta finale, solo così il Ranger può trovare giorno per giorno percorsi tattici che avvicinano il gruppo verso l’obiettivo finale.
Ecco cosa significa per me essere un Ranger.

Excel arma impropria

La domanda di oggi è perchè alcune persone non riescono ad andare al di là degli strumenti classici quali: Ms Word e Ms Excel con rare puntate su Ms Power Point ?
Come è possibile far capire a queste persone che Ms Excel in particolare non è buono per tutte le stagioni ?

Tipicamente le informazioni debbono essere ricercate secondo criteri che cambiano, quindi spesso un database è la soluzione più corretta.
Invece si continua ad usare Excel per gestire dati in forma tabellare e si è sfortunati può finire che devi organizzare l’attività di aggiornamento del foglio Excel condiviso in turni singoli, perchè la scrittura concorrente non è supportata: azz chissà magari la prossima versione di Ms Excel…

Eppure il ciclo di vita dell’informazione è fondamentale per un’azienda. Come l’informazione nasce, il fatto che sia accessibile a vari livelli, che possa essere aggiornata in modo tempestivo: è la sagra dell’ovvio.

Più l’informazione è granulare maggiore più facile sarà aggregarla.
Considerata la velocità con cui certe informazioni cambiano, relegarle ad un documento è sciocco: diventa difficile ritrovare la singola informazione, il documento diventa presto obsoleto.

Il documento può essere visto al più come una foto al tempo t di una serie di informazioni aggregate secondo criteri che cambiano in base all’utilizzatore: in pratica un report. Che scoop!

L’informazione è preziosa e come tale và trattata, esistono piattaforme per cla gestione della conoscenza che possono offrire sistemi più moderni ed efficenti dell’informazione ad esempio XWiki.

E allora chiudo gli occhi ed immagino che un giorno l’abuso di Excel possa diventare un reato. Sarà costituito un tribunale apposito che giudicherà l’efficacia e l’efficenza di ogni worksheet realizzato e diffuso. Saranno comminate pene severe ed esemplari condannando i colpevoli a: leggere, leggere, leggere.

“The database is just a detail…”

Questa frase può sembrare innocente ma no lo è.
Al contraio è dirompente.
Per chi lavora come me in PL\SQL il database è la piattaforma di lavoro quindi dire che il database è un dettaglio è sovversivo…a prima vista.
Già perchè se ci fermiamo a riflettere non saremo mai dei buoni specchi :).
In realtà il nostro software poggia saldamente sul DMBS ma non sul database, la differenza è significativa.
PL\SQL è la crasi di due elementi distinti PL e SQL.
SQL esiste solo in virtù del database (tabelle, viste ecc).
PL è un linguaggio procedurale che viene compilato ed eseguito da Oracle ma che funziona anche in assenza di oggetti di database.
E sai che scoperta!
Le implicazioni invece sono profonde.
Il codice PL puro, non facendo riferimento al database, può essere sottoposto a unit test automatici e ripetibili.
Fare la stessa cosa su codice PL\SQL (quello bello infarcito con select, insert ed update) è ben diverso perchè per effettuare un test è necessario creare il giusto contesto dati sul database, infatti un test dele genere è già system.
Se la tematica vi intriga ho approfondito il tutto in un ebook “PL/SQL OOP Style”.
La frase che da’ il titolo al post è una citazione del mitico Robert C. Martin dal libro “Clean Code” che continua ad essere per me un’ importante fonte di ispirazione, che bello sarebbe magari avere uno zio così.
La t-shirt è una mia creazione, una simpatica provocazione per i miei colleghi che hanno imparato a sopportarmi.

“Il nostro iceberg si sta sciogliendo” di John Kotter, Holger Rathgeber

Questo libricino, che si legge tutto d’un fiato, contiene una favola costruita ad arte per riflettere sul cambiamento in tutti i suoi molteplici aspetti.
La necessita’ di percepire i segnali che indicano la necessità di operare un cambiamento.
L’urgenza di affrontare il cambiamento in tempo utile per evitare danni.
La difficoltà di comunicare un messaggio di cambiamento.
La fatica di coinvolgere gli altri in un processo di cambiamento.

Una favola adatta ai bambini, ma che ha molto da insegnare agli adulti che credono nel cambiamento.
Il libro inoltre contiene un’utile appendice operativa con alcune indicazioni pratiche per promuovere il cambiamento.

Un aspetto che mi ha colpito molto e’ stata la tecnica di coinvolgimento dal basso, attraverso i bambini per arrivare ai genitori.

Dopo essere stato letto da numerosi miei colleghi sono stato riconosciuto ufficialmente come il pinguino Fred,  se volete saperne di più dovete leggerlo…

Nell’immagine in basso una mia piccola creazione LEGO realizzata durante un corso sulla creatività; il concetto da rappresentare era l’innovazione.
All’inizio ero in difficoltà, poi quando nello scatolone dei pezzi ho trovato il pinguino mi si è accesa una lampadina,  ho preso spunto dal libro ed il resto è stato facile.

Il pinguino è colui che deve innovare.
L’innovazione è rappresentata dall’isoletta che sta di fronte e che per essere raggiunta richiede l’attraversamento del mare: azione.
Ciò comporta dei rischi reali rappresentati dagli squali ma l’inazione è anch’essa un rischio reale rappresentato dalla Tigre.
Gli omini che osservano la scena sono i lettori del libro.
Alcuni riflettono, altri fanno tesoro di quanto letto (zaino), altri sono completamente indifferenti a questa esperienza (testa trasparente).

La mia biblioteca professionale

So di non sapere, sono curioso e ho bisogno di stimoli; per questo leggo molto.
A seguire un elenco in ordine sparso:

  • “Innovazione aziendale” di Stephen K. Markham,Paul Mugge,Massimo Canducci
  • “Adriano Olivetti Ai lavoratori”
  • “Undisturbed Rest”
  • “Mastering Oracle Scheduler” di Ronald Rood
  • “Restful Java JAX-RS 20”
  • “C#3.0 Design Patterns” di Judith Bishop
  • *”Come nascono le idee” di Edoardo Boncinelli
  • “Clean Code” di Robert C. Martin
  • “Clean Coder” di Robert C. Martin
  • “Test Driven Development by example” di Kent Beck
  • “Agile software development principles patterns and practices” di Robert C. Martin
  • “Il nostro iceberg si sta scioglendo” di John Kotter, Holger Rathgeber
  • “The goal” di  Eliyahu M. Goldratt
  • “BDD in action” di Jhon Ferguson Smart
  • “Introducing EventStorming” di Alberto Brandolini
  • “Rest assured with JAX-RS” di Abhishek Gupta
  • “Principle of Object-Oriented Programming in JavaScript” di Nicholas C. Zakas
  • “Antifragile Software” di Russ Miles
  • “Il cigno nero” di Nassim Nicholas Taleb
  • “Antifragile” di Nassim Nicholas Taleb
  • “The Web API Design Guidelinees for Happy Developers” di Antonio Pintus e Federico Pinna
  • Fifty Quick Ideas to Improve Your Tests” di Gojko Adzic, David Evans, e Tom Roden
  • “The art of the unit testing” di Roy Osherove
  • “Domain Driven Design” di Eric Evans
  • “Drive” di Daniel H. Pink
  • “Lavorare con intelligenza emotiva” di Daniel Goleman
  • “Codice Montemagno” di Marco Montemagno
  • *”Narrarsi on-line” di Francesca Sanzo
  • “Programming Abstractions in C” di Eric Roberts
  • “Working Effectively with Legacy Code” di Michael-Feathers
  • “Restful Web Services”
  • “The Toyota Way” di  Jeffrey K. Liker,Luciano Attolico
  • “Giocati dal caso” di Nassim Nicholas Taleb
  • “Perseverare e’ umano” di Pietro Trabucchi
  • “10 tesi sull’impresa” di Anna Grandori

Integrazione di Xwiki e Serena PVCS


Nessuna invasione di campo

Xwiki e’ una piattaforma web open source per la gestione della conoscenza.
Uno dei problemi nell’adozione di Xwiki all’interno del nostro gruppo di lavoro in azienda è stato non invadere i processi aziendali in essere che prevedono l’archiviazione delle informazioni (documenti Office, codice sorgente ecc) nel CMS (Change Management System) Serena PVCS.
D’altra parte Xwiki l’ho installato con l’idea di fornire informazioni e soluzioni alla comunità degli sviluppatori di cui faccio parte, quindi era necessario referenziare facilmente le informazioni presenti nel CMS.

Xwiki al primo impatto mi e’ piaciuto perche’ realizzato in java, ma il suo aspetto più interessante e’ che si possono inserire script in Groovy che vengono eseguiti in fase di visualizzazione: in sostanza alcune sezioni del documento possono essere generate dinamicamente.
Questo aspetto unito al fatto che con JDBC è possibile accedere a qualunque database aziendale rende il tutto molto interessante.

L’idea

Se durante il mio lavoro incontro un problema e trovo una soluzione la adotto e finisce tipicamente all’interno di package Oracle.
Per diffondere questa soluzione scriverò un articolo su Xwiki, spiegherò il come il perchè ma il top per chi legge sarebbe poter accedere facilmente al package archiviato nel CSM in cui ho usato la soluzione.
Così anche se la soluzione evolve, l’utilizzatore potrà accedere sempre al codice sorgente aggiornato.
Così dopo qualche esperimento esplorativo ha preso forma l’idea di realizzare una macro Xwiki che consentisse di accedere al contenuto di un item qualunque archiviato nel CMS.

La soluzione

La soluzione tecnica si compone di:

  1. Macro Xwiki che consente all’operatore di impostare gli estremi dell’item. I parametri vengono usati per costruire una URL che punta sempre ad un documento Xwiki.
  2. Documento Xwiki che viene invocato quando si clicca su una URL Serena. Quando viene invocato:
    1. si recuperano i parametri passati in query string
    2. si effettua la connessione al db Oracle di Serena
    3. si recupera l’ID dell’ ultima revision dell’item
    4. attraverso un client PVCS Serena a linea di comando installato sul server XWiki, si accede al CMS con un account fisso read-only, si effettua la get dell’item che viene scaricato su una cartella TEMP del file system di XWiki
    5. si effettua una GET HTTP del file verso il client

In pratica

Si scrive un articolo

Documento per descrivere il package Oracle prima di inserire la macro

Si aggiunge una macro “Serena Get Item Link” e si impostano tutti i parametri richiesti che individuano univocamente l’item.

Fase di impostazione dei parametri di input della Macro Serena per referenziare il package Oracle di interesse

Il codice della macro è il seguente:

{{SerenaGetItemMacro instance=”hydra-te” itemName=”SIU_PKG_ESTRDOC_B.SQL” project=”COMMON” label=”SIU_PKG_ESTRDOC_B.SQL” workset=”SIUWEB”/}}

La macro per chi visualizza il documento si presenta come una URL sottoforma di link:

http://<SERVERNAME>/xwiki/bin/view/Area+organizzativa/SerenaGetDo?istance=hydra-te&workset=SIUWEB&project=COMMON&itemName=SIU_PKG_ESTRDOC_B.SQL&xpage=plain&outputSyntax=plain

Documento XWiki con l'URL al package Oracle archiviato nel CMS

Quando si clicca sul link “SIU_PKG_ESTRDOC” viene eseguito il codice Groovy e l’item viene scaricato sul client.

Fase di scaricamento del sorgente del package Oracle estratto dal CSM

A questo punto il file sorgente del package viene aperto con l’editor associato.

Package Oracle estratto dal CMS ed aperto nell'Editor associato

Il risultato finale

La soluzione attuale ha numerosi ambiti di miglioramento, perchè è complessa e lenta nel funzionamento.
Cio’ che conta però è che supporta perfettamente le finalita’ di Xwiki.

Start

Sono un software developer creativo e visionario.
Nel tempo libero leggo e mi diverto a sperimentare.
Questo e’ una specie di diario di bordo in cui si trova un po’ di me.