Author Archives: Felice Pescatore

L’innata iperbole recondita dell’inutilità degli strumenti freddi

Lunedì mattina presto, viaggiando in pullman, mi sono imbattuto in una situazione già vista diverse volte, ma che in questo caso mi ha fatto riflettere: per circa un’ora, ovvero per tutta la durata del viaggio, un tizio è stato letteralmente incollato al portatile, scrivendo email di risposta ai vari colleghi. La cosa che più di tutte ha stimolato la mia riflessione, oltre l’orario, è che l’atteggiamento complessivo (postura, smorfie facciali, ecc.) dava l’impressione che questa persona si comportasse come se dovesse recuperare il “tempo perso del weekend”.

laptop travel

La sensazione è stata rafforza vedendolo tirare quasi un sospiro di piacere quando abbiamo incontrato un rallentamento… tempo in più per le mail!

Sia chiaro non è il lavorare in viaggio che mi ha stupito, visto che anch’io, quando sono in treno (nel pullman non riesco in alcun modo a causa del rumore, degli spazi limitati e del modo “fantasioso” di guidare degli autisti), utilizzo il tempo per lavorare e per approfondire le tematiche che professionalmente mi interessano.

Piuttosto, sono le particolari caratteristiche di contesto che mi hanno fatto riflettere, portandomi a ripensare a quanto siano importanti i Valori e i Principi Agili che metto le Persone al centro di tutto, evidenziando la necessità di mantenerle motivate (“Build projects around motivated individuals”). Sesso discorso per una la vista organizzativa “Energize People” di Management 3.0.

Come si può immaginare di essere produttivi e dare il meglio di sé, se il lunedì mattina alle 6.00 siamo già in queste condizioni? Arriveremo in ufficio stressati dal primo minuto, soprattutto perché l’abuso di strumenti freddi, email in primis, ci porta ad avere una sensazione dell’incompiuto perenne, quasi vergognandoci di dedicare il giusto tempo a noi stessi e ai nostri cari.

incompiuto

Non è possibile immaginare di essere sempre “immersi” nel lavoro, per quanto appagante sembri, perché questo non ci consente di respirare, confrontarci al difuori della sfera professionale, e arricchire le nostre azioni con contaminazioni esterne.

E poi… basta con tutte queste email! “Face to Face conversation”… parliamo con i nostri colleghi, con i nostri clienti, collaboriamo con loro per trovare la giusta quadra in funzione degli obiettivi e delle necessità che dobbiamo soddisfare nell’immediato, con un occhio a quelli generali.

