• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Matteo CrippaOttobre 24, 2024 3 min di lettura

Fail Fast: quando fallire è una vittoria

DevOps
fail fast approach image
facebooktwitterlinkedinreddit

In un mondo dominato dalla velocità di sviluppo e dall’innovazione continua, il fallimento non è sempre una battuta d’arresto—anzi, può rivelarsi una strategia vincente.

Parliamo di Fail Fast, una metodologia fondamentale in ambito software, che mira a identificare rapidamente limiti e criticità di una soluzione.

Recommended article
A-landscape-oriented-image-that-embodies-the-concept-of-a-lightweight-proxy-approach-in-a-cloud-native-scenario-with-a-special-focus
Giugno 10, 2025

LimitRange e ResourceQuota: come tenere sotto controllo il tuo cluster Kubernetes

Enrico Candino

DevOps

Che cos’è il Fail Fast?

Il Fail Fast è un modus operandi con un solo obiettivo: trovare un potenziale punto di arresto. Se Cartesio diceva Cogito ergo sum, qui potremmo dire Deficio ergo sum (fallisco, quindi esisto).

Questo approccio è particolarmente cruciale in contesti come l’IoT (Internet of Things), dove le variabili sono numerose e spesso fuori dal nostro controllo diretto. Ma, fidatevi, questa metodologia può rivelarsi utile in qualsiasi ambito.

Immaginate di lavorare con una “scatola nera”, un elemento su cui non abbiamo piena visibilità o influenza. La documentazione è sommaria, con una lista dei behaviour previsti, ma poche certezze. Dall’altro lato, però, ci sono user stories dettagliate, riviste insieme ai team di UX e QA, pronte per essere messe alla prova con test plan rigorosi.

Allora perché puntare a fallire?
Perché scoprire prima possibile che qualcosa non funziona ci permette di prendere decisioni tempestive, aggiustare il tiro e, se necessario, attivare delle escalation.

Il Fail Fast è l’antitesi del “sandbagging”, ovvero dell’abitudine di procrastinare un problema nella speranza che venga dimenticato o catalogato come “non riproducibile”.

Agendo subito, possiamo evitare che i problemi si accumulino e diventino ingestibili.

Come metterlo in pratica?

Il Fail Fast trova spesso applicazione attraverso i Proof of Concept (PoC).

Un team, o anche un singolo sviluppatore, testa una soluzione per validarla rapidamente. Ma non ci si limita a una semplice verifica di funzionamento: il PoC deve sfidare la soluzione, metterla alla prova in condizioni che potrebbero causarne il fallimento.

Di solito, in queste attività si coinvolgono figure Senior o Expert, grazie alla loro esperienza nel riconoscere punti critici e “colpire” dove è più probabile trovare problemi. Tuttavia, non è un requisito assoluto: chiunque, con la giusta mentalità e approccio, può contribuire al processo di Fail Fast.

Un esempio pratico: la sincronizzazione BLE in background su iOS

Un contesto dove è facile applicare questa strategia è quello dell’hardware, spesso caratterizzato da “black box” su cui abbiamo un controllo limitato.

Molti di voi avranno una smart band o uno smart ring. Questi dispositivi raccolgono dati in modo continuo e, per voi utenti, è comodo aprire l’applicazione e trovare i dati aggiornati senza dover attendere un lungo processo di sincronizzazione, giusto?
Perfetto, ma se consideriamo tra le criticità l’utilizzo del BLE (Bluetooth Low Energy) e iOS in background, ci troviamo di fronte a una potenziale polveriera pronta a esplodere in un attimo.

Per esperienza, sappiamo che ci sono pattern critici che coinvolgono BLE e iOS in diversi frangenti (ci sarebbe da parlarne per giorni…), ma un esempio classico di applicazione del Fail Fast è verificare immediatamente se il peripheral non richiede, banalmente, un’interazione fisica per mantenere o ristabilire la connessione.

Se non facciamo questo test subito, rischiamo di scoprire troppo tardi che le sincronizzazioni in background non funzionano come previsto. E questo potrebbe significare la fine dell’esperienza di utilizzo fluida che l’utente si aspetta, costringendo a rivedere l’intero progetto software o hardware.

O a vedere crescere e crescere le cattive review sugli store.

Fail Fast: dal PxD (Physical x Digital) al D² (Digital x Digital)

Nel contesto Physical x Digital (PxD), come spesso accade nei progetti IoT, il Fail Fast è quasi obbligatorio. Ma vale la pena applicarlo anche nel Digital x Digital (D²), ovvero in progetti puramente digitali. Se riceviamo una documentazione di una API REST o GraphQL, per esempio, perché non testarla subito in uno scenario reale, dove potrebbe fallire? Meglio scoprirlo noi, che il nostro cliente.

“Ma ci sono già i test automatici, no?”

Vero, molti pensano che una soluzione validata da unit test e QA interna sia sicura. Tuttavia, recenti fallimenti, persino in ambiti come l’aerospace, dimostrano che anche un sistema apparentemente stabile può riservare sorprese quando una entità terza inizia ad interagirci. Testare con un approccio Fail Fast, magari con una time-box precisa, potrebbe fare la differenza.

Sono curioso di sapere cosa ne pensate e se adottate questa pratica anche voi. Avete esempi concreti? Fatemi sapere!

Related Posts

automating AWS releases, TerraformCloud, cloud, cloud automation.

DevSecOps, fra Platform Engineering e AI

Domenico Raguseo
Maggio 29, 2024
continuous integration

Vuoi fare Continuous Integration? Allora ti serve il Trunk-Based Development

danthedev
Maggio 27, 2024
Test Driven Development. Agile. best practices.

Test Driven Development: Il primo passo verso l’Eccellenza Tecnica

danthedev
Aprile 24, 2024
Perché Scrum fa schifo. L'autore crede che genera più problemi di quanti risolve. Metodologia Agile.

Unpopular opinion: Scrum fa casino

Arnaldo Morena
Marzo 12, 2024
Share on:facebooktwitterlinkedinreddit
Matteo Crippa
Ciao, sono Matteo, il team leader mobile di 🔴 intent. 🚀 Creatore di: Awesome Swift, Awesome BLE, LeafMiner ☘️⛏️. ✍️ Contribuisco in: Flutter, CareKit, ResearchKit, MapLibre, Fuel, Vapor. 🔬 Di solito sviluppo in iOS - (Objective-C, Swift), Android - (Kotlin), Node.js - (Express.js, AWS Lambda), Deno, Flutter, Vue.js
GitHub Uncharted: da MockK ad Arrow con Mattia Tommasone
Previous Post
Automatizzare l’installazione e la gestione di LogOS in ambienti complessi con Dr.WOLF
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions