L’IA può aiutarti a programmare?

AI

L’intelligenza artificiale non è solo una parola d’ordine, ma una tecnologia trasformativa che sta ridisegnando la nostra realtà. Dal lavoro alle interazioni sociali, l’IA sta lasciando il segno.

In questo post ci concentriamo sull’impatto che l’IA sta avendo e continuerà ad avere sul settore dello sviluppo software. Cercheremo di rispondere ad una domanda cruciale: l’IA sostituirà completamente il ruolo dei programmatori?

Lo stato dell’arte

Ad oggi, le IA svolgono già un’ampia gamma di compiti: dalla scrittura di codice alla ricerca di documentazione tecnica, dalla rivelazione di vulnerabilità all’automazione di attività a partire da un semplice prompt.

Ne citeremo alcuni, per farvi capire meglio la portata di questi strumenti. 

Con GitHub Copilot è possibile velocizzare i compiti più semplici e ripetitivi o la fase di ricerca nella documentazione tecnica con risultati che parlano da soli: tempo di scrittura del codice dimezzato, capacità di eseguire il 35% dei compiti in autonomia e un indice di soddisfazione complessivo di circa il 70%.

Si tratta di uno strumento che – per ora – si integra con l’attività umana e non mira a sostituirla, ma le prossime evoluzioni potrebbero andare in altre direzioni.

Zapier, un task manager che permette di automatizzare attività più o meno complesse a partire da un semplice prompt, introduce un tema fondamentale: l’utilizzo dell’IA per automatizzare servizi web già esistenti tramite API, potrebbe permettere anche ai neofiti del codice di snellire, modificare e personalizzare le Applicazioni esistenti.

Infine, vorremmo citare un ultimo strumento che oggi sta conoscendo un’ampia adozione: Snyk di Deepcode, un’intelligenza artificiale in grado di analizzare un codice esistente e rilevare la presenza di eventuali vulnerabilità, prevenendo così attacchi informatici o malfunzionamenti.

Rischi e Opportunità

Tuttavia, il clamore suscitato dagli strumenti di IA e da OpenAI in particolare sembra essere esagerato.

Sono sicuramente strumenti utili in fase di progettazione sia in termini di organizzazione di un progetto che di strutturazione del codice, ma l’implementazione degli artefatti è qualcosa che va perfezionato e necessita di una revisione anche meticolosa e costante.

Le maggiori difficoltà si incontrano nel dare il giusto input agli strumenti: un requisito troppo limitato o troppo ampio, senza contestualizzare il problema, porta alla generazione di codice difficilmente riutilizzabile. 

Pensando alle applicazioni dell’IA in ambito aziendale, appaiono evidenti alcuni dei principali vantaggi e rischi associati all’uso massiccio di tali strumenti nel settore della programmazione, così come emergono in qualsiasi altro ambito.

Una figura junior – da intendersi come quella con esperienza lavorativa limitata nel tempo – se non opportunamente indirizzata da un collega con maggiore anzianità, può incorrere in diversi rischi utilizzando l’IA per la generazione di codice.

Accontentarsi della prima soluzione elaborata dallo strumento può portare a risultati scadenti o a sistemi non funzionanti: questo causa la perdita di fiducia nello strumento stesso, portando a un circolo vizioso di copia/incolla da altri siti come Stackoverflow.

Nel caso in cui lo sviluppatore non abbia le competenze sufficienti per comprendere la qualità della soluzione offerta, corretta o meno, gli viene in qualche modo negata la possibilità di imparare e crescere professionalmente.

Questi e altri tipi di problemi sono evitabili con il supporto di un team di lavoro che, per forza di cose, non può essere composto solo da figure junior, e con lo sviluppo di soft skills come la capacità di lavorare in gruppo e la formazione continua.

Uno sviluppatore con un’anzianità medio/alta, invece, può sfruttare gli strumenti in diversi contesti e per diversi compiti. Ad esempio, può beneficiare degli strumenti di intelligenza artificiale per richiedere documentazione, risolvere problemi comuni a tutti i progetti (ad esempio, ORM, gestione delle date), eseguire revisioni del codice con produzione automatica di codice, creare uno scenario di test e verificare che un blocco di codice soddisfi tutti i requisiti di una determinata storia.

Tutto questo, ovviamente, è possibile partendo da un prompt adeguato e prevedendo una revisione e una serie di miglioramenti incrementali.

È infatti fondamentale verificare sempre la qualità della soluzione prodotta in termini di convenzioni, non obsolescenza e versatilità del codice.

ConclusionI

L’importanza di un team ben costruito, di solide competenze di base, di una metodologia di lavoro agile basata sulla trasparenza e sulla collaborazione, di revisioni del codice costanti e aperte sono ancora necessarie per il successo di qualsiasi progetto.

Quindi, sebbene l’uso di strumenti di intelligenza artificiale possa portare benefici significativi, è importante considerarli come strumenti di supporto e non come sostituti delle competenze umane e delle conoscenze tecniche. 

È essenziale valutare criticamente i risultati ottenuti, applicare buone pratiche di sviluppo e sottoporre il codice generato alla revisione umana per garantirne la correttezza e la qualità.

Sebbene alcuni temono che nei prossimi anni l’IA possa sostituire completamente gli sviluppatori, siamo invece certi che il ruolo della figura umana rimarrà necessario. Le nuove sfide che emergeranno, soprattutto in termini etici e normativi, comporteranno la necessità di nuove aree di competenza per gli esseri umani.

In conclusione, l’IA è uno strumento potente e la responsabilità è quella di garantire un utilizzo etico e responsabile.


Author: Luigi Cerrato, Software Engineer @ Bitrock

Vuoi saperne di più sui nostri servizi? Compila il modulo e fissa un incontro con il nostro team!

Skip to content