Per darvi un’idea di come la comunicazione tramite email possa essere assurdamente istituzionalizzata, date un’occhiata alla “Email Etiquette: Guidelines for Writing to Your Professors” (https://www.math.uh.edu/~tomforde/Email-Etiquette.html), che spiega agli studenti della Houston University come scrivere una email ai propri professori.

Ad onor del vero, la “guida” si chiude con un “Do Not Use Email as a Substitute for Face-To-Face Conversation”, ma sembra più che altro una cosa buttata li per dovere.

Il succo di tutto il discorso è che non bisogna mai “vergognarsi” di ritagliarsi i propri spazi, staccare la spina e ricaricarsi: non si tratta di un plus, ma di un obbligo che anche l’organizzazione per cui si lavora deve tenere in conto. È un dovere nei riguardi del proprio collaboratore, ma anche un elemento di vantaggio competitivo, potendo contare su Persone che sentono di avere un giusto equilibrio, andando a soddisfare i propri desideri intrinseci.

Stay tuned J

Il dilemma del tentativo unico sul valore ignoto

Per quanto sia coinvolto ormai da molti anni nel mondo Agile, resto ancora spiazzato nello scoprire quanto sia difficile spiegare in parole semplici cosa sia “Agile”.

Qualche settimana fa sono stato coinvolto in una interessante discussione con un gruppo di manager, apparentemente lontani da questo mondo, e, parlando del più e del meno, ad un certo punto uno di loro mi ha chiesto: “convincimi che l’Agile è utile per quello che facciamo nel tempo che impiegheremmo ad attraversare dieci piani in ascensore”.

elevator pitch

Ok, al di là del mio velato sorriso relativamente all’Elevator Pitch, che molti di voi immagino conoscano, devo dire che condensare una risposta efficace in pochi secondi è stato più difficile del previsto.

A primo acchito ho risposto con una definizione che spesso sento usare da Giulio Roggero: “… un set di 4 valore e 12 principi che ci consentono di lavorare insieme in modo efficace ed efficiente”.

Nella mia mente sembrava una risposta chiara e limpida, ma il risultato ottenuto con il manager è stato piuttosto deludente, visto che lo stesso mi ha fatto notare che essa può essere applicata in modo praticamente identico a diversi approcci che sostengono le iniziative del business.

Cavolo… ha decisamente ragione!

Spesso siamo così immersi nel “nostro mondo” che fatichiamo a guardarci intorno e renderci conto che esistono anche altre opzioni che permettono di raggiungere risultati interessanti, in funzione del contesto Culturale in cui vengono applicate.

Resta il fatto che nei giorni a seguire ero rimasto con il cruccio di trovare una definizione o una metafora per avvallare la mia tesi con il manager in questione, e dopo diverse ipotesi ho tirato fuori il “One-Shot Dilemma” che voglio condividere con voi:

Hai a disposizione 1 euro e puoi investirlo in tre modi diversi: una bottiglina d’acqua [bisogno attuale], una penna [bisogno ricorrente] o un gratta e vinci [bisogno futuro]. Cosa scegli?

Il manager è restato sconcertato dalla domanda perché non ha colto il nesso tra le tre diverse scelte, apparentemente casuali e non associabili a problematiche di gestione (non ho chiaramente esplicitato il concetto di bisogno che sopra ho inserito tra parentesi). Dopo qualche secondo, la riposta è stata:

…onestamente non saprei… compro una bottiglina d’acqua così almeno mi disseto!”

dice

Alche, la mia reazione è stata:

Bingo!… è esattamente questo il punto: non puoi decidere cosa fare se non hai visione del bisogno da soddisfare e non hai gli strumenti adatti per contestualizzarlo. È come se sfidassi costantemente la fortuna, sperando che la tua scelta sia quella giusta.

Agile ti permette, invece, di utilizzare al meglio le risorse a tua disposizione, ottenendo valore contestuale da esse e riducendo il rischio “one-shot” perché aiuta a concentrarsi su obiettivi ragionevoli a breve termine, pur inseriti nel quadro generale.” 

La discussione è poi continuata su diversi aspetti di dettaglio che non vi racconto per non annoiarvi.

La considerazione che voglio condividere, però, è quella che in un momento in cui si comincia a parlare con insistenza di Business Agility, Modern Agile e similari, dove l’Agilità si “scrolla di dosso” quel legame forte con lo sviluppo software per divenire uno strumento con cui l’azienda può rispondere in modo più efficace alle perturbazioni di Mercato, dobbiamo imparare ad essere meno “tecnici” nelle nostre discussioni ed abbracciare un vocabolario che ci permetta di dialogare con successo con il nostro interlocutore (Ubiquitous Language!) in modo da far comprendere il Valore annesso al mondo Agile, Lean e DevOps.

Stay tuned J

La sorpresa attonita della massa superficiale

Diciamola tutta: il mondo dell’Information Technology ama le buzzword!

Le amano i commerciali, che vendono sotto “mentite spoglie” prodotti in cui poco o nulla cambia. Le amano i consulenti, che possono rivendere le proprie conoscenze (e sottolineo “conoscenze” e non “competenze”!) cambiando il titolo sulle proprie slide. Le amano gli sviluppatori, che possono atteggiarsi con l’ultimo framework javascript, anche se, probabilmente, verrà abbandonato in meno di un mese. Le amano moltissimo i manager, che intrinsecamente gioiscono nel mostrarsi alla moda.

dilbert buzzword

Relativamente al mio campo di attività, due sono le buzzword che oggi dominano la scena: DevOps ed Industry 4.0. Ci tengo a precisare subito una cosa: non c’è nulla di male, in generale, nel rendere “appetibili” concetti, approcci e tecnologie che sono maturati nel tempo e che subiscono, conseguentemente, anche una metamorfosi nella nomenclatura, rendendoli apprezzabili dalla “massa” e non solo da piccole nicchie della popolazione interessata.

Quello che però è deleterio, è vedere le espressioni di quanti pensano di aver scoperto il santo graal, e ripetere (fino alla noia e sicuri di sé) affermazioni del tipo: “Agile? Ma cosa me ne faccio, tanto io uso DevOps”… oppure “Ho comprato Arduino, riesco a misurare la temperatura… ovvio che sono Industry 4.0!”.

La cosa preoccupante è il fatto che, tali affermazioni non sono la sintesi di un percorso di approfondimento e applicazione empirica dei concetti portanti alla base delle diverse tematiche interessate. In questo caso, infatti, sarebbero comunque rispettabili, anche se opinabili. Spesso, troppo spesso, sono il risultato di una improvvisazione e della presunzione che leggere le prime 2 righe di Wikipedia faccia di noi degli esperti in grado di applicarle nel concreto e ci permetta addirittura di dibattere di esse (dico 2 righe, perché se ne sono state lette 3 allora si è “gran. farabutt. ladr. matricolat. paracul” [cit. fantozzi]).

Ma torniamo alle due buzzword con cui abbiamo iniziato, andando a sintetizzare perché le ritengo un prodotto “commerciale”, utile per parlarne, anche se nella sostanza aggiungono poco alle trasformazioni già in atto da tempo.

Per chi mi segue, non è un mistero il fatto che io non apprezzi particolarmente il termine DevOps, sia perché lega il tutto in modo esclusivo, ed errato, ai soli Developers ed Operation, sia perché, in fondo, avevamo già il termine in grado di rappresentarne l’essenza: Lean.

Ebbene si, DevOps non è null’altro che Lean applicato in modo efficace all’IT (molto più di quanto si sia riusciti con Lean Software Development dei Poppendieck), avvalendosi delle nuove piattaforme tecnologiche, in grado di automatizzare le attività e misurare i progressi ottenuti.

Non siete convinti? Provate a leggere The Phoenix Project, l’unico, e sottolineo unico, libro che dovete leggere per capire cos’è DevOps, e provate ad annotarvi quante volte incontrate il termine DevOps… curiosi? Ebbene, solo nella seconda di copertina, nella frase di introduzione al libro stesso: “A Novel About IT, DevOps, and Helping Your Business Win”.

Qualcuno potrebbe dirmi… vabbè, però la Continuous Integration e la Continuous Delivery è roba dei nostri giorni che prima non c’era… sicuri? La CI è uno dei Principi cardini di eXtreme Programming (XP), una delle principali metodologie Agili nata nella seconda metà degli anni ‘90. E sempre in XP troviamo le pratiche (corollarie) di Incremental Deployment e Daily Deployment che possiamo considerare una prima formalizzazione della Continuous Delivery.

Quindi roba “vecchia” che oggi è diventata di “moda” spesso perché “… è facile farla”, perdendo però di vista il vero scopo del “perché farla”: non faccio Continuous Integration perché è figo vedere il flag verde sulla build. Faccio CI perché in questo modo ottengo feedback rapidi che consentono ai membri del team di migliorarsi e risolvere velocemente i problemi, evitando che il costo di integrazione diventi uno spreco rilevante del budget che ho a disposizione. Se in un team di 7 persone, solo uno fa CI e gli altri creano 30 branch di GIT che si ricordano di integrare solo dopo 2 mesi… beh, immagino che non ci sia neanche bisogno di dire cosa accade all’atto dell’integrazione. Stesso discorso se non ho gli unit test: Continuous Integration senza Unit Test è come una Cena senza del buon Vino…

Ed Industry 4.0? Anche qui, proviamo a dare una definizione di quella che viene indicata come quarta rivoluzione industriale:

“Industry 4.0 connota una filosofia aziendale Customer Centric basata su produzione flessibile e ottimizzazione delle risorse.

L’obiettivo è quello di combinare l’efficienza della produzione di massa con quella on demand, inclusa l’ottimizzazione real-time della catena di distribuzione (Supply Chain)”

hmmm… a me ricorda molto un’altra definizione che condivido con voi:

[..] is a systematic method for waste minimization (“Muda”) within a manufacturing system without sacrificing productivity. Lean also takes into account waste created through overburden (“Muri”) and waste created through unevenness in work loads (“Mura”). Working from the perspective of the client who consumes a product or service, “value” is any action or process that a customer would be willing to pay for.

sapete di cosa si tratta? Lean Manufacturing (o se preferite Toyota Production System). Ovviamente, anche qui ci sono delle evoluzioni importanti, soprattutto relativamente alle tecnologie disponibili, ma l’essenza non è cambiata di molto.

Le buzzword sono quindi il male in terra? Direi di no. Come accennato sono uno strumento che, utilizzato con parsimonia, può contribuire a diffondere meglio la trasformazione che tutti i settori produttivi stanno attraversando.

Indipendentemente dal campo specifico, infatti, oggi si è giunti ad una maturazione del concetto di produzione, in cui si realizzano Servizi (e non solo prodotti) in grado di raccogliere e soddisfare le esigenze delle Persone (non utenti!), facendo attenzione a rendere i processi sostenibili dalle Persone che tali servizi sono chiamati a realizzarli.

E anche qui, Persone e Iterazioni prima di tutto!

Stay tuned J

L’ossimoro implicito dell’ortodossia innaturale nel cambiamento stagnante

Quando si parla di cambiamento, è interessante notare come la maggior parte delle aziende ascoltano con interesse ma poi alzano subito una prima barriera dicendo “…eh… sarebbe bello, ma da noi è difficile convincere le persone a cambiare!”.

change resistance

Tale affermazione è supportata da diversi report che, annualmente, aggregano dati di centinaia di aziende a livello globale per capire lo stato di adozione dei diversi approcci ed evidenziare quelli che sono i principali problemi annessi.

change barriers

Al top della classifica c’è proprio la resistenza al cambiamento: organizzativa, culturale e personale. La questione è che, se non si trova il modo di superare questo impedimento primario, l’adozione di nuovi Approcci Culturali come Agile, Lean e DevOps perde di qualsiasi significato, riducendosi all’adozione di alcune pratiche o strumenti che portano un micro beneficio locale senza contribuire in modo sistematico al riassetto generale in funzione del business.

In queste condizioni basta un piccolo intoppo o un cambiamento al vertice per tirare conclusioni del tipo: “Mah… in fondo Agile non è che funzioni poi tanto, torniamo ad un approccio più tradizionale con maggiore controllo su ciò che accade” o anche “Vabbè, ma poi noi manager che fine facciamo in questo nuovo modo di impostare le cose? Forse è meglio attendere”.

Questo atteggiamento è estremamente pericoloso per qualsiasi azienda che voglia essere competitiva sul mercato ed è paradossalmente sbagliato per definizione: ognuno di noi, in quanto Persona, cambia implicitamente in modo costante, giorno per giorno, in relazione alle esperienze, ai problemi, alle opportunità, alle esigenze e così via. Quindi come si fa a dire che una persona non è incline al cambiamento quando lo fa di continuo?

La questione è che quando il cambiamento è esplicitato ed “comandato” dall’organizzazione, le Persone sono portate ad assumere un atteggiamento diffidente e farsi 1000 domande del perché si sta avviando tale processo.

Il tutto è ben rappresentato dal noto diagramma seguente, che trova le proprie origini nella ricerca (1969) effettuata dalla psichiatra svizzera Elisabeth Kübler-Ross in relazione alle reazioni che mostravano i pazienti quando gli veniva comunicata la prognosi di morte (si lo so è decisamente triste la sua nascita).

change acceptance

La curva indica il livello di motivazione ad accettare il cambiamento che la Persona deve “subire” e che non è sotto la sua governance, e, su di essa, sono rappresentati i principali stati (fasi) emotivi in cui viene a trovarsi.

Lo studio originale individuava 5 stati: negazione, rabbia, contrattazione, depressione, accettazione, mentre negli anni le diverse contestualizzazioni hanno portato ad avere i 7 stati indicati nella figura precedente e generalmente accettati oggi:

  • Negazione, non accettazione della novità;
  • Realizzazione, si prende atto che qualcosa è avvenuto e se ne cerca riscontro;
  • Frustrazione, ci si difende implicitamente da quanto sta avvenendo;
  • Accettazione, si assume un atteggiamento rassegnato con scarsa propositività;
  • Sperimentazione, si cerca di capire come posizionarsi nel nuovo contesto;
  • Riflessione, si scava in dettaglio su ciò che il cambiamento sta comportando, integrandosi con esso e aumentando la propria produttività;
  • Integrazione, si è a proprio agio con il nuovo contesto.

Per quanto illuminate, questa curva non risponde però ad una domanda evidente: perché in alcuni casi il cambiamento ha successo ed in altri no? Per rispondere ad essa possiamo utilizzare l’Equazione del Cambiamento (o anche Formula di Gleicher) che descrive in maniera lineare quando scatta il cambiamento:

C = I x V x P > S

Quindi il Cambiamento avviene quando la risultate dell’Insoddisfazione (I), della Vision (V) e dei Primi Passi (P) compiuti nella sua direzione è maggiore dello Status quo (S) attuale. Tali fattori devono sussistere contemporaneamente per portare al cambiamento: se, banalmente, non vivo in modo insoddisfacente la situazione attuale, non c’è leva che mi porterà a cambiare.

Ma come possiamo fare allora a spingere al cambiamento le Persone e l’organizzazione nel complesso? Uno degli approcci più apprezzati è il Change Management Process (CMP) di John Kotter, professore alla Harvard Business School e autore del libro “Leading Change”, che consta di 8 passi:

  • Sviluppare un senso di urgenza
  • Costruire il team che guiderà il cambiamento
  • Creare una visione chiara
  • Comunicare la visione
  • Rimuovere gli ostacoli
  • Creare piccoli successi nell’immediato
  • Non mollare la presa
  • Fare attecchire il cambiamento

Questi passi sono spesso anche alla base anche degli ultimi ritrovati come The Lean Change Method di Jeff Anderson e, probabilmente, ognuno di noi ne ha avvertito la presenza durante una fase di cambiamento che l’ha interessato direttamente. Da essi è possibile estrarre alcuni principi base che gli agenti del cambiamento devono tener presenti nella loro azione di promozione al cambiamento stesso:

  • Awareness, creare una consapevolezza generale del perché è necessario cambiare;
  • Desire, far emergere il desiderio al cambiamento e spinge le persone coinvolte ad avere un atteggiamento proattivo;
  • Knowledge, esplicitare come il cambiamento dovrebbe avvenire;
  • Ability, costruire nuovi modelli organizzativi che supportino il cambiamento in modo naturale;
  • Reinforcement, sostenere e supportare costantemente il cambiamento.

Come affermato da Sun Tzu: “Combatti con metodi ortodossi, vinci con metodi straordinari“… e questo è solo l’inizio….

 

Stay tuned J

La dissonanza dell’effetto Zeigarnik nello spezzatino del tempo

Ogni strategia di business richiede un programma di attuazione che abbina la flessibilità alla chiarezza degli obiettivi da raggiungere, sia in termini di mercato che di profitto. Ciò implica che una fetta, più o meno consistente, della nostra azienda si organizza per concretizzare il programma stesso e far si che esso sia sempre coerente con la Vision e Mission aziendale, contribuendo a raggiungerla.

A livello operativo è nomarle creare appositi gruppi di lavoro che pianificano, gestiscono e reagiscono alla risposta del mercato e che sono spesso dedicati in modo quasi esclusivo all’obiettivo complessivo, ritenuto troppo complesso da poter essere gestito in concorrenza. Questo focus diventa fondamentale per permettere al gruppo di tenere sempre presente l’obiettivo generale da raggiungere, andando a contestualizzare il tutto rispetto alla propria organizzazione e al mercato di riferimento. Questi ultimi, come è noto, si influenzano a vicenda.

Nel mondo dell’IT, il focus e la concentrazione su poche attività specifiche, chissà perché, è quasi sempre visto come un limite o una incapacità, se non addirittura una scarsa attitudine al lavoro. Spesso le Persone sono considerate alla stregua di automi da poter allocare su attività multiple per percentuali ridicole di tempo senza neanche rendere chiaro il senso del loro stesso lavoro.

the multitasking myth

Tutti voi condividete con me quanto sia tristemente comune imbattersi in pianificazioni che creano il fantomatico “spezzatino del tempo”: “durante le prossime settimane, Tizio sarà alloca per il 10% sul progetto A, il 25% su quello B, il 50% su quell’altro e il 20 a supporto del precedente”.. ovviamente non ci si accontenta del 100%, ma si abbonda sempre un po’, cosa che ricorda l’esilarante scena in cui Totò diceva a Peppino De Filippo di non risparmiare sull’uso della punteggiatura: “…ma sì, fai vedere che abbondiamo… Abbondandis in abbondandum” (dettatura della lettera in Totò Peppino e la Malafemmena).

La domanda è: serve a qualcosa questo tipo di pianificazione? Si, a far impazzire le Persone e a ridurre drammaticamente la loro Produttività!

crazy productive people

Ma come si può anche solo minimante pensare che una Persona possa esprimersi professionalmente al meglio se la sua attività viene trasformata in una sorta di “zapping” su task disconnessi, costringendolo continuamente a cambiare focus operativo, sia rispetto al prodotto che rispetto alle relazioni che caratterizzano l’ambiente con cui operare.

È empiricamente dimostrato che una persona può seguire al massimo due progetti in contemporanea (non lo dico io, ma diversi studi antropologici): uno principale e uno secondario che serve anche come “distrazione”. Se si comincia a saltellare da un progetto all’altro, aumenta solo l’entropia, incrementando il costo del cambiamento di contesto, e acuendo il poco noto, ma estremamente significativo, effetto Zeigarnik.

Tale effetto (osservato e formalizzato dalla psicologa lituana Bluma Zeigarnik) evidenzia come, tipicamente, quando si lascia incompiuto un compito a cui ci si è dedicati, si sperimentano pensieri intrusivi che rendono difficile concentrarsi su altro: in soldoni ci ricordiamo più facilmente delle cose che non abbiamo portato a termine rispetto a quelle completate.
Questo perché, sembra essere nella natura umana l’indole di finire quanto avviato e, se non riusciamo a farlo, tendiamo a sperimentare una dissonanza.

Quindi, più cose lasciamo in sospeso più la nostra mente cerca di ricordarcele, impedendoci di concentraci su altro.

Morale della favola: diamo alle Persone la possibilità di portare a termine, al meglio, le proprie attività, evitando di impegnarle in decine di progetti differenti solo perché “così si utilizza al meglio la risorsa”: avvaliamoci della professionalità dei nostri collaboratori senza avere la presunzione di volerne gestire il tempo.

Stay tuned J

L’esponenziale negativo dell’equazione lineare

Lavorando con aziende di medie e grandi dimensioni, mi capita spesso di imbattermi in discussioni riguardanti l’outsourcing dell’IT e di come esso rappresenti spesso una strategia utilizzata dal top management per tagliare idealmente i costi.

Sicuramente, finché esiste un buon bilanciamento tra IT interno ed outsourcing, la strategia può effettivamente rilevarsi vincente, il problema è quando si passa all’outsourcing estremo: “l’IT è esclusivamente un centro di costo, per cui lo metto fuori e pago solo per i servizi che richiedo”.

In linea teorica, questa soluzione potrebbe sembrare la panacea di tutti i mali, tanto che i costi potrebbero essere teoricamente rappresentati da una comune equazione lineare:

oustourcing cost eq lineare

costi = Δ * TCF

con TotalCostFactor (TCF) = costo servizio * n. servizi richiesti

ragionando su un costo unitario medio uguale indipendentemente dalla tipologia di servizi.

Il Δ è un valore minore o uguale ad 1 (mediamente tra 0.8 e 1) che diminuisce all’aumentare dei servizi richiesti e rappresenta lo sconto che tipicamente si chiede quando la quantità di servizi richiesti aumenta (giornate).
In realtà questa pia illusione di risparmio comincia ben presto a scontrarsi con diversi problemi:

  • Perdita del know-how;
  • Perdita della sinergia tra strategia e operatività;
  • Riduzione della capacità di reazione rispetto alle esigenze del mercato;
  • Scarsa evidenza dei rischi e delle problematiche tecnico/tecnologiche.

che formano un insieme che definiremo “Independent Debt”.

Il “Debito di Indipendenza” spesso inizialmente sfugge anche alle più attente valutazioni del management, diventando con il tempo un boomerang per l’organizzazione che può venirsi a trovare letteralmente in balia dell’outsourcer e quindi soggetta al rischio che il potere contrattuale passi proprio nelle mani di quest’ultimo.

In tale scenario, i costi, forse inizialmente più bassi perché il fornitore voleva entrare nelle “nostre grazie”, cominciano a crescere (per inteso: le richieste possono essere legittime, non dettate da pigra furbizia) e si sommano a quelli dovuti all’impatto negativo dell’insieme dei problemi di cui sopra.

outsourcing cost

Ciò trasforma la nostra equazione lineare in una equazione esponenziale in cui i costi cominciano a salire in modo rilevante senza che si abbiano più gli strumenti per contrastare il fenomeno.

outsourcing cost eq esponenziale

costi = e^TCF  

con TCF = (Δ aumento dei costi servizi * costo servizio * n. servizi richiesti) + costo del Debito di Indipendenza

Nel momento in cui il peso non sarà più sostenibile, all’azienda resterà una sola cosa da fare: riportare tutto l’IT all’interno e… ricominciare da capo!

Questo comporterà un investimento che sicuramente annullerà e supererà tutti i benefici eventualmente ottenuti con la politica di outsorcing estremo.

 

Stay tuned J

DevOps e l’ecosistema Microsoft, parte 6: Conclusioni

Questa serie di articoli ci ha permesso di raccontare come la filosofia DevOps viene ottimamente supportata dalla piattaforma Visual Studio Team Services (VSTS, on-prem con TFS) con il supporto anche di altri applicativi a corredo, sempre Microsoft o di terze parti.

Per comodità si riporta la big picture generale da cui siamo partiti, andando nuovamente a sottolineare la centralità delle quattro aree di cui si è discusso.

ms devops philosophy

DevOps on Microsoft Platform

La cosa interessante è che VSTS è una piattaforma lineare in cui le diverse funzionalità sono messe ad incastro per supportare in modo logico le fasi di delivery e le azioni specifiche della delivery pipeline annessa.

others delivery pipeline

Delivery Pipeline

Da circa due anni, VSTS è diventata la piattaforma di riferimento per operare in modo organico in ottica DevOps (Magic Quadrant for Enterprise Agile Planning Tools, 27 aprile 2017), anche grazie alla sua totale indipendenza da framework di sviluppo proprietari e all’apertura sempre più convita e consolidata al mondo open source.

others gartner2017

Magic Quadrant for Enterprise Agile Planning Tools

Sia i dev, che gli ops, che il management, possono avere una visione d’insieme di quanto sta accadendo durante tutte le fasi di realizzazione della soluzione, intervenendo direttamente e dando suggerimenti laddove dovessero ravvisare potenziali problemi.

Utile sottolineare che la disponibilità delle dashboard di progetto consentono di “disegnare” viste opportunamente pensate per il management, che può, in tal modo, avere visione di quanto sta accadendo ed intraprendere azioni a supporto nel caso ci siano degli scostamenti rispetto alle attese di pianificazione e di business.

Operativamente, resta sempre e comunque indispensabile partire da un’azione di transformation che faccia prendere coscienza all’azienda dei suoi punti di forza e debolezza, andando ad agire sulle cinque leve evidenziate dal framework CALMS:

  • Culture, gestire il cambiamento focalizzandosi sulla collaborazione e la comunicazione;
  • Automation, rimuovere le azioni manuali lungo la catena del valore;
  • Lean, utilizzare i principi Lean per velocizzare, standardizzare e rendere efficienti le attività;
  • Metrics, misurare qualsiasi cosa, utilizzando i risultati per rifinire costantemente le attività;
  • Sharing, condividere le esperienze di successo e di fallimento per una crescita diffusa.

others calms

 CALMS, Damon Edwards e Jez Humble

Questo per evitare che si abbia l’illusione che il solo adottare VSTS significhi “essere DevOps” tranne poi risvegliarsi con una situazione deludente nonostante le grandi aspettative. Le cinque leve di CALMS devono essere contemplate ad ogni step di miglioramento con l’obiettivo di livellarne la maturità nel proprio contesto.

Si chiude qui questo intenso approfondimento. Sperando di avervi dato interessanti spunti sia su DevOps che su VSTS, vi saluto e vi invito ad inviarmi i vostri feedback.

 

Post precedenti della serie:

DevOps e l’ecosistema Microsoft, parte 5: Monitor and Learn

Con la build in produzione, diventa fondamentale avere un’appropriata strategia di monitoraggio, sfruttando le informazioni ottenute per fornire rapidamente feedback al team di delivery. Grazie ad una piattaforma integrata come VSTS è possibile applicare le pratiche di IT Intelligence (così come contemplate da Disciplined Agile 2) per capire, con dati aggiornati in tempo reale, il modo in cui il team di delivery opera, come si migliora e, soprattutto, quanto è realmente allineato con gli obiettivi di business.

ms devops 4

 Monitor and Learn

Su questo fronte, la risposta di Microsoft si concretizza in Application Insight, basato su Azure, e orientato a monitorare e misurare una serie di parametri vitali del nostro servizio: Disponibilità, Performance, Utilizzo, Errori, Dipendenze. Esiste anche una specifica estensione per VSTS, dal nome omologo, che consente di aggiungere una tile nella dashboard di progetto e visualizzare una sintesi dei dati.

azure application insight

Application Insight

In realtà, gli strumenti offerti da Azure analizzano anche altri aspetti più tecnici come, ad esempio, il traffico http in tempo reale, utili per intervenire in modo puntale direttamente alla radice del problema, in perfetta chiave Root Analysis.

azure http analisys

Analisi in tempo reale del traffico HTTP

Grazie al Continuous Monitoring si è in grado di acquisire una serie di informazioni che consentono di intervenire rapidamente in caso di problemi (si pensi ad un picco di utilizzo del nostro servizio in occasione di un evento particolare), reagendo prontamente e rendendo le relative azioni di risoluzione standard/automatizzate in modo che il problema possa essere gestito in anticipo o, come detto, risolto all’origine. Questo significa, ad esempio, creare una serie di test automatizzati specifici che siano in grado di riprodurre le particolari condizioni di operatività e verificare che le contromisure adottate siano efficaci. I miglioramenti ottenuti devono sempre essere misurabili oggettivamente, cosa fattibile con una serie di indicatori. Tra i più rilevanti, il cui controllo deve essere sempre un must, si evidenziano: il Mean Time To Detect (MTTD) e il Mean Time To Repair (MTTR).

ms devops 4b

Continuous Monitoring

Oltre a garantire l’affidabilità della soluzione, è indispensabile sfruttare al meglio le informazioni per cominciare a pensare al “next step”, ovvero capire se il tutto è in linea con quanto atteso dagli utenti e se si sta effettivamente creando Valore per loro e per la propria azienda.

Risulta quindi evidente la necessità di non perdere per strada le Retrospettive e le Review, tante care al mondo Agile. Si tratta dei momenti in cui il team e i diversi stakeholder si confrontano, analizzano cosa è accaduto durante l’ultimo ciclo di sviluppo e si pongono obiettivi di miglioramento raggiungibili per il successivo.

Per supportare queste attività, ad oggi, VSTS non dispone di elementi specifici e anche il marketplace ne è sprovvisto. Quello che si può fare è adottare un workaround come l’estensione Wiki che, aggiungendo un wiki al progetto, consente di memorizzare differenti tipologie di informazioni più o meno strutturate, tra cui, ad esempio, il resoconto della Retrospettiva e gli obiettivi di miglioramento identificati.

extension wiki

L’estensione Wiki

I feedback ottenuti dagli utenti (o dai key stakeholder) durante i diversi momenti di allineamento si tramutano in input per il Grooming del Backlog e quindi vengono gestiti implicitamente dalla (ri)organizzazione delle Feature e delle User Story. Il suggerimento è quello di riportare, sempre, i punti salienti delle discussioni e a tale scopo potete nuovamente sfruttare il wiki.

Con questo quinto appuntamento ci avviamo alla conclusione della serie di articoli dedicati a DevOps e l’ecosistema Microsoft. Nel prossimo ed ultimo post andremo a trarre un quadro riassuntivo di quanto detto e faremo delle considerazioni operative a riguardo.

 

Post precedenti della serie:

La defezione dello scopo elementare

Non so voi ma io sono veramente frustrato da come i cosiddetti professionisti dell’informatica continuano a creare prodotti che hanno una usabilità pari a quella del manuale di istruzioni per il montaggio di una centrale atomica, laddove ne esistesse uno. Tutto ciò ti fa letteralmente sentire un demente (non importa quanti diplomi, lauree, master o… computer hai a casa) e ti spinge alla ricerca di una società con servizi che abbiano più a cuore i propri utenti.

Il mondo dell’IT è pieno di soluzioni di merda!

Partiamo da qui per essere onesti e per poter capire dove intervenire e cominciare a migliorare una situazione che sembra peggiorare continuamente.

panic

Ma come si fa: siti web in cui non si trova mai quello che serve, messaggi di errore tecnici o generici che rimandano ad un call center che non risponde mai se non dopo minuti di attesa e con soluzioni generiche del tipo “ma lei è sicuro di aver inserito l’email con il simbolo della chiocciola?…” a cui ti viene voglia di rispondere stizzito: “Certo che no! L’ho inserita scrivendo la parola “chiocciola””… ma che domanda è ?!?!!!

Non parliamo dei sistemi di autenticazione: username fatte da decine di caratteri, tanto che non basta un post-it per contenerle, password che scado ogni 30giorni e che devi obbligatoriamente cambiare senza poter riutilizzare le ultime 3-4, in aggiunta token e sms di ogni tipo…. e poi ci si prende anche il lusso di bloccare gli account dopo “pochi” tentativi con la scusa “eh… ma è per vostra sicurezza!” Ma che diamine significa?!!

Il risultato è che ognuno di noi ha obbligatoriamente un foglio, o uno strumento digitale, in cui ha annotato le informazioni dei 15-20 account che mediamente abbiamo. Non è umanamente possibile ricordarsi sta roba!

E le App mobile…. oh le App mobile.. un universo in cui tutto è concesso!

Un mondo strano, in cui si fa la corsa a chi ne ha di più (al liceo i giochi erano ben altri J), ma poi, quando le si usa, fanno giusto due cosine e rimandano al sito web, ovviamente non progettato minimamente per una user experience accettabile su mobile… e sottolineo user experience e non “responsive”… parola tanto cara, ma che in soldoni “ridimensiona” il sito per i diversi dispositivi, tenendo inalterato, nel migliore dei casi, il modo di utilizzarlo.

Basta!!!!!!!!!

Vi prego, tiriamo tutti un bel sospiro e contiamo fino 10 prima di iniziare il nostro prossimo progetto! Si, perché è nostra responsabilità, quali professionisti, aiutare e indirizzare chi ci chiede di realizzare una soluzione a supporto del proprio business. Non importa quale tra il milione di titoli che accompagnano il nostro settore (con una predominanza di “chief”, capi di qualcosa che non c’è) abbiamo: si tratta di una nostra responsabilità, punto e basta!

Quando il committente ci parla, non pensiamo “quale linguaggio di programmazione userò per la mia App”, piuttosto chiediamogli “fammi passare il tempo necessario con gli utenti potenziali in modo da rendere l’utilizzo della soluzione semplice e funzionale alle tue esigenze e a quelle dei tuoi utenti”.

Sedendovi in un’auto, cosa vi aspettate di fare: inserire la chiave, accenderla e iniziare il vostro viaggio. Non è un plus, è il motivo per cui l’avete comprata. Perché quando si usa un software questa deve essere una “speranza”, mettendo già in conto che lo stesso farà cose strane e che si è fortunati se si riesce almeno ad utilizzarlo, quasi lo facciate solo perché siete obbligati e non perché potete averne un vantaggio.

Ricordiamoci sempre che le soluzioni software sono strategiche per il business e vanno realizzate con tale obiettivo… il resto è noia… come diceva un noto cantante del Bel Paese.

Stay tuned J

DevOps e l’ecosistema Microsoft, parte 4: Release

Completato lo sviluppo del codice e dei test di unità annessi alla specifica Storia (ovviamente gli unit test devono essere “green”, ossia superati ;-)), la build intraprendere il suo viaggio verso i sistemi di produzione attraversando una serie di ambienti (environment) atti a comprovarne specifici aspetti funzionali e qualitativi.

