La programmazione ai giorni dell'IA: come cambiano le competenze richieste?

Uno studente della mia classe mi ha chiesto: “Prof, perché imparare a programmare se ChatGPT lo fa per me?”

Domanda legittima. Risposta complessa. Amo questa domanda perché costringe a ripensare cosa significhi insegnare programmazione oggi.

La paura sbagliata

La paura più comune:

ChatGPT genera codice
  └─ Programmatori non servono più
     └─ Perché imparare?

Sbagliato. Esattamente come:

Google sa tutto
  ❌ Perché imparare storia?
  
Calcolatori fanno conti perfetti
  ❌ Perché imparare matematica?
  
Auto a guida autonoma
  ❌ Perché imparare a guidare?

L’IA non vi rende inutili. Vi rende più utili se sapete usarla bene.

Quello che NON cambia

1. PENSIERO LOGICO
   ChatGPT non ha senso logico naturale
   Sbaglia se il problema è malformulato
   TU devi dire COSA fare (problema ben definito)

2. DEBUG
   ChatGPT genera 70% codice giusto
   Il rimanente 30% va fixato
   Senza sapere programmazione = bloccato

3. ARCHITETTURA
   AI può generare funzioni
   Solo TU decidi come assemblarle
   Monolite vs. Microservizi? Dipende dalle esigenze

4. ETICA e RESPONSABILITÀ
   ChatGPT copia da training data
   Tu sei responsabile legalmente del codice usato
   Devi capire cosa fa per certificarlo

Quello che CAMBIA

PRIMA (2015):
Programmatore = Sa scrivere sintassi + logica + debugging
Tempo 50% su "come scrivere", 50% su "cosa scrivere"

OGGI (2025):
Programmatore = Sa definire problemi + usare AI + validare risultati
Tempo 10% su "come scrivere", 90% su "cosa scrivere"

RISULTATO: Programmatori più veloci, ma devono sapere di più

Come imparare a programmare in era di IA

✅ Approccio nuovo

1. Impara il problema, non la sintassi

SBAGLIATO:
"Come si scrive un ciclo for in Python?"
→ ChatGPT: 5 secondi

GIUSTO:
"Devo verificare se un numero è primo. Come la pensi?"
→ Dialogo: Qual è l'algoritmo? Quando fermarsi? Edge cases?
→ ChatGPT aiuta a tradurre in codice

2. Usa AI come sparring partner

# Tu scrivi la logica
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

# Chiedi a ChatGPT di migliorare
# "Può questa funzione gestire numeri negativi?"
# "Come potremmo farla più veloce per numeri grandi?"

3. Debug attivamente

Output atteso: [2, 3, 5, 7]
Output ChatGPT: [2, 3, 5, 7, 9] ← SBAGLIATO
Errore: 9 non è primo

Azioni:
├─ Capisco perché sbaglia (condizione sul loop)
├─ Correggo manualmente o riformullo a ChatGPT
└─ Imparo dal perché è stato sbagliato

Esempio: Ordinamento di una lista

Modo tradizionale

1. Impara QuickSort
2. Scrivilo in Python
3. Debugga 2 ore
4. Capisci finalmente

Modo con IA (2025)

1. "ChatGPT, ordina una lista"
   → ChatGPT: built-in function sorted()
2. "Perché sorted() è meglio che QuickSort manuale?"
   → ChatGPT: Explain time complexity
3. "Dimmi quando QuickSort è più veloce"
   → Capisco il tradeoff
4. "Implementa QuickSort per imparare"
   → Capisco il meccanismo

Risultato: Imparare più veloce, capisco i concetti, non wasto tempo su boilerplate.

Le competenze che l’IA NON può fare (ancora)

✓ Scrivere codice da specifica chiara
✗ Definire la specifica giusta
  → Solo TU capisci il problema del cliente

✓ Trovare bug ovvio
✗ Testare sistemi complessi
  → Serve creatività umana per test cases diabolici

✓ Tradurre logica in Python
✗ Scegliere l'architettura
  → Quali database? Monolite o microservizi? Cache o non cache?

✓ Generare documentazione
✗ Capire cosa è importante
  → Servono decisioni umane su priorità

Consiglio ai ragazzi

❌ Non evitare programmazione perché "c'è l'IA"
   Sarebbe come in 1995 dire "non imparo HTML perché uso Dreamweaver"
   Sarebbe come 1970 dire "non imparo a usare i computer perché sono lenti"

✅ IMPARA i FONDAMENTI
   ├─ Pensiero logico
   ├─ Strutture dati (array, oggetti, liste)
   ├─ Algoritmi (sorting, searching, ricorsione)
   └─ Problem-solving

✅ USA AI come TOOL
   ├─ ChatGPT per scaffolding veloce
   ├─ Copilot per suggerimenti
   └─ Ma capisci cosa fa

✅ SPECIALIZZATI in QUALCOSA
   ├─ Non "programmazione generica"
   ├─ Ma "backend per e-commerce", "ML per immagini", "giochi"
   └─ Qui l'AI è un assistente, non concorrenza

Il parallelo con la matematica

Nel 1970, arrivò la calcolatrice. I professori dicevano:

"Perché imparare moltiplicazioni se la calcolatrice le fa?"

Risposta: Perché il problema non è “calcola 47 * 23”. È “come si risolve questa equazione?” o “questo risultato ha senso?”

Allo stesso modo oggi:

"Perché imparare Python se ChatGPT lo genera?"

Risposta: Perché il problema non è “scrivi un loop”. È “come risolvo questo problema?” e “questo codice è corretto?”

La programmazione in era IA non è “scrivere codice”, è “pensare in modo computazionale usando strumenti moderni”.