AI e Low Code: possono lavorare in armonia per democratizzare lo sviluppo no-code per gli sviluppatori?
Per capire come l'intelligenza artificiale e il low code possano democratizzare il coding, ho parlato con Prasanth Reddy, Senior Director of Product Management di WaveMaker, una piattaforma Java low-code leader che aiuta i professionisti a costruire rapidamente prodotti e applicazioni software moderni, scalabili e sicuri.
Gary Drenik: Quali sono le carenze del codice generato dall'IA rispetto a quello creato con piattaforme no-code?
Prasanth Reddy: Le piattaforme Low Code e l'IA hanno approcci diversi alla generazione del codice. Gli strumenti Low Code sono già stati esaminati dagli architetti aziendali per essere adottati all'interno delle loro aziende e molte applicazioni create da strumenti Low Code sono già state distribuite per l'utilizzo da parte dei clienti finali.
Al momento, l'incoerenza delle risposte ha afflitto ChatGPT. È stato utilizzato il paradigma del copilota, in cui uno sviluppatore chiede a un copilota di generare codice a livello di funzione. Dopo la creazione della V1, enormi quantità di cicli di sviluppo vengono impiegate per mantenere e aggiornare lo stack tecnologico delle soluzioni.
Questo è il problema che Low Code è in grado di risolvere meglio. Gli strumenti a basso codice supportano lo sviluppo iterativo e forniscono strumenti per il debug e il miglioramento del codice, mentre il codice generato dall'intelligenza artificiale non può essere rilasciato senza che lo sviluppatore lo comprenda e se ne appropri per la manutenzione.
Drenik: Quali sono le misure che gli sviluppatori possono adottare, oltre a lavorare con l'IA, per aiutare a scalare i loro sforzi di codifica in modo efficace e accurato?
Reddy: Nella programmazione, la produttività aumenta notevolmente quando i team sono in grado di riutilizzare le astrazioni a livello di componenti e moduli. Quando il codice viene riutilizzato, il tempo di ciclo necessario per implementare una soluzione personalizzata si riduce. È così che i team di sviluppatori lavorano in modo iterativo per costruire soluzioni che si adattino al meglio alle esigenze del mercato. Questo processo di elaborazione, consegna, osservazione dell'utilizzo e pianificazione dei miglioramenti è ancora un modo molto efficace per costruire soluzioni software. L'indagine di GitHub sugli sviluppatori rivela che la collaborazione interna e la raccolta dei feedback dei clienti sono i settori in cui si spende la maggior parte del tempo nello sviluppo del software. Per questo motivo, l'adozione di metodologie agili, la riduzione del tempo di ciclo necessario per portare le modifiche in produzione e un ciclo di feedback ben consolidato sono la strada per scalare gli sforzi degli sviluppatori.
Drenik: L'analisi mostra che, se sollecitate, il 52% delle risposte di ChatGPT alle domande di programmazione sono errate e il 77% sono prolisse. Come possono gli sviluppatori lavorare a fianco dell'intelligenza artificiale sapendo di essere gli unici a poter individuare e correggere questi errori?
Reddy: Lavorare a fianco dell'IA può talvolta essere un'esperienza impegnativa, soprattutto per quanto riguarda l'accuratezza e la verbosità delle risposte. È importante riconoscere che attualmente ci troviamo in un'era di IA generativa che è ancora nelle fasi iniziali, ma che sta migliorando a un ritmo più veloce di qualsiasi altra tecnologia del passato. Non è necessario che tutte le applicazioni di IA generativa imitino l'interazione basata sulla chat, né che utilizzino esclusivamente ChatGPT.
Tuttavia, l'adozione della ChatGPT ha generato l'aspettativa di integrare l'intelligenza in molte interazioni con i clienti. Per integrare l'IA nelle soluzioni, gli sviluppatori devono investire tempo nella comprensione dei progressi tecnologici sottostanti che sono alla base dell'IA generativa. I nuovi casi d'uso che non sono ancora stati risolti in modo soddisfacente possono diventare la prossima grande opportunità di mercato.
Drenik: Mentre gli sviluppatori e gli utenti aziendali si cimentano con il codice generato dall'IA, che uso fanno degli strumenti Low Code, il mezzo originale per rendere la codifica più veloce per gli sviluppatori e accessibile ai non sviluppatori?
Reddy: Il codice generato dall'intelligenza artificiale non sta ancora cambiando il livello di astrazione in cui operano gli sviluppatori. In questo modo, i guadagni di produttività ottenuti sono localizzati ai team di sviluppatori, senza affrontare il divario di competenze e il tempo speso nella collaborazione tra progettazione, implementazione e analisi della qualità del prodotto.
Tuttavia, è possibile ottenere guadagni di produttività molto più elevati elevando i livelli di astrazione e risolvendo il problema della collaborazione. È qui che il paradigma Low Code supera la semplice generazione di codice dal testo. Gli strumenti Low Code stanno affrontando sia le carenze di efficienza che quelle di competenze. Gli strumenti Low Code che utilizzano anche l'intelligenza artificiale aumentano ulteriormente la produttività dei team e non solo dei singoli sviluppatori.
Drenik: La progettazione no-code sarà mai sostituita completamente dall'IA? Perché o perché no?
Reddy: Come per altri strumenti e processi, possiamo aspettarci che le piattaforme di no-code siano infuse di IA e diventino più potenti di quanto non siano oggi. Se Low Code è stato un acceleratore per lo sviluppo del software, l'IA è un acceleratore per le piattaforme no-code. Anche se probabilmente a un certo punto ci saranno classi di applicazioni che potranno essere create interamente dall'IA senza alcun intervento umano o piattaforme low-code, questo non significa che tutto lo sviluppo software futuro (e gli sviluppatori) perderanno la necessità di piattaforme di sviluppo no-code. Anzi, potrebbe esserci una nuova classe di piattaforme low-code infuse di IA che diventeranno il metodo dominante per progettare, costruire, eseguire il debug e mantenere applicazioni sofisticate, personalizzate e ad alto rischio.
Drenik: Perché l'IA non sostituirà le piattaforme no-code?
Reddy: Anche dopo essere stati addestrati su tutto il codice disponibile su GitHub e aver esaminato tutte le risposte su StackOverflow, l'attuale capacità di codifica dell'IA è al massimo un copilota. Tutte le interazioni per scrivere codice dal solo prompt di testo risultano frustranti. Lo stato attuale delle capacità di codifica dell'intelligenza artificiale non è così buono come si vuol far credere. Ci aspettiamo che la situazione migliori rapidamente.
Gran parte del tempo di un programmatore è dedicato anche alla correzione di bug e alla modifica della struttura del codice in modo che sia più facile da mantenere. Questo processo di correzione di un bug o di rifattorizzazione del codice non viene registrato da nessuna parte per l'addestramento dell'IA. Le versioni iniziali del codice generato dall'IA sono di solito riscritte o interamente modificate per facilitarne la manutenzione.
La generazione di codice nelle piattaforme di sviluppo no-code si basa su un modello dichiarativo visivo e avviene organicamente ogni volta che uno sviluppatore inizia a costruire un'applicazione. Nel caso della generazione di codice basata sull'intelligenza artificiale, c'è la questione legale e di conformità di non conoscere la fonte da cui proviene il codice generato.
L'intelligenza artificiale potrebbe iniziare a generare applicazioni con un'interfaccia utente "cookie cutter" in cima a qualsiasi API e definizione di flusso di lavoro. La qualità del codice generato potrebbe non avere alcuna importanza, purché l'interfaccia utente svolga il suo compito. Tuttavia, poiché il mondo si muove sempre più nella direzione di piattaforme software che offrono personalizzabilità, estensibilità e manutenibilità a basso TCO, il processo di sviluppo è iterativo: si costruisce rapidamente, si raccoglie il feedback e si migliora in seguito. È impossibile che la mente di uno sviluppatore abbia un dettaglio cristallino di ciò che deve essere costruito esattamente, prima di un tale processo iterativo. Gli strumenti Low Code si adattano meglio a questi processi di sviluppo iterativo. Consentono a team diversi e interfunzionali di collaborare e iterare rapidamente, mentre l'intelligenza artificiale può essere utilizzata all'interno di ogni iterazione per produrre frammenti di codice da perfezionare, testare e integrare ulteriormente.
Infine, nell'evoluzione del moderno sviluppo del software, assistiamo a una crescente fusione a monte tra progettisti e codificatori. Finora, gran parte dell'attrito, del tempo e dello sforzo tra questi due gruppi (e mondi) consiste, ad esempio, nel tradurre una visione del prodotto specificata in un testo o in un disegno Figma in codice frontend e backend reale e funzionante. Questo processo richiede spesso uno sviluppo iterativo e la collaborazione tra due tipi di persone molto diverse. Le competenze necessarie per ideare e progettare sono diverse da quelle necessarie per scrivere codice. Le piattaforme low-code che si integrano a monte con i più diffusi strumenti e framework di progettazione offrono ai team di sviluppo e di progettazione la possibilità di lavorare a più stretto contatto e, ad esempio, di interpretare e renderizzare l'interfaccia utente (e il codice) completamente funzionale a partire da un progetto.
Sebbene tali piattaforme no-code si affidino all'intelligenza artificiale per generare una V1 dell'interfaccia utente o addirittura per generare nuovi widget dell'interfaccia utente non disponibili al momento nelle loro librerie out-of-the-box, il processo intrinseco di iterazione tra sviluppo e progettazione richiederà in futuro l'importanza di una piattaforma di sviluppo standard e robusta, ben integrata con le pratiche SDLC e la collaborazione integrata.
Drenik: Grazie per il tuo tempo, Prasanth, e per le tue intuizioni su come gli sviluppatori professionisti e gli analisti aziendali possono sfruttare sia l'AI che il Low Code per scalare la codifica, aumentare l'innovazione e migliorare l'efficienza. Sarà sicuramente interessante vedere dove andrà a finire la codifica.