modulo 03 / lezione 22

Dal problema al prompt

Anti-pattern: prompt vaghi, ambigui, contraddittori, sovraccarichi

Riconoscere le forme di cattiva richiesta che generano codice fragile o risposte apparentemente brillanti ma inutili.

75 min Vibe Coding

Anti-pattern: prompt vaghi, ambigui, contraddittori, sovraccarichi

I prompt cattivi hanno forma riconoscibile. Quattro famiglie principali — vaghi, ambigui, contraddittori, sovraccarichi — generano la maggior parte degli output deludenti. Imparare a riconoscerli prima di inviare riduce le iterazioni inutili e ti permette di intervenire alla radice.

Perché questa lezione conta

I prompt sembrano ovvi quando li scrivi (“io so cosa intendo”). Sono ambigui per il modello, che non legge la tua mente. Riconoscere l’anti-pattern è metà del lavoro: se sai che la tua richiesta è vaga, sai cosa raffinare. Se non lo sai, la rilanci tre volte sempre vaga e ti chiedi perché.

Obiettivo operativo

Alla fine devi saper:

  1. nominare i quattro anti-pattern e gli indizi linguistici di ognuno;
  2. trasformare un prompt cattivo in uno verificabile;
  3. usare una checklist anti-anti-pattern prima di inviare richieste importanti.

Nucleo della lezione

1. Prompt vaghi

Anti-pattern: chiedere qualità non misurabili.

Indizi linguistici: “bello”, “professionale”, “moderno”, “intuitivo”, “semplice”, “pulito”, “efficiente”, “user-friendly”.

Esempio: “fammi una landing page bella e moderna”.

Problema: bello/moderno secondo chi? Risultato: il modello sceglie un default popolare al momento del training (probabilmente glassmorphism, gradient sottili, tipografia variable), che potrebbe essere già fuori moda o incoerente con il tuo brand.

Fix: sostituisci aggettivi con riferimenti concreti.

  • “bello” → “stile coerente con [link a sito di riferimento] o con questi criteri: [tipografia/colori/spaziatura]”;
  • “moderno” → “design system [shadcn / Tailwind / brand guideline] del 2026”;
  • “semplice” → “max 5 elementi visibili nella prima viewport, niente animazioni decorative”;
  • “intuitivo” → “azione principale visibile entro 3 secondi, disponibile da tastiera, etichetta esplicita”.

2. Prompt ambigui

Anti-pattern: il prompt ammette più letture senza criterio per scegliere.

Indizi: pronomi senza antecedente chiaro (“aggiungilo qui”, “fai come l’altro”), riferimenti circolari (“come abbiamo detto”), termini polisemici non definiti (“dashboard”, “componente”, “modulo” hanno significati diversi in stack diversi).

Esempio: “aggiungi al modulo la nuova funzione di export, come l’altra”.

Problema: quale modulo? quale “altra”? export di cosa, in che formato, dove?

Fix: esplicita riferimenti, definisci termini.

  • “modulo” → percorso file specifico;
  • “come l’altro” → riferimento esplicito (vedi src/lib/csv-export.ts:42);
  • “export” → formato (CSV, JSON, PDF), perimetro dati (quali campi), ricezione (download diretto, email, link condiviso).

3. Prompt contraddittori

Anti-pattern: vincoli incompatibili o priorità non ordinate.

Esempio: “fammi un’app gratis, scalabile a milioni di utenti, sicurissima, costruita in un weekend”.

Problema: i quattro vincoli rigidi non coesistono. Il modello sceglierà quale violare, in base ai pattern del training.

Fix: ordina priorità, segna negoziabili, identifica conflitti.

  • esplicita ordine: “priorità: sicurezza > tempo > costo > scalabilità”;
  • segna trade-off accettati: “scalabilità OK fino a 10K utenti, poi rivediamo”;
  • elimina o ammorbidisci vincoli incompatibili: “gratis” → ”≤ €20/mese accettabile”.

4. Prompt sovraccarichi

Anti-pattern: troppe richieste in un solo prompt.

Indizi: lista lunga di feature, “e anche”, “già che ci sei”, “inoltre”, “intanto fammi anche”.

Esempio: “Fammi la landing page con form contatto, animazioni, autenticazione, dashboard utente, dark mode, blog, supporto multilingua”.

Problema: il modello fa qualcosa per ognuna, niente bene. Output gigante, illeggibile, irrecuperabile.

Fix:

  • una richiesta per prompt;
  • decomponi (vedi lezione 20);
  • se la lista è davvero un progetto, scrivi specifica + roadmap, non un megaprompt.

Procedura pratica

Checklist pre-invio (1 minuto):

  1. Scan vaghezza: cerco aggettivi non misurabili. Sostituisco con criteri concreti.
  2. Scan ambiguità: ogni “quello/questa/come prima” ha riferimento esplicito? Tutti i termini tecnici sono univoci nel mio stack?
  3. Scan contraddizioni: i vincoli rigidi sono compatibili? Conflitti risolti o segnati come trade-off?
  4. Scan sovraccarico: c’è più di una richiesta? Se sì, decomponi.
  5. Solo se i 4 passano: invia.

Tempo: 1 minuto. Risparmio: tempo di iterazioni inutili.