ms devops 3

Release

Si entra così nel mondo della Continuous Delivery (e Continuous Deployment se si arriva fino in produzione), le cui azioni interessano almeno quattro ambienti primari: quello per i test funzionali (o di accettazione), quello per i test di integrazione e security, quello per gli stress test e l’ambiente di produzione stesso. È importante evidenziare come per test di integrazione si intendano i test dell’integrazione con gli ambienti e i servizi terzi a supporto (come l’istanza del DB in produzione, i servizi di piattaforma, ecc) che prima erano stati sostituiti con dei mock-up per consentire di concentrarsi sulla verifica esclusiva della soluzione in sé, senza che la stessa fosse condizionata da fattori esterni. I test di integrazione del codice sviluppato sono, come abbiamo visto, eseguiti nel processo di Continuous Integration.

ms devops 3b

Continuous Delivery

Lo strumento principe per gestire tali aspetti in VSTS è Release, il cui cuore operativo è rappresentato dalla Release Definiton che consente di impostare le azioni annesse ad ogni singolo ambiente coinvolto nel processo di rilascio della nuova build.

vsts release

Release

Idealmente, gli ambienti possono essere visti come Work Center (Lean Manufactoring) da attraversare per far si che la build divenga “ready to release” e possa essere dispiegata (più o meno in modo automatizzato) sugli ambienti di produzione.

