venerdì 30 maggio 2014

Innovazione e Cambiamento

.
Una delle vignette più carine e significative, tra quelle che girano sui social in questo periodo, è quella dei due lavoratori che spingono faticosamente un carretto con le ruote quadrate rifiutando, in quanto troppo occupati,  l'aiuto di un amico che propone di modificarlo con ruote rotonde.
Di questa immagine ne esistono 2 versioni, una disegnata, l'altra realizzata con pupazzetti lego o playmobil, ma che rappresentano esattamente la stessa cosa.


Il tema, seppur interpretato con una grande ironia, è quello dell'innovazione e del cambiamento, argomenti strettamente collegati ma non sempre direttamente conseguenti tra loro.

Infatti, se già è molto difficile creare qualcosa di innovativo, ancora più difficile generare un cambiamento reale portandolo ad essere utile, utilizzato e quindi produttivo.

I simpatici fumetti evidenziano l'ottusità di coloro che rifiutano il miglioramento, ciechi di fronte ad una possibile evoluzione tanto da giustificarsi con il fatto che sono troppo impegnati per poterla applicare. 

La cosa fa sorridere, ma non è così distante dalla realtà.
Nessun cambiamento è "Gratis" e indolore, ci sono sempre degli impatti inevitabili che bisogna prevedere e saper gestire.

Quando un' innovazione deve andare ad incidere non su un carretto ma in un contesto complesso (es. una organizzazione, un mercato, una azienda, la società), il cambiamento va pianificato, preparato e gestito con professionalità manageriale, altrimenti è quasi sicuramente destinato a fallire.

I Change Manager devono predisporre le strutture, l'organizzazione, i processi e la corretta comunicazione.

Particolare importanza rivestono le Key People, le persone chiave che prima degli altri dovranno sposare l'idea e contribuire in modo convinto alla diffusione della innovazione, di qualsiasi tipo essa sia.
Fondamentale è preparare le persone, perchè dovranno essere coinvolte e rassicurate riguardo alla strada che verrà intrapresa ed ai benefici che ne seguiranno.

Va preparato il transitorio, periodo in cui la novità non è ancora totalmente applicata e digerita, durante il quale i benefici non sono ancora evidenti e che quindi è opportuno gestire bene a livello organizzativo e soprattutto comunicativo.

Un cambiamento, di qualsiasi tipo organizzativo o tecnologico, è sempre un momento difficile per coloro che ne sono parte, nell'individuo si possono innescare diverse fasi come la perplessità, il rifiuto, la frustrazione per poi passare all'accettazione, all' abitudine, al convincimento e, se il processo è positivo, all'apprezzamento ed alla collaborazione.

Se le dinamiche di un cambiamento non vengono tutte considerate e ben guidate, le possibilità di successo si riducono drasticamente.
Per questo motivo si da sempre più importanza al Change Management, disciplina che include l'insieme delle metodologie, degli strumenti e delle best practices con cui è opportuno governare l'introduzione delle innovazioni.
Sulla Gestione del Cambiamento esistono corsi, rivolti a Manager e Project Manager, che insegnano le direttive per un corretto approccio.
Soprattutto nell'ambito dell'Information Technology, dove le proposte innovative sono molto più frequenti, diventa basilare conoscerne le linee guida generali prima di definire le attività da fare nel contesto specifico.

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

sabato 24 maggio 2014

Perchè il software è una forma d'arte

Tutti ormai usano il computer, anche gli artisti.
Rispetto alle forme d'arte tradizionali e soprattutto a quelle più moderne (es. cinema e fotografia), i programmi software sono di solito considerati come strumenti facilitanti ed abilitanti verso nuovi confini espressivi.

Alla stragrande maggioranza delle persone sfugge però che anche il software è un manufatto frutto dell'ingegno e dell' inspirazione dell'uomo.
La cosa sembrerà a molti un'eresia, ma chi conosce il mondo dell'ingegneria informatica sa perfettamente che l'approccio alla realizzazione di un software ha una forte componente creativa.

