Category Archives: ALM

Application Lifecycle Management

Wrong version of ISDeploymentWizard in SSMS 17.8.1

The problem Years ago, with SQL Server 2016 release, Microsoft came up with a separated brand new version of SQL Server Management Studio. It’s been a happy day for the SQL Server community and database developers. Shortly afterwards, our company started to migrate every instances from older version of SQL Server to the 2016, using […]

How to release a hotfix with pull-request inside VSTS in 3 steps

We all know the situation: the customer finds a critical bug in the latest release and he wants us to release a new version of our application with a fix. How do we handle this situation without breaking our team policies? How to release a specific fix to avoid regression problems? First we need to […]

ALM DOs and DON’Ts – Unit test

A unit test is a runnable piece of code that verifies that another piece of code (called production code) does what it is supposed to do. A unit test has many characteristics and one of the most important is that a single unit test must verify one and only one thing. If a unit test specifies more […]

ALM DOs & DON’Ts – Database source control

The database is a critical part of our application. If we deploy version 2.0 of our application against version 1.0 of our database, what do we get? A broken application. And that’s why our database should always be under source control right next to our application code.

ALM DOs & DON’Ts – Database source control

The database is a critical part of our application. If we deploy version 2.0 of our application against version 1.0 of our database, what do we get? A broken application. And that’s why our database should always be under source control right next to our application code.

ALM DOs and DON’Ts – CI builds status

We all know the practice of continuos integration. One of the common pitfalls about CI is that the build status is not monitored and not treated as one of the top priorities for the team. A healty/green status of our CI process means that ore code is in a good shape for what our automated […]

Un Leader non è per sempre… meglio non essere Chief di se stessi

Devo ammetterlo: non riesco a trattenermi dal sospirare ogni qual volta, in una organizzazione che si ispira all’Agile, incontro qualcuno che aggiunge ai ruoli specifici il suffisso “Chief”, trasformando di fatto quel ruolo in una posizione di implicito comando.
Se ho la fortuna di lavorare con persone che amano mettersi in gioco, e sono predisposte nello sfruttare l’ironia come strumento di crescita, spesso scherzo evidenziando come “Chief” mi ricordi il noto detersivo,

cif spruzzatore

e di come, tale suffisso, potrebbe indicare, in chiave Lean (DevOps), una persona che ispirandosi alle 5S e al concetto di Servant Leader, si occupi di pulire la scrivania dei propri colleghi per aiutarli a migliorare la propria organizzazione locale. Di certo non è il “capo”!

poster 5s leanproducts

Le 5S di Lean

Al di la del “suffisso” (che potrebbe essere anche “chief”, vista l’implicita accettazione che ormai gli si associa), è innegabile che una visione complessiva di un’azienda in chiave Lean/Agile richieda l’aggiunta di diversi ruoli di coordinamento, ma la loro “istituzione”, se avviene a freddo e senza coinvolgimento dal basso, rischia di trasformarsi in una nuova piramide organizzativain cui c’è un “capo” che da degli “ordini” espliciti ai subalterni, piuttosto che un Leaderin grado di ascoltare, risolvere le problematiche e guidare, quando necessario, le Persone con autorevolezza e raramente (se dicessi “mai” sarei poco realista) con autorità.

La questione, chiaramente, è riuscire a coltivare delle Persone che sviluppino le caratteristiche primarie di un Leader, riassunte nell’esplicita infografica di Alessandro Ferrari, andando al di là del titolo assegnato e dell’atteggiamento di aver raggiunto una “posizione” di comando sugli altri.

leader infografica

Un’azienda che ha la bravura, e un pizzico di fortuna, di far crescere i propri Leader, non ha bisogno di assegnargli titoli che richiamino il “comando”, perché queste Persone sono implicitamente riconosciute al suo interno come “trascinatori”, contemplando il fatto che ogni membro dell’organizzazione può diventare Leader in qualsiasi momento, catalizzando l’attenzione dei propri colleghi.  

Ciò, ovviamente, implica che un “Leader non è per sempre” solo perché è un “chief”, ma deve guadagnarsi tale riconoscimento giornalmente sul campo per non trasformarsi, nella migliore delle ipotesi, in “chief di se stessi”.

Stay tuned J

Power is nothing without control

I’m blind! Is my software team going well? How can I know? With a dashboard you can and in a couple of minutes you can setup one with VSTS!

Asciughiamo il Lago dei Difetti, aka Lake of Defects

Build-in Quaility è uno dei principi fondamentali di Lean, base del pillar Jidokadella famosa House of Lean. Il concetto di per sé rasenta il “banale”: ogni prodotto realizzato deve incorporare e abbracciare strutturalmente gli aspetti di qualità. La questione, però, è che il significato specifico di “qualità” e le azioniche concorrono al suo raggiungimento sono elementi tutt’altro che univoci e definibili in modo predefinito e/o predittivo. In fondo, siamo nel modo dei sistemi complessi, dove dobbiamo costantemente validare le nostre assunzioni per trovare la soluzione migliore adatta al prodotto e al contesto. 

Strumentipraticheprocessitoolci consentono di validare gli aspetti realizzativi e funzionali del prodotto, ma essere opportunamente innestatiall’interno del ciclo di sviluppo, dando dignità soprattutto alle Persone che ne sono i veri detentori, operativi e di know-how.

