Il Machine Learning può migliorare la DevX? Considerazioni di un CTO

8 minutes Leggi
27 Aprile 2023

Con le esigenze dei clienti in rapida evoluzione, le organizzazioni sono alla costante ricerca di idee innovative per mantenere un vantaggio competitivo, guidare la crescita e aumentare la fidelizzazione dei clienti. Il Machine Learning (ML) si sta imponendo come una strategia vincente, in quanto offre un modo per creare roadmap di prodotto efficaci e ottenere preziose informazioni sul comportamento e sulle preferenze dei clienti.

Durante il ciclo di vita dello sviluppo del software, gli sviluppatori si affidano a strumenti come editor di codice, software di gestione dei progetti, linguaggi di programmazione, pipeline di distribuzione, controllo delle versioni, ecc. Infatti, ci sono sempre dibattiti tra gli sviluppatori su quale sia l’editor migliore, quali strumenti possano aumentare la loro produttività e quali framework utilizzare.

Al di là dei singoli sostenitori dei loro strumenti preferiti, le aziende hanno adottato le pratiche DevOps e la metodologia Agile per migliorare l’esperienza degli sviluppatori durante la creazione e la manutenzione del software. Sebbene questi metodi abbiano portato progressi significativi e migliorato l’esperienza, hanno iniziato a presentare alcuni limiti.

In questo articolo esploreremo che cos’è il ML, discuteremo di come può migliorare la Developer Experience (DevX) seguendo le considerazioni di un CTO, Giulio Roggero.

 

Che cos’è la Developer Experience

Prima di approfondire cos’è il ML e come può migliorare la DevX, parliamo di cosa significa esattamente Developer Experience. La Developer Experience è l’esperienza complessiva di sviluppo di un prodotto. I Developers vengono considerati come utenti finali del software che loro stessi stanno creando.

 

Che cos’è il Machine Learning

Il Machine Learning è una tecnica che utilizza modelli matematici di dati per aiutare i computer ad apprendere senza istruzioni dirette. Utilizza dati e algoritmi per emulare l’apprendimento umano e migliorare gradualmente la precisione. I sistemi o le applicazioni che utilizzano il ML sono classificati come computer intelligenti, in quanto pensano come gli esseri umani ed eseguono compiti autonomamente.

 

Come il Machine Learning può migliorare la Developer Experience

Negli ultimi anni, il ML ha rivoluzionato il modo in cui vengono costruiti i prodotti. Ha dato alle aziende di diversi settori idee innovative per sbloccare nuove possibilità e soddisfare le esigenze dei clienti. ChatGPT, GitHub Copilot e DALL.E, solo per citarne alcuni, hanno reso il ML accessibile alle aziende e ai privati che desiderano integrare l’intelligenza nelle applicazioni e migliorare l’esperienza complessiva.

Vediamo alcuni casi d’uso e come migliorano l’esperienza degli sviluppatori.

 

Controllo della qualità

Prendiamo il caso del pair programming, una tecnica di sviluppo agile del software che prevede che due sviluppatori lavorino insieme per raggiungere simultaneamente un obiettivo comune. Questo approccio prevede che un programmatore scriva il codice mentre l’altro lo rivede e fornisce indicazioni. Ha migliorato il ciclo di vita dello sviluppo del software (SDLC) offrendo i seguenti vantaggi:

  • Meno bug ed errori durante lo sviluppo;
  • Miglioramento del lavoro di squadra;
  • Formazione più rapida;
  • Migliore condivisione delle conoscenze.

Nonostante sia una soluzione collaudata nell’SDLC, il pair programming presenta anche degli svantaggi, in quanto richiede un elevato numero di risorse, è difficile da programmare e a volte può generare frizioni.

Di recente gli sviluppatori sono più attrezzati e possono effettuare il pair programming con strumenti che sfruttano il Machine Learning come ChatGPT, GitHub Copilot, CaptainStack, Tabnine, ecc. A differenza degli esseri umani, questi strumenti sono relativamente facili da integrare, richiedono risorse minime e aumentano la produttività.

Prima ancora di ChatGPT, era stato presentato Github Copilot, un altro strumento basato sull’intelligenza artificiale per assistere gli sviluppatori nella programmazione. Entrambe le applicazioni possono essere di grande aiuto nella scrittura di semplici snippet di codice per accelerare il completamento delle attività. Un approccio popolare per garantire che gli errori nel codice siano evitati è quello di utilizzare una tecnica chiamata programmazione a coppie, in cui uno sviluppatore scrive il codice e un altro gli si affianca e lo aiuta a scrivere il codice secondo la visione strategica, scambiandosi i ruoli ogni 30′. Queste nuove applicazioni consentono di associare a questo binomio un’intelligenza artificiale anziché un essere umano.

Giulio Roggero, CTO & Co‑founder di Mia‑Platform

 

Miglioramento del flusso di lavoro

Nel moderno SLDC, i ruoli degli sviluppatori sono in continua evoluzione: non devono solo scrivere codice, ma anche gestire le modifiche al codice, testare i casi d’uso, eseguire il debug, creare flussi di lavoro e rivedere le pull request. Queste responsabilità aggiuntive spesso spostano l’attenzione degli sviluppatori dal loro incarico principale e il carico di lavoro che ne deriva li appesantisce.

