Se c'è un personaggio in Space Force in cui ogni sviluppatore può immedesimarsi, è il Dr. Adrian Mallory. Interpretato magistralmente da John Malkovich, Mallory passa le sue giornate a strapparsi i capelli (quei pochi che ha) cercando di spiegare ai generali e ai politici che le leggi dell'astrofisica non si piegano alle scadenze elettorali.

I politici vogliono una base lunare per la prossima settimana, tagliando i fondi per la ricerca e saltando le simulazioni, solo perché "suona bene per un comunicato stampa". Mallory prova a spiegare che i serbatoi esploderanno. Loro gli rispondono di "fare squadra".

Fa ridere, finché non ti rendi conto che è esattamente quello che succede ogni giorno nello sviluppo software.

Il Teorema di Feynman applicato alle API

Dopo il disastro dello Space Shuttle Challenger nel 1986, causato proprio da pressioni politiche che ignorarono gli avvertimenti degli ingegneri su una guarnizione economica, il fisico Richard Feynman scrisse una frase che dovrebbe essere scolpita in ogni ufficio IT:

"Perché una tecnologia abbia successo, la realtà deve avere la precedenza sulle pubbliche relazioni, poiché la natura non può essere ingannata."

Sostituite "natura" con "produzione", e avrete riassunto la carriera di ogni Web Developer.

Quando un cliente o un manager impone scadenze assurde ("Dobbiamo andare online venerdì per il Black Friday!") e taglia il budget, non sta magicamente accelerando il tempo. Sta semplicemente chiedendo al team tecnico di accumulare un debito.

E per rispettare quella data, noi dev iniziamo a ingannare noi stessi: saltiamo i test automatizzati, mettiamo da parte le architetture pulite e scriviamo codice che funziona per miracolo.

Il Fango: "Inshallah-Driven Development"

Qualche anno fa mi è capitato di lavorare a un'integrazione per un sistema di pagamenti. Il frontend in React doveva dialogare con un backend molto complesso.

La scadenza era letteralmente folle: "La campagna marketing è già partita, l'app deve funzionare entro domani mattina". Non c'era tempo per configurare un sistema robusto di Webhook per ascoltare in modo asincrono la risposta della banca.

Cosa ho fatto? Sotto pressione, ho ceduto al lato oscuro. Ho scritto una roba del genere:

// Rushed Code (Quello che ho scritto io)
async function handlePaymentRushed() {
  startPayment();
  
  // Il business ha detto che non c'è tempo per i Webhook.
  // Mettiamo il thread a dormire per 5 secondi e speriamo 
  // che la banca abbia finito di processare il pagamento.
  await new Promise(resolve => setTimeout(resolve, 5000));
  
  // Se l'utente ha la connessione lenta? Peggio per lui.
  setOrderStatus('success'); 
}

Ho usato la speranza come pattern architetturale. Ha funzionato per la demo? Sì. Ha funzionato in produzione? Assolutamente no.

Appena il server ha avuto un picco di latenza, gli utenti venivano reindirizzati alla pagina di successo anche se il pagamento era fallito, o viceversa. È stato un bagno di sangue. Tutto perché avevamo provato a negoziare con la "fisica" delle reti asincrone.

Quello che avrei dovuto avere il coraggio di esigere, chiedendo il tempo necessario, era l'ingegneria vera:

// Engineering Corretto (Webhook Asincrono)
app.post('/api/webhooks/payments', (req, res) => {
  // Il server aspetta passivamente che la banca comunichi l'esito reale
  const event = verifySignature(req);
  
  if (event.type === 'payment.succeeded') {
    database.updateOrder(event.orderId, 'paid');
    triggerFrontendRefresh(event.orderId);
  }
});

Il Takeaway

L'universo è testardo. L'ingegneria, che sia aerospaziale o informatica, è la disciplina che ci insegna a fare i conti con la testardaggine dell'universo.

Quando subite pressioni per consegnare software scritto male pur di rispettare una data fittizia inventata dal marketing, ricordatevi del Dr. Mallory. Imparate a dire di no, o quantomeno a spiegare chiaramente il costo di quel compromesso.

Perché potete anche convincere il vostro capo che il razzo è pronto per il lancio. Ma quando la navicella sarà nel vuoto, la gravità presenterà il conto. E a lei non interessano i comunicati stampa.