vsts release environments

Gestione degli Ambienti e dei Task di delivery

È fondamentale sottolineare come il provisioning (attivazione) degli ambienti dovrebbe avviene il più possibile in modo automatizzato, sfruttando l’approccio Infrastructure as a Service. Questo perché l’obiettivo da perseguire è quello di rendere del tutto autonomi i dev nella creazione/distruzione degli ambienti di test, mentre gli ops si occupano della gestione dell’infrastruttura e dei tool a supporto, oltre a scrivere a due mani, proprio con i dev, i diversi script afferenti. Tra le soluzioni relative “made in Redmond” troviamo Azure Release Management (ARM), che consente di attivare risorse “on-demand” sul cloud Azure.

Con ARM la configurazione dell’infrastruttura a supporto avviene attraverso script che sfruttano la notazione JSON, andando a creare un vero e proprio “artefatto” il cui ciclo di vita può essere gestito esattamente come avviene per il codice sorgente della soluzione in sviluppo.

azure rm template lifecycle 1

azure rm template lifecycle 2

IaaS Lifecycle

Una vota creato lo script ARM, per eseguirlo è possibile inserire nella gestione di Release lo specifico task, andando ad attivare le risorse in esso descritte sulla specifica sottoscrizione Azure.

vsts arm task

ARM tasks