Laboratorio guidato

Cinque prompt cattivi, riscrivili in versione verificabile.

Originale 1: “fammi un sito personale moderno e veloce”.

Riscritto 1: “fammi un sito personale (Astro + Tailwind, una pagina). Sezioni: hero con foto + bio 80 parole, lista 5 progetti con titolo+1 riga+link GitHub, link contatti. Vincoli: TTI < 1.5s su 3G simulato, accessibilità WCAG AA, contrasto ≥ 4.5:1, niente JS oltre quanto strettamente necessario. Mobile-first. Stile: tipografia serif elegante, spazio bianco generoso, no gradient, no animazioni decorative.”

Originale 2: “implementa l’autenticazione, e già che ci sei aggiungi anche il profilo utente con upload foto”.

Riscritto 2: due prompt separati. Prompt 1: solo magic-link login. Prompt 2 (dopo aver chiuso 1): pagina profilo con upload foto.

Originale 3: “fai una dashboard professionale”.

Riscritto 3: “dashboard per [persona], visualizza [3 KPI specifici] aggiornati [ogni X], visualizzazione: [card per KPI con valore corrente + delta vs settimana precedente + grafico ultimi 7 giorni]. Stack: […]. Stile: shadcn/ui default, mobile responsive da 360px.”

Continua con altre due. Confronta lunghezza e specificità: i riscritti sono 3-5x più lunghi e 10x più utili.

Output atteso

Una pagina-guida personale “anti-pattern e antidoti” con:

  • esempio prompt cattivo per ogni anti-pattern;
  • versione corretta accanto;
  • elenco parole-segnale che ti fermano automaticamente.

Stampala/salvala vicino alla tastiera.

Studio passo passo

Studia questa lezione in tre passaggi, senza correre subito al prompt o al codice.

  1. Prima lettura: chiarisci l’obiettivo: riconoscere le forme di cattiva richiesta che generano codice fragile o risposte apparentemente brillanti ma inutili. Se non riesci a riscriverlo in una frase tua, rileggi il nucleo della lezione.
  2. Seconda lettura: trasforma i contenuti in domande operative:
  • Prompt vaghi: chiedono qualità non misurabili come bello, professionale, semplice, moderno.
  • Prompt contraddittori: vincoli incompatibili, priorità non ordinate, richieste multiple con obiettivi diversi.
  • Prompt sovraccarichi: troppi file, troppe feature, troppi stili, nessuna definizione di successo.
  1. Applicazione: svolgi il laboratorio: analizzare prompt problematici e riscriverli in versioni verificabili e ridotte. L’output da ottenere è: una guida rapida agli anti-pattern da consultare prima di inviare richieste importanti.

Prima di passare alla lezione successiva, controlla di avere un artefatto concreto: una tabella, un prompt, una checklist, un mini report, un diff commentato o una decisione scritta. Nel vibe coding la comprensione resta astratta finché non produce una traccia verificabile.

Checklist di verifica

  • riconosco i quattro anti-pattern;
  • ho riscritto almeno 3 prompt cattivi recenti in versioni verificabili;
  • prima di inviare prompt importanti, faccio scan in 1 minuto;
  • non chiedo mai più di una cosa per prompt nei task seri.

Errori comuni

“Il modello capisce, è intelligente”. Capisce molto, indovina spesso, ma indovina al posto tuo. Indovinare = decisioni che non hai preso.

Aggettivi multipli al posto di criteri. “Bello, moderno, accessibile, performante, semplice, scalabile” = sei aggettivi, zero criteri. Scegli criteri concreti.

“Già che ci sei” infinito. Ogni “già che” è un nuovo task. Tienilo separato.

Vincoli rigidi infiniti. Tutti vincoli rigidi = nessuno effettivo. Massimo 3-4 rigidi, il resto negoziabile o trade-off accettati.

Pensare che il prompt cattivo sia colpa del modello. Quasi sempre è il prompt. Modelli moderni eseguono bene istruzioni precise.

Prompt di lavoro

Aiutami a fare scan anti-pattern su questo prompt:

[incolla prompt]

Per ognuno dei 4 anti-pattern dimmi:
1. Vaghezza: ci sono aggettivi non misurabili? Lista occorrenze + suggerimento di criterio concreto.
2. Ambiguità: ci sono pronomi/riferimenti vaghi o termini polisemici? Lista + chiarimento richiesto.
3. Contraddizioni: vincoli incompatibili? Quali, e suggerisci come ordinarli o risolvere conflitto.
4. Sovraccarico: più di una richiesta? Se sì, suggerisci come decomporre.

Concludi con il prompt riscritto, applicando le correzioni. Non eseguire il task, lavora solo sulla forma del prompt.

Esercizio finale

Apri la cronologia chat dell’ultima settimana. Conta quanti dei tuoi prompt avevano almeno uno dei quattro anti-pattern. Probabilmente sopra il 50%. Per i 3 prompt più importanti (quelli su task ad alto valore), riscrivili applicando il fix. Confronta gli output: quasi sempre il prompt riscritto produce in 1 round ciò che l’originale aveva richiesto 3-4 iterazioni. Il valore della lezione è esattamente quello.