Una software factory (azienda o divisione allโ€™interno di unโ€™azienda) affronta delle fasi riassunte in quella che chiamo โ€œla traiettoria evolutivaโ€. La traiettoria descrive il percorso di una software factory a mano a mano che cambia e matura. รˆ fondamentale che una volta arrivati a un certo stadio non si torni piรน indietro al punto precedente.

Secondo la filosofia kaizen (miglioramento continuo) bisogna tenere sempre un minimo di tensione organizzativa orientata al miglioramento altrimenti subentrano lโ€™entropia e le vecchie abitudini, che tornano a fare capolino facendoci retrocedere nella traiettoria evolutiva.

La leadership aziendale deve considerare che la software factory non potrร  funzionare sempre allo stesso modo durante la sua vita. Cultura, valore e tecnologia dovranno evolvere perchรฉ ciรฒ che ha portato la software factory (e quindi il business) fino a un certo punto comincerร  a non essere piรน ottimale nei punti successivi.

 STORY โ€“ Non sta piรน in piedi

Alessandro รจ un imprenditore che, insieme a due soci, fonda unโ€™azienda che produce una piattaforma software per il settore delle scommesse sportive. I soci fondatori sono competenti, appassionati e cominciano a costruire lโ€™azienda ispirandosi ai principi agile e DevOps che fanno parte del loro DNA. Dopo qualche anno nel mercato Alessandro si trova ad affrontare un momento di crescita improvvisa: deve passare da 10 persone a circa 40. La mia avventura nellโ€™azienda di Alessandro nasce da una cena:

โ€œMichele, i miei processi non scalano piรน. Ciรฒ che funzionava per 10 non sta in piedi per 40. Ho bisogno di una persona di fiducia che mi aiuti a ristrutturare certe parti. Cโ€™รจ del casino, ti interessa lavorare con noi?โ€

Con Alessandro abbiamo un poโ€™ alla volta cambiato il modo di visualizzare il lavoro, introdotto automazione spinta fino alla produzione di documentazione per scopi di compliance legale, automatizzato lโ€™evoluzione dello schema di database e stravolto il processo tecnologico di deployment (citando solo gli aspetti piรน tecnici). Lโ€™azienda ha dovuto evolvere anche nellโ€™assistenza clienti, supporto, reperibilitร  e molto altro. Ciรฒ che funzionava per 10 persone e le aveva portate fino lรฌ, non era piรน adeguato.

Sopravvivere

In questa fase iniziale, la Software factory รจ appena stata creata e il suo obiettivo principale รจ quello di diventare operativa il piรน rapidamente possibile. La prioritร  รจ rilasciare funzionalitร  utili per il business, anche a costo di accumulare del debito tecnico che dovrร  essere gestito successivamente. L’attenzione รจ sulla costruzione di una base solida per lo sviluppo, configurando strumenti essenziali e stabilendo politiche iniziali che permettano ai team di lavorare in modo produttivo. รˆ una fase caratterizzata da pragmatismo e velocitร , dove si pongono le fondamenta per un sistema che sarร  migliorato e raffinato nel tempo. Leadership ed Engineering iniziano a costruire un dialogo che sarร  cruciale per il futuro allineamento strategico.

Alcuni segnali di questa fase:

  • Definizione iniziale di una piattaforma di gestione application lifecycle management (es. Azure DevOps, GitHub, GitLab).
  • Policy di gestione e uso del version control/repository.
  • Creazione di linee guida minime per pull-request e revisione del codice.
  • Pipeline di build e deployment configurate, anche se con processi manuali parziali.
  • Pianificazione a breve termine basata sulle prioritร  di business immediate.
  • Stabilire un minimo di automazione per i processi ripetitivi.
  • Dialogo iniziale tra Leadership e Engineering per allineamento sugli obiettivi.

Vivere

In questa fase, il business comincia a vedere una certa prevedibilitร  nei rilasci, e le dinamiche del team Engineering sono stabilizzate. I processi di base per la gestione del lavoro e delle prioritร  sono consolidati, permettendo al team di operare con una maggiore consapevolezza e controllo del flusso di lavoro. Lโ€™azienda comincia ad adottare pratiche piรน strutturate, come il testing automatizzato e la gestione del debito tecnico, mentre le retrospettive regolari permettono di identificare opportunitร  di miglioramento continuo. La leadership e il team Engineering hanno sviluppato un dialogo solido, con una visione condivisa del lavoro da svolgere e delle prioritร  strategiche. Il focus รจ ora su miglioramenti incrementali e sulla riduzione degli sprechi nel processo produttivo.

Alcuni segnali di questa fase:

  • Processo strutturato per la gestione dei requisiti e del backlog.
  • Limitazione consapevole del work-in-progress (WIP) per evitare sovraccarichi.
  • Inizio di un approccio formale al testing automatizzato.
  • Retrospettive regolari per individuare e pianificare miglioramenti.
  • Analisi non strutturata del feedback e della telemetria per decisioni operative.
  • Dialogo consolidato tra Leadership e Engineering, con definizione di ruoli e responsabilitร  chiari.
  • Prime pratiche di gestione del debito tecnico.
  • Strutturazione di una cultura del miglioramento continuo.