Realizzare un buon codice sorgente significa realizzare applicazioni testabili. Se si riesce a dare espressività ai test, si possono dichiarare le proprie intenzioni nel codice, ovvero il problema di business che si vuole risolvere. Questo aiuta anche il debugging, perché ChatGPT ha un contesto più ampio quando si pone una domanda sulla risoluzione dei problemi, fornendo approfondimenti e consigli sul motivo del problema. In questo modo, è possibile accelerare i tempi di risoluzione dei bug.

Giulio Roggero, CTO & Co‑founder di Mia‑Platform

 

Miglioramento del processo di sviluppo del software

Le aziende spesso costruiscono applicazioni completamente nuove o integrano funzionalità in applicazioni esistenti. Il processo di sviluppo richiede un approccio tradizionale fatto di stime, decisioni strategiche, prototipazione rapida e revisione del codice. Questi compiti possono essere ripetitivi e richiedono un notevole impegno da parte degli sviluppatori incaricati di realizzarli.

Il ML può aiutare il team di sviluppo a stabilire le priorità delle funzionalità da costruire, a fornire stime precise, a ridurre i tempi di prototipazione dei prodotti, a rivedere automaticamente il codice e a ottimizzare le prestazioni.

 

Svantaggi nell’implementazione del Machine Learning

Come ogni altra cosa, il ML è imperfetto. Ha alcune limitazioni serie che le aziende e gli individui che lo usano o intendono usarlo devono considerare.

 

Etica e acquisizione dei dati

Il concetto di ML è radicato nell’identificazione di dati utili. I risultati non saranno corretti se non vengono forniti dati attendibili. Le organizzazioni, dalle piccole imprese alle grandi aziende, hanno bisogno di proteggere i dati associati alle loro innovazioni. Poiché il ML dipende fortemente da dati personalizzati, la costruzione di soluzioni per affrontare la DevX per tali aziende o individui può essere difficile.

Accessibilità

Secondo una recente indagine di Accenture, il ML e le tecnologie correlate non sono ancora utilizzate al massimo delle loro potenzialità. L’integrazione e la compatibilità sono ancora ostacoli importanti, poiché le tecnologie, i linguaggi di programmazione, le risorse umane e i framework di alcune aziende sono limitati.

ChatGPT non rende necessariamente lo sviluppo del software più accessibile alle persone che non sono già formate. È comunque necessario comprendere il codice che ChatGPT sta scrivendo per voi; in caso contrario, potreste creare un grosso debito tecnologico quando il codice errato dovrà essere rifattorizzato. ChatGPT può supportare i citizen developer – ovvero coloro che non sono professionisti Dev ma possono utilizzare le applicazioni per semplici progetti IT – nella configurazione e nello scripting di componenti già codificati. Questo sarà di grande aiuto per portare avanti i progetti. Tuttavia, per ora, l’apprendimento automatico non può sostituire i programmatori professionisti nella scrittura di nuovo codice, ma può essere un ottimo acceleratore quando devono lavorare con schemi comuni. Sarà interessante vedere dove potrà arrivare.

Giulio Roggero, CTO & Co‑founder di Mia‑Platform

 

Fare il lavoro pesante con Mia‑Platform

Migliorare la Developer Experience attraverso il Machine Learning può essere un compito scoraggiante. Si tratta di una soluzione che comporta un notevole dispendio di risorse per l’implementazione e la manutenzione. Prima di approfondire che cos’è Mia‑Platform e come fa il lavoro pesante, è fondamentale capire che cos’è il Platform Engineering.

Il Platform Engineering è un processo che le organizzazioni utilizzano per migliorare la produttività degli sviluppatori riducendo la complessità e l’incertezza della moderna distribuzione del software. Il suo obiettivo principale è quello di migliorare continuamente la DevX eliminando gli ostacoli tra gli sviluppatori e la produzione.

Come già detto, il Platform Engineering offre molti vantaggi e migliora in modo significativo la DevX. Tuttavia, ci sono casi in cui non è possibile o conveniente costruire e mantenere una piattaforma in autonomia. Il tempo, le risorse e la manodopera richiesti sono solitamente elevati.

 

Cos’è Mia‑Platform?

Mia‑Platform è un Platform Builder che consente alle aziende di costruire la propria piattaforma per sviluppare software di alta qualità. Con Mia‑Platform, le aziende possono concentrarsi completamente sullo sviluppo del loro software e dedicarsi meglio alle esigenze dei clienti, mentre la piattaforma fa il lavoro pesante.

Potete saperne di più su Mia‑Platform, esplorando tutti i vantaggi e i servizi che offre.

 

Conclusione

In sintesi, la DevX è una parte essenziale dell’SDLC. Assicura che gli strumenti, i processi e gli ambienti di lavoro siano impostati correttamente per garantire la massima produttività.

Le aziende e gli individui che vogliono essere all’avanguardia e avere un vantaggio competitivo devono investire nel miglioramento del DevX. Con Mia‑Platform, il team di sviluppo si concentra completamente su ciò che conta e la qualità del software fornito è notevolmente migliorata.

Mia-Platform RBAC Platform Engineering
Torna all'inizio ↑
INDICE
Che cos’è la Developer Experience
Che cos’è il Machine Learning
Come il Machine Learning può migliorare la Developer Experience
Svantaggi nell’implementazione del Machine Learning
Fare il lavoro pesante con Mia‑Platform
Conclusione