Il limite sta nel fatto che la bellezza di una soluzione software non è facilmente verificabile;
anche se con un algoritmo geniale risolve un problema complesso ed è inspirata da una grande creatività, rimane confinata nei meandri del codice e quindi è generalmente ignorata dagli utilizzatori.

Solo un informatico esperto con le giuste competenze specialistiche, che abbia l'opportunità di analizzare il codice, può realmente apprezzarla, condividerla e addirittura prenderne ulteriore ispirazione.

Tuttavia è ora di sdoganare questa forma creativa elevandola nella sue massime espressioni ad Arte, considerando che il "Software sta mangiando il mondo", i programmi informatici sono sempre fondamentali nel quotidiano delle persone, gran parte dei manufatti sono oggetti mossi dal software e stiamo andando verso l'era dell' Internet of Things.


I seguenti punti sintetizzano il perchè l'ingegneria del software può essere assimilata alle forme d'arte tradizionali e moderne.
  1. Un algoritmo può essere oggettivamente bello o brutto, ma anche interpretabile soggettivamente.  
  2. La realizzazione di un software deriva da un'idea. Una soluzione software è frutto dell'inventiva o addirittura del genio di uno o più uomini (con profili professionali differenziati ma che per comodità chiameremo "programmatori"). 
  3. Non esiste una rappresentazione unica di un programma, ciascun programmatore interpreta e realizza il codice a modo suo.
  4. Ogni programmatore ha un proprio stile, che può variare nel tempo. 
  5. Il buon programmatore unisce tecnica, talento e creatività. Questi aspetti, in diversa misura e rapporto, sono riscontrabili in tutti gli artisti.
  6. Un algoritmo software, come la musica, è anche figlio di una inspirazione momentanea. Uno stesso programmatore tipicamente realizza una procedura in maniera diversa a seconda del momento.
  7. L'ispirazione che indirizza con un algoritmo particolarmente geniale una soluzione, va colta al momento altrimenti rischia di svanire.
  8. Anche nel software, come nella poesia e nella pittura, esistono le correnti, le scuole di pensiero e le mode.
  9. Il codice di un programma, se ben scritto, ordinato ed indentato, può essere paragonato allo svolgimento di una poesia, di un poema.
  10. Un software può essere fonte di inspirazione per un altro software.
  11. Un programmatore può essere maestro, esempio e fonte di inspirazione per un altro programmatore.
  12. Un codice software è sempre posizionabile in un periodo temporale ben definito, per forma (es. linguaggio di programmazione), tecnica (es. procedurale, strutturata od object oriented) e contenuto (tipologia di soluzione indirizzata).
  13. Non tutti sono in grado di capire un algoritmo software. Non tutti possono comprenderlo allo stesso modo. Come per le altre forme d'arte, per poterlo apprezzare appieno servono le giuste conoscenze ed esperienze.
  14. Il programmatore sente come una propria creazione il software scritto, spesso ne è geloso.
  15. Come per i quadri, il programmatore ci tiene a firmare il proprio codice. 
  16. Si parla di architetture del software, come per l'architettura edilizia il confine tra soluzione tecnica e rappresentazione di arte è molto sottile. 


venerdì 16 maggio 2014

Quali Email hai ?

Sono rimasti ben pochi quelli che hanno un solo indirizzo email.

Nell'arco di 20 anni di caselle di posta ne abbiamo create, utilizzate, convertite nell'uso e abbandonate a bizzeffe.



Provo a fare un elenco e dare delle descrizioni "semiserie" delle varie tipologie di email e dell'uso che se ne fa:

Email aziendale personale

Casella email fornita al dipendente dalla società per cui si lavora.
Solitamente l'indirizzo ha un formato in cui viene esplicitato il cognome, il nome per esteso o l'iniziale oltre che il dominio aziendale. 
es.:nome.cognome@nomeazienda.it , n.cognome@nomeazienda.it. 
Tipicamente risiede sui server di posta aziendali ma può anche essere configurata nell'ambito di un servizio Cloud B2B.

Email aziendale del cliente

Casella email analoga alla precedente ma fornita dal cliente per cui si lavora come consulente esterno. Il formato dell'indirizzo prevede anche in questo caso la presenza del nominativo dell'assegnatario, ma potrebbe essere inserito un riferimento al fatto di essere un consulente.
es.: cognome.consultant@nomeazienda.it

Email PEC

Casella di posta certificata, obbligatoria per aziende e professionisti per l'interfacciamento con la Pubblica Amministrazione.  Il nome dell'email è parzialmente vincolato al formato imposto dal provider su cui ci si appoggia per tale servizio. es.: nomeazienda@pec.it

Email comune o di gruppo

La classica casella di posta che non fa riferimento diretto ad una persona fisica ma ad una funzione.
es.:info@nomeazienda.it,segreteria@nomeazienda.it,gruppo@provider.it.
Viene gestita da una o più persone e per la posta in ingresso può anche prevedere l'inoltro verso altre caselle di posta personali.

Email privata Seria

La propria email di riferimento, utilizzata per tutte le comunicazioni private più serie. Ad esempio è quella comunicata ad amici e parenti, indicata nei documenti privati e nei curricula.  Di solito risiede su un provider di sicuro affidamento come GMail, Yahoo, Libero, Outlook/Hotmail, ecc.
L'email di solito indica chiaramente il nominativo della persona (es:nome.cognome@provider.it, n.cognome@provider.itnomecognome@provider.it ) anche se spesso a causa della pre-esistenza di indirizzi uguali, è necessario introdurre anche altri caratteri (es.: nome_cognome1967@provider.com ).

Email privata Seria di riserva

Analoga alla precedente, ma alternativa. Generalmente utilizzata pochissimo, con il rischio che diventi Abbandonata. Quando si decide di riutilizzarla spesso bisogna ricorrere alla funzionalità "recupera password".
Creata magari perchè è opportuno assicurarsi l'indirizzo email preferito su un provider importante prima che lo faccia qualcun'altro.

Email privata Social

Indirizzo inserito al momento dell'iscrizione ad un social oppure generato automaticamente dall'applicazione per la gestione della messaggistica tra gli utenti. Può anche coincidere con l'email Seria o spesso con quella Incognito.

Email privata Trash

Di solito è una casella di posta vecchia, non più utilizzata per altri scopi se non quello di fungere da contenitore di email poco importanti e pubblicità varie. Serve per le iscrizioni a newsletter e siti un po' balordi in cui si è sicuri che successivamente si verrà bombardati di advertising e phising.
Solitamente è piena di spamming e con lo spazio a disposizione esaurito.
Può coincidere con l'email Incognito.

Email privata Incognito

La caratteristica fondamentale è che nell'indirizzo non c'è nessun riferimento al nominativo del proprietario.
Serve per le iscrizioni segrete ai social, ai siti più riservati e per poter commentare su portali e blog senza essere facilmente identificati da chiunque.

Email privata Abbandonata

Casella di posta utilizzata in passato ma alla quale non si accede più da mesi.
Solitamente piena di spamming e con lo spazio a disposizione esaurito, è a rischio eliminazione da parte del provider.
Raramente capita di dovervi rientrare e, dopo aver recuperato la password dimenticata mediante l'apposita funzionalità, vi si trova sempre, in mezzo ad una quantità di email inutili, qualche vecchio messaggio ormai obsoleto di un conoscente che cerca di contattarti non sapendo che hai cambiato indirizzo.


E voi quante e quali email avete ?  Come le usate ?


domenica 4 maggio 2014

Software: Plugin o Adapter ?

Parlando di software,  si fa un po' troppa confusione nell'utilizzo dei termini Plugin e Adapter anche se il significato è evidentemente diverso.

Spesso le 2 parole vengono assimilate impropriamente, associate ed utilizzate per far riferimento a dei componenti software che implementano caratteristiche di trasporto e trasformazione dati. La cosa non è sempre corretta.
Vediamo meglio il significato e quali sono le differenze.

Cos'è un Plugin

Un Plugin software è un modulo secondario, aggiuntivo, in grado di estendere le funzionalità di un modulo software primario. 
Un plugin quindi non può funzionare autonomamente ma deve essere innestato all'interno di un'applicazione container principale predisposta per ospitarlo. 

Il software principale può essere una applicazione già di per se consistente, quindi che effettua operazioni complesse ed esaustive, oppure un Framework il cui solo scopo è quello di ospitare dei plugin mettendo a loro disposizione una infrastruttura comune. 

Rispetto al modulo primario, un plugin ne eredità i meccanismi generali di base e li estende implementando le funzioni più specifiche per le quali è stato progettato. 

La predisposizione di un software ad essere esteso mediante plugin è generalmente considerata una cosa molto positiva.
Le sue funzionalità infatti possono essere fatte evolvere più facilmente, allungando di fatto il ciclo di vita dell'applicazione stessa e favorendone la diffusione in ambiti applicativi diversi. 

Come detto in precedenza, un plugin software viene rilasciato all'interno del programma principale, che lo riconosce come un proprio componente, pertanto deve essere realizzato ed installato rispettando fedelmente le direttive di sviluppo imposte per quel determinato container. 

Di solito, per facilitare la realizzazione di nuovi plugin, l'azienda o la community che produce il software fornisce le specifiche tecniche di dettaglio da seguire (specifiche di interfaccia) oppure sempre più spesso rilascia ai developer un Toolkit con tutti gli strumenti necessari per lo sviluppo (documentazione, script,  editor, tools accessori, ecc. ) . 

I plugin possono essere di infinite tipologie, essere progettati per gestire le più diverse funzionalità.
Nel caso che interessa di più nel seguito dell'articolo, vengono realizzati per gestire le connessioni con altre applicazioni o con risorse esterne.
Molti sistemi abilitano l'installazione di plugin al fine di consentire l'implementazione dei protocolli di comunicazione (standard o custom) necessari per connettersi ad altri sistemi, database o middleware.
Tipicamente, quando si mette in opera un sistema in ambito enterprise, le funzionalità vengono estese mediante plugin specializzati per gestire le integrazioni che hanno protocolli particolari.


Cos'è un Adapter 

Un Adapter software è un modulo applicativo che veicola dati e li converte da un protocollo/formato ad un altro. Serve a rendere interoperabili applicazioni o risorse diverse in un determinato contesto operativo.

Tipicamente è un programma adattatore che, mettendo a disposizione delle funzionalità specifiche, consente ad un applicativo client di accedere a delle risorse esterne (servizi di altri sistemi o database).
Un adapter espone delle interfacce conosciute ed utilizzate dal sistema client per integrarsi con un altro sistema il cui protocollo è invece ad esso sconosciuto, non raggiungibile o non gestibile in altro modo.
Di solito si parla di adapter quando una applicazione non può essere estesa con un nuovo plugin di connettività e quindi è necessario sviluppare un software bridge esterno che effettui la mediazione verso la risorsa che interessa.



Conclusioni

Non sempre è possibile realizzare un adapter sviluppando un plugin, l'architettura interna del software potrebbe non permetterlo oppure potrebbero esserci incompatibilità tecniche che ne limitano l'estendibilità in quel contesto.
Più frequentemente, quando si parla di adapter si intende un componente software esterno alla applicazione principale, autonomo, che ha una propria autoconsistenza indipendentemente dai sistemi che lo usano.

Analogamente, riferendosi ad un plugin, non si intende sempre un oggetto con funzioni di adapter (in tal caso plugin adapter), in quanto può implementare anche un qualsiasi altro tipo di funzionalità o algoritmo. E' un pezzo di software calato in una infrastruttura più grande rispettando le interfacce predisposte.