Il dispiegamento sull’ambiente di verifica funzionale è fondamentale per consentire l’esecuzione degli User Acceptance Test (UAT) da parte del team di Quality Assurance (o del team stesso di sviluppo se il progetto è di piccole dimensioni e lavora, ad esempio, in Scrum) ma, soprattutto, da parte dell’utente finale, che può fornire feedback preziosi. Tale ambiente è quello che può, ad esempio, essere sfruttato durante l’Iteration/Sprint Review, e lasciato poi a disposizione dell’utente finale per test e feedback successivi, se non si decide di andare subito in produzione.

In particolare, è possibile invitare gli utenti a verificare specifici elementi della soluzione tramite una richiesta esplicita di feedback.

vsts feedback 1 vsts feedback 2

Feedback request

Inviata la richiesta, l’utente riceve una mail con tutte le istruzioni per avviare (o installare se non presente) Microsoft Feedback client che permette di seguire le diverse fasi di verifica fino all’invio delle osservazioni in merito.

vsts feedback 4

Feedback

Successivamente, i feedback ricevuti possono essere visualizzati dal team di delivery tramite una semplice query, creando anche elementi personalizzati sulla dashboard per evidenziarne aspetti particolari.

vsts feedback 5

Feedback Query

Lato Quality Assurance il processo può essere proficuamente gestito attraverso appositi Test Plan, andando a definire passo passo tutte le verifiche da effettuare e raccogliendo strutturalmente i risultati.