Funzionare

In questa fase, la Software factory ha trovato un ritmo stabile e produttivo. Le pratiche fondamentali sono ben radicate nella mentalitร  aziendale, e i team operano in modo autonomo, mantenendo un costante allineamento con gli obiettivi di business. La suite di testing automatizzato รจ robusta e ben strutturata, e l’azienda inizia a fare uso piรน intensivo di dati e telemetria per prendere decisioni informate, fin dalla fase di requisiti. Il debito tecnico รจ monitorato e ridotto, e il focus si sposta su una pianificazione di medio termine. L’attenzione รจ rivolta alla formazione continua del personale e agli investimenti in ricerca e sviluppo, con lโ€™obiettivo di migliorare le capacitร  aziendali e di esplorare nuove opportunitร  di innovazione.

Alcuni segnali di questa fase:

  • Team autonomi e allineati agli obiettivi strategici del business.
  • Suite di testing automatizzato ben strutturata, con copertura significativa.
  • Assistenza clienti strutturata, con feedback diretto al team di sviluppo.
  • Collaborazione attiva tra Marketing e Engineering per integrare feedback utente nelle roadmap.
  • Decisioni basate su dati provenienti da telemetria e analisi avanzate.
  • Sicurezza e telemetria considerati giร  dalla fase di definizione dei requisiti.
  • Debito tecnico monitorato e ridotto secondo prioritร .
  • Pianificazione a medio termine, con roadmap chiara e scadenze realistiche.
  • Programmi di formazione e aggiornamento continuo per il personale.
  • Investimenti regolari in ricerca e sviluppo, con sperimentazione di nuove tecnologie.

Prosperare

A questo punto, la Software factory รจ una realtร  matura e leader nel suo settore. I processi sono fluidi e lโ€™interazione tra i vari dipartimenti รจ ottimizzata per minimizzare gli sprechi e massimizzare la consegna di valore agli utenti finali. La fase di prosperitร  รจ caratterizzata da forti investimenti in ricerca e sviluppo, pratiche avanzate come chaos engineering e red-teaming per garantire la resilienza dei sistemi, e un focus costante sul miglioramento della sicurezza e della compliance attraverso DevOps. I team operano con efficienza, grazie a una cultura aziendale che promuove il benessere del personale e una mentalitร  orientata all’innovazione continua. L’organizzazione รจ agile, adattabile e in grado di sperimentare con nuove tecnologie e pratiche per mantenere la sua posizione di leadership.

Alcuni segnali di questa fase:

  • Forti e continui investimenti in ricerca e sviluppo, con focus sull’innovazione.
  • Politiche di wellbeing strutturate e mirate al mantenimento del benessere del personale.
  • Esperimenti avanzati e sistematici di A/B testing per la validazione delle feature.
  • Implementazione di pratiche di chaos engineering per testare la resilienza dei sistemi.
  • Team di red-teaming dedicati alla sicurezza e alla simulazione di attacchi.
  • Implementazione di team SRE (Site Reliability Engineering) per la gestione proattiva delle operazioni.
  • Integrazione di DevOps nei processi di Compliance e audit.
  • Cultura aziendale orientata all’eccellenza, con flusso di lavoro ottimizzato tra i dipartimenti.
  • Capacitร  di adattamento rapido alle esigenze del mercato e innovazione continua.

Quando iniziai a lavorare nel 2010, il manifesto Agile stava compiendo 9 anni. Pubblicato nel 2001 diede inizio a una nuova era nellโ€™approccio alla gestione dei progetti software. Scrum e Kanban, le principali implementazioni ispirate ai principi Agile, si stavano diffondendo a macchia dโ€™olio (soprattutto la prima).

Ma, giร  da qualche anno, in vari angoli del mondo, si stava sperimentando lโ€™adozione dei principi Lean del mondo manifatturiero nei contesti di sviluppo software. Nella comunitร  DevOps ci si riferisce a questo periodo come โ€œLa convergenza DevOpsโ€.

Da quel periodo sono passati svariati anni e si puรฒ empiricamente affermare che quegli esperimenti hanno avuto successo. Le pratiche che permettono a una software factory di essere come definita in questo libro si basano profondamente su queste ideologie.

Ancora prima, nei primi anni 2000, era XP (Extreme Programming) una delle metodologie Agile piรน diffuse con le sue pratiche di Test-Driven-Development e Continuous Integration: concetti che saranno poi fondamentali per arrivare al movimento DevOps.

Usare un framework oppure un altro fa davvero tutta questa differenza? Su cosa dobbiamo concentrarci davvero per capire se la nostra Software factory sta funzionando bene? E cosa significa farla funzionare bene?