Vai al contenuto
Pensiero critico assistito: usare l’AI come contraddittorio, non come oracolo 🧪

Pensiero critico assistito: usare l’AI come contraddittorio, non come oracolo 🧪

14 luglio 2026·Sandro Lain
Sandro Lain

Pensiero critico assistito

Ti è mai capitato di leggere una risposta AI impeccabile, ordinata, quasi elegante, e pensare: “Perfetto, facciamo così”? Poi passano due giorni, arriva il primo incidente in produzione e scopri che quella soluzione era splendida come una facciata appena verniciata: bella da lontano, fragile da vicino.

Il punto non è che l’AI “sbaglia”. Sbagliamo noi quando la trattiamo come oracolo invece che come contraddittorio interno. La differenza è tutta qui: nel primo caso deleghiamo il giudizio, nel secondo lo alleniamo.

L’AI più utile non è quella che risponde al posto tuo, ma quella che migliora la qualità dei dubbi prima che diventino bug.

Risposte plausibili, decisioni rischiose 🎭

Nel lavoro quotidiano c’è una tentazione fortissima: confondere la plausibilità linguistica con l’affidabilità tecnica. Un output scritto bene ci rassicura. E la rassicurazione, in software, è spesso il modo più elegante di chiamare una scorciatoia.

Quando accettiamo una proposta AI senza contraddittorio, non stiamo accelerando la conoscenza: stiamo automatizzando la conferma dei nostri bias. Se il team è già convinto di una direzione, il modello tenderà a rinforzarla con argomenti coerenti. Coerenti, sì. Necessariamente veri, no.

È la stessa dinamica che emerge in Question-Driven Specification: il problema non è produrre risposte in fretta, ma decidere bene quando i requisiti sono ancora opachi.

Da oracolo a contraddittorio interno 🪞

Il modello “oracolo” è semplice da descrivere: chiedi, ricevi, incolli, merge. È anche il modello più pericoloso, perché riduce l’attrito proprio dove l’attrito servirebbe.

Il modello “contraddittorio”, invece, segue una logica diversa: chiedi, stress-testi, confronti, decidi. L’AI non è il giudice finale, è la controparte che ti obbliga a esplicitare assunzioni, limiti e trade-off.

In pratica cambia la postura mentale. Non domandi “qual è la soluzione giusta?” ma “dove può rompersi questa soluzione?”. E questa singola inversione evita molte sorprese costose.

Accettare output AI senza contraddittorio non è efficienza: è fretta con una buona grammatica.

Il protocollo C-C-C-D per non auto-ingannarsi 📐

Quando una decisione ha impatto reale, uso un protocollo minimale in quattro passaggi:

  • Claim: cosa sta affermando davvero il modello?
  • Constraints: quali vincoli reali devono valere nel tuo contesto? Sicurezza, performance, compliance, costi operativi, compatibilità legacy.
  • Counterexample: qual è il caso concreto in cui questa proposta fallisce?
  • Decision: cosa accetti, cosa scarti, cosa validi con test prima del merge?

Sembra banale. Funziona perché costringe il team a smettere di discutere per impressioni e a discutere per falsificabilità. In altre parole: meno opinioni in libertà, più ipotesi verificabili.

Se vuoi una base metodologica complementare, il mindset di Unknowns-Driven Development è perfetto: partire da ciò che non sai, invece di fingere chiarezza prematura.

Prompt per criticare meglio, non solo per produrre meglio ✍️

Molti prompt chiedono output. Quelli più utili chiedono attrito cognitivo. Alcuni esempi che uso spesso:

  • “Indicami 3 failure mode realistici di questa soluzione.”
  • “Qual è l’assunzione più fragile e come posso verificarla in meno di un giorno?”
  • “Quali trade-off operativi sto sottovalutando?”
  • “Quali test potrebbero falsificare questa proposta?”

Non sono formule magiche. Sono domande che spostano la conversazione da “dimmi cosa fare” a “aiutami a decidere con più onestà”.

Questo approccio è coerente anche con Context engineering: non vince il prompt più brillante, vince il contesto più rigoroso.

Tre situazioni reali dove cambia tutto 🔄

Primo scenario: endpoint retry-safe. La proposta AI sembra pulita finché non chiedi controesempi su retry simultanei. E lì emerge il dettaglio che mancava: chiave di idempotenza persistente, non solo memoria volatile.

Secondo scenario: refactor di modulo legacy. Il modello suggerisce una separazione elegante in più file. Al contraddittorio, però, saltano fuori dipendenze cicliche nascoste. Decisione pragmatica: refactor in due step, prima contract test, poi separazione definitiva.

Terzo scenario: requisito ambiguo, il classico “deve essere veloce”. Usata come critico, l’AI inizia a chiedere p95, carico atteso, budget errore, soglie di saturazione. Il requisito finalmente smette di essere poetico e diventa testabile.

In tutti e tre i casi il guadagno non è “scrivere prima”. È sbagliare meno tardi, che nel mondo reale vale molto di più.

Anti-pattern da evitare quando tutto sembra andare bene 🚫

Ci sono abitudini che sembrano innocue e poi presentano il conto:

  • usare l’AI per confermare una decisione già presa;
  • delegarle la stima finale del rischio;
  • saltare test perché l’output “sembra robusto”;
  • scambiare velocità iniziale con affidabilità nel tempo.

La trappola è sempre la stessa: il team vede un miglioramento di throughput e lo interpreta come miglioramento di qualità. A volte è vero. Spesso no.

Conclusione: il vantaggio competitivo è il dubbio strutturato 🧠

L’AI non elimina il bisogno di pensiero critico. Lo rende più urgente. Perché se puoi generare dieci soluzioni in dieci minuti, la capacità scarsa non è più produrre opzioni: è scegliere senza auto-ingannarti.

Per uno sprint, prova un esperimento semplice: applica il protocollo C-C-C-D solo alle decisioni ad alto impatto. Poi misura tre cose concrete: bug intercettati prima del merge, requisiti chiariti prima dello sviluppo, rollback evitati.

Se i numeri migliorano, non hai trovato un nuovo “trucco AI”. Hai solo rimesso al centro una vecchia disciplina: pensare meglio prima di costruire.

E oggi, paradossalmente, è l’atto più moderno che possiamo fare.

Ultimo aggiornamento il