vsts test plan

Test Plans

vsts test plan execution

 Esecuzione di un Test Plan

Se l’environment di riferimento è quello dedicato ai test di carico, ovvero alla verifica dell’affidabilità dei servizi in condizioni di carico specifico o particolare, il test stesso potrà essere configurato sfruttando gli appositi task che consentono di gestire questa tipologia di validazioni e catturarne l’esito.

vsts web test

Quick Web Performance Test LoadTest

Si tratta di un’azione molto simile a quanto realizzato con i progetti Web Performance and Load Test di Visual Studio IDE, andando però a sfruttare le risorse Cloud per simulare in modo più realistico un utilizzo intensivo dei servizi.

Release si presta a numerose personalizzazioni ed estensioni, tra cui Octopus Deploy e, il già discusso, LaunchDarkly [rollout]. Octopus Deploy è una piattaforma di Continuous Delivery/Deployment che si integra con VSTS in modo da diventare “un’appendice” dell’azione di Continuous Integration e sostituire la parte proprietaria di Release. Octopus si è ritagliato un’interessante spazio nel mondo DevOps Microsoft-related, anche se l’integrazione diretta di Release in VSTS/TFS (precedentemente Release Management era un tool a parte) ha reso disponibili nativamente molte delle sue caratteristiche.

Tornando invece a LaunchDarkly, i relativi task di rollout (da collegare alla definizione degli step di delivery sui vari ambienti) consentono di gestire proprio l’azione di rollout, ovvero bilanciare il numero di utenti che avranno accesso alle nuove funzionalità.

extension launch darkly 2

LaunchDarkly rollout work item

extension launch darkly 3 rollout

LaunchDarkly rollout release task

La build, una volta validata ed avviato il processo di rollout, verrà dispiegata in produzione e, da quel momento in poi, sarà necessario attivare una serie di servizi e strumenti di supporto e monitoraggio applicativo.

Questo sarà l’argomento del prossimo post in cui approfondiremo l’area di Monitor and Learn e vedremo come essa produca un output che, a sua volta, diventa uno degli elementi di input per la nuova fase di Planning.

 

Post precedenti della serie: