AIDD: come cambia il modo in cui sviluppiamo il mondo

  • Di
  • 2024-10-01 - 4 minuti
banner

Cos’è cambiato, e cosa cambierà nello sviluppo software grazie all’avvento di sistemi intelligenti come ChatGPT e simili? Esploriamo come cambia il ciclo di vita e di rilascio del software dando qualche previsione sul futuro dello sviluppo.

Cosa vedrai

AIDD: AI-Driven Development

Si può tradurre letteralmente come “sviluppo guidato dall’IA” ed è un nuovo paradigma che ultimamente sta prendendo piede con cui le competenze dei vari sistemi di intelligenza artificiali, in particolare gli LLM, si uniscono allo sviluppo software e alle competenze di chi ci lavora porta benefici nell’ecosistema del software.

So cosa stai pensando… L’IA non ci ruberà il lavoro, né tanto meno andrà a sostituire (non del tutto) lo sviluppo e chi programma.

Piuttosto, questo approccio è un’estensione naturale risultato di anni di metodologie già consolidate e ampiamente diffuse nel mercato da cui si sono estratti alcuni principi fondamentali da sfruttare nell’ambito di questi nuovi agenti “intelligenti”.

Per dirne una, AIDD segue il famoso ciclo “red, green, refactor”, raccontato e definito nel Test-Driven Design (abbreviato in TDD), ma con un focus sulla profonda collaborazione tra chi sviluppa e l’assistente IA.

AIDD: come funziona

Chi segue l’AIDD, chi sviluppa definisce l’obiettivo di alto livello, descrive magari un’API o un metodo da realizzare e riporta il tipo di dato che vuole rappresentare. L’IA genera quindi delle funzioni fittizie, scrive i test e crea l’implementazione concreta.

A questo punto, il demiurgo (o chi sviluppa) esamina i test, li esegue e collabora con l’IA per perfezionare l’implementazione finché i test non vengono superati e rispettano nel concreto tutti i requisiti descritti.

Potrà sembrare un approccio banale, ma il testing, così come l’iterazione, il feedback continuo e la verifica di un occhio esterno fa sì che questo approccio consenta a chi sviluppa di sfruttare l’intelligenza dell’IA pur garantendo che il codice risultante sia manutenibile, scalabile e conforme ai principi dell’ingegneria del software.

Il valore delle competenze umane

Detto ciò, mentre l’IA può generare codice, chi sviluppa svolge ancora un ruolo cruciale per attività come:

  • Comprendere i requisiti (a volte “vaghi)” dei clienti
  • Guidare l’IA attraverso il processo descritto in precedenza
  • Creare e mantenere una suite di test completa
  • Manutenere e modificare quanto costruito utilizzando l’AIDD
  • Garantire che il codice sia allineato alle best practice dell’ingegneria del software

Non c’è da stupirsi quindi che affermazioni che riportano alla scomparsa di chi sviluppa sono da prendere e cestinare… Ci saranno dei cambiamenti, come è nella naturale evoluzione delle cose, e dovremo imparare ad adattarci al cambiamento, e crescere con gli strumenti a disposizione.

Gli 8 step

Se volessimo suddividere in passaggi l’adozione di questo approccio, si potrebbe riassumere in questo modo:

  • Impostare l’obiettivo: definire l’input e l’output della funzione (ragioniamo a micro-attività) a un livello elevato.
  • Formulare il tipo “astratto”, o il modello dei dati: scrivere manualmente il tipo o l’interfaccia per la funzione.
  • Costruire una funzionalità fittizia: chiedere all’IA di creare una funzione fittizia in base al tipo.
  • Scrivere i test: chiedere all’IA di generare test unitari per la funzione.
  • Eseguire i test e aspettarsi un fallimento: non tutto andrà liscio e ci sarà del lavoro da raffinare la funzione fittizia.
  • Creare un’implementazione concreta: istruire l’IA a implementare la funzione.
  • Eseguire i test e aspettarsi il successo: verificare che i test vengano superati con l’implementazione generata dall’IA.
  • Refactoring: rivedere la funzione e ristrutturarla se necessario per allinearla ai principi dell’ingegneria del software.

Non dimentichiamoci anche di un altro aspetto molto interessante: la possibilità di generare della documentazione a partire da quanto prodotto, seguendo l’approccio D(oc)DD.

Cosa cambia rispetto a TDD

Sembrano due modi di lavorare molto simili: tuttavia, ci sono delle differenze sostanziali.

Per cominciare, usando l’approccio AIDD, chi sviluppa lavora a stretto contatto con un assistente “intelligente” per generare codice, scrivere test e perfezionare l’implementazione.

Nel TDD tradizionale, il team di sviluppo (se non la persona che sviluppa) è l’unico responsabile della scrittura sia dei test che del codice di implementazione.

Oltre a questo, in AIDD l’IA genera dei test iniziali in base ai requisiti di alto livello forniti in input e alla definizione di tipo astratto.

In TDD, lo sviluppo avviene manualmente per tutti i test unitari prima di implementare il codice.

L’altro aspetto da evidenziare è dato dalla collaborazione: in AIDD, chi sviluppa e l’IA collaborano per perfezionare l’implementazione, eseguendo test e apportando modifiche fino a quando il codice non è soddisfacente, anche sotto il punto di vista della qualità del codice.

In altri contesti, non sempre è facile stare dietro a tutte le best practices necessarie, oltre al fatto che è possibile (e importante) sfruttare questi strumenti per approfondire aspetti dello sviluppo che non conosciamo e quindi approfondire anche pattern che altrimenti non avremmo mai utilizzato.

Se ti interessa l’argomento, dovresti leggere anche questo episodio della newsletter di Raffaele Colace dal titolo “Guidare o essere guidati dall’AI?”.

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di UseCaseConf

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

#TheRedComics

Edizione di Agosto

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di agosto di Sophie Aiello

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!