Nel mondo del software è comune associare l’idea di qualità al testing (anche se è un pelino riduttivo) ma spesso non si ha un approccio strutturato relativo, andando a fare “azioni artigianali” che finiscono per concentrarsi soprattutto alla fine delle attività di coding. Paradossalmente, questo modo di procedere genera uno dei più grandi Waste (Muda, Sprechi) che si possano incontrare lungo la filiera di Delivery, creando a valle del flusso di lavoro un Lake of Defects in cui i tester devono improvvisarsi sommozzatoriper poter individuare le deficienze del nostro prodotto e comunicarle in qualche modo agli sviluppatori. 

lake of defects

Lake of Defects

Si intuisce come tale azione sia estremamente lunga e costosa, aumentando notevolmente il Lead Time (che, lo ricordiamo, è il tempo totale di realizzazione di una funzionalità, da quando viene inserita nel Product Backlog a quando viene rilasciata) e diminuisce la capacità di avere feedback rapidi il più vicino possibile la cellula(o team) che fattivamente sta realizzando la specifica attività. 

L’approccio che mi capita spesso di utilizzare per cominciare a “drenare il lago” è quello di introdurre il noto modello della Piramide di Testing(Testing Pyramid, rif Mike Cohn), facendo attenzione sempre ad evidenziare che, appunto, si tratta di un modello e che, in perfetta chiave Agile, lo stesso va contestualizzato e validato operativamente sul campo.

testing pyramid

Testing Pyramid

Lo scopo è quello di spalmareil testing, ma più in generale tutte le attività annesse al raggiungimento dell’obiettivo build-in quality, lungo l’intera filiera di delivery. Si tratta di un approccio fondamentale e portante per avviare una “vera” trasformazione in chiave DevOps

Facciamo un esempio: se non ho un insieme valido di unit testall’atto della Continuous Integration, non sto facendo Continuous Integration (CI), ma semplicemente merge del codice! Ricordo che l’obiettivo della CI è quello di fornire rapidamente un feedback su quanto realizzato, non quello di generare la build!

Con un approccio strutturato alla qualità (o al testing, se preferite leggerlo in tal modo), si riesce ad asciugare il lago, trasformandolo progressivamente in una pozzanghera (Puddle of Defects) e, idealmente, facendolo scomparire del tutto.

puddle of defects

Puddle of Defects

Migliorando costantemente il proprio approccio alla qualità, la necessità di avere un “team di testing” viene tendenzialmente meno e le Persone che prima si comportavano da sommozzatori, possono dedicarsi a portare un reale e costante valore aggiunto, mettendo al centro il cliente in chiave Customer centric.

Stay tuned J

La Teoria della Scarpa a Rovescio

Più si cresce e più si tende ad amalgamarsi alle regole che tipicamente condizionano il nostro ambienteil nostrostile di vita. Si tratta di un processo che ci accompagna in modo silente, non accorgendoci nemmeno del fatto che esso sia in atto e di come limiti, in modo crescente, la capacità di guardare oltre gli schemi, così come quella di trovare modi ed atteggiamenti che riescano ancora a stupirci in risposta alla condizione di appiattimento generale.

Una metafora che “calza a pennello” è quella dei bambini che provano a camminare con le scarpe dei genitori: incoscientemente, e divertendosi, provano a indossarle in tutti i modi possibili, fin anche mettendola a rovesciorispetto al piede e provare a fare qualche passo.

scarpa rovescio

Ecco la magia! I bambini sperimentano per apprendere, senza nessuno che debba dirglielo o insegnarglielo… è così e basta.

Eppure, più si diventa grandi, meno possiamo mettere la “Scarpa a Rovescio”, non fosse altro che “fisicamente” non riusciamo a farlo: anche se prendessimo una scarpa della taglia doppia rispetto alla nostra, la cosa è probabilmente impossibile.

Riportando la metafora al nostro contesto, ciò significa che più ci amalgamiamoal contesto operativo a cui apparteniamo, più ne diventiamo contaminati, e più diventa difficile provare a guardare fuori dagli schemi.

Assimiliamo un modo di fare che ci porta in una comfort zone, trasformandoci in “pigroni” che provano a galleggiare sulle attività giornaliere, riducendo, se non perdendo del tutto, lo spirito disperimentazione della Scarpa a Rovescio.

Più cadiamo in questo limbo, meno siamo soddisfatti di quanto facciamo e, cosa che spesso sfugge alle organizzazioni, meno facciamo l’interesse per il contesto in cui operiamo: un manager che non sbaglia mai, non prova ad innovare, trovare nuove strade, non si ferma a riflettere, è, con molta probabilità, un cattivo manager che non sta guardando al futuro dell’organizzazione essendo “soffocato” dal quotidiano. Stesso discorso per tecnici, operativi, e tutte gli altri ruoli aziendali che possono venirci in mente.

Ma come reagiamo a questa condizione? Dobbiamo tornare un po’ bambini, andando a riscoprire la soddisfazione intrinseca nello sperimentare, nel porsi fuori dalla propria area di sicurezza, in modo da reinventarsi e reinventare la propria professione e professionalità.

Dobbiamo continuamente rincorrere l’effetto “WOW!”, rilassandoci ed imparando a guardare le questioni da una moltitudine di angolazioni, cercando lo spazio che gli altri ignorano e che ci permetterà di fare la differenza.

effetto wow 

Certo, per fare questo, è necessario che la nostra azienda abbia una cultura orientata alla sperimentazione ed all’apprendimento (la terza via di DevOps e uno dei pilastri di Lean), creando una safety-netin cui muoverci con la certezza che qualsiasi sarà il risultato della nostra azione, avremo comunque raggiunto un risultato apprezzato in quanto tale.

Chiudiamo con una frase resa famosa da Steve Jobs che sembra fatta a pennello: Stay Hungry, Stay Foolish!

Stay tuned J