Il perché dei perché di Platform Engineering

Mar 07 2023
Questo articolo è il primo di una serie di articoli destinati a coprire il "perché", "cosa" e "come" di Platform Engineering. L'ingegneria della piattaforma, come tutti gli altri importanti sforzi per migliorare i risultati nel campo della distribuzione del software, riguarda la creazione sostenibile di software di qualità a velocità e scala.

Questo articolo è il primo di una serie di articoli destinati a coprire il "perché", "cosa" e "come" di Platform Engineering.

L'ingegneria della piattaforma, come tutti gli altri importanti sforzi per migliorare i risultati nel campo della distribuzione del software, riguarda la creazione sostenibile di software di qualità a velocità e scala .

Nello spirito dei primi principi, esaminiamo brevemente perché ci preoccupiamo di questi "perché".

Velocità

I team e le organizzazioni vogliono essere in grado di muoversi velocemente, almeno più velocemente dei loro concorrenti. Il vantaggio della velocità per un'organizzazione può essere abbastanza intuitivo da un obiettivo aziendale. "Vantaggio della prima mossa", "time to market" e altri termini commerciali comuni racchiudono il valore di muoversi velocemente. Nel contesto specifico dell'ingegneria del software, probabilmente il più grande vantaggio della velocità è quando è abbinato a una distribuzione agile del software. Essere "agili" implica iniziare con un presupposto, riconoscere che ciò che pensiamo sia probabilmente sbagliato, fare piccole scommesse, convalidare con feedback del mondo reale e iterare verso lo stato desiderato. Questi cicli di ipotesi, sperimentazione e adattamento portano a soluzioni che funzionano. Per arrivare a un prodotto vincente, un'organizzazione di ingegneria deve superare la concorrenza. I team e le organizzazioni che creano più velocemente, misurano più velocemente, iterano più velocemente hanno maggiori probabilità di creare il prodotto vincente. Lo stesso può essere applicato per arrivare a quale architettura, design e strumenti funzionano meglio.La velocità della sperimentazione determina il successo di un'organizzazione ingegneristica.

Qualità

Una mancanza di qualità implica costi più elevati. Ad esempio, i guasti negli ambienti rivolti ai clienti sono generalmente associati a un importo monetario: una piattaforma web di e-commerce che non è disponibile per 10 minuti può perdere migliaia se non milioni di entrate. Tuttavia, cosa ancora più importante, la qualità consente la velocità ! È quasi intuitivo pensare che per raggiungere la qualità dobbiamo adottare un approccio lento, attento e deliberato o che possiamo sacrificare la qualità per andare veloci, rilasciare più funzionalità. Nell'ingegneria del software, questa è una scelta sbagliata. Non c'è velocità senza qualità e le organizzazioni con alta qualità lavorano sempre ad alta velocità. Lo sappiamo dai sondaggi basati sui dati condotti dal rapporto sullo stato delle operazioni di sviluppoe le loro scoperte secondo cui le organizzazioni d'élite combinano sia un'elevata "frequenza di implementazione" e un basso "tempo di consegna" con un basso "tasso di errore di modifica" e un basso "tempo medio di ripristino".

Sostenibilità

Almeno per ora, la scrittura di software è un processo creativo ancora all'interno del dominio degli umani. E mentre questo rimane il caso per essere in grado di produrre software di qualità a velocità e scala, dobbiamo pensare alle persone e ai team che creano quel software. Fattori come autonomia, motivazione e carico cognitivo devono essere presi in considerazione insieme alle competenze quando si crea un team di ingegneri, cosa ancora più importante quando si strutturano e si ingegnerizzano le organizzazioni. Un'organizzazione di ingegneria ad alte prestazioni potrebbe subire un brusco arresto a causa della propria crescita e del proprio successo. Man mano che le complessità e le dimensioni delle loro organizzazioni crescono, la capacità dei loro team di funzionare in modo autonomo e con un carico cognitivo sostenibile determina se l'organizzazione può continuare a produrre software di qualità a velocità.

Scala

La scala, a differenza degli altri fattori qui, definisce il contesto in cui vogliamo ottenere i risultati di cui sopra in contrasto con un risultato desiderato stesso. Le metodologie che determinano il successo su una scala di individui che svolgono progetti collaterali possono essere molto diverse dalle pratiche che consentono alle grandi organizzazioni di ingegneria di avere successo. I vincoli organizzativi e il contesto contano, e forse è per questo che l'unica risposta che i consulenti possono dare ai clienti che vale sempre è “Dipende”.

I prodotti della piattaforma, o ciò che meglio conosciamo come PaaS (Platform as a Service) come heroku e fly.io , possono essere meravigliosi abilitatori su una certa scala, ma le organizzazioni sufficientemente grandi devono integrare verticalmente le proprie risorse in modo da poter gestire costi, sicurezza, conformità e altri problemi di governance. Le organizzazioni sufficientemente grandi non possono permettersi di rimanere prigioniere delle limitazioni e dei vincoli del prodotto mentre i loro concorrenti innovano.
Le pratiche di ingegneria della piattaforma spesso richiedono un investimento iniziale e il ritorno su questo investimento spesso cresce con l'organizzazione di ingegneria fino al punto in cui queste pratiche diventano un must per produrre software di qualità a velocità e scala.

Pertanto, le grandi organizzazioni devono adottare pratiche, modelli e processi che consentano a più team, su più sottosistemi complessi, su più domini aziendali, di operare con carico cognitivo gestibile e autonomia per produrre software di alta qualità a velocità.