Quanto codice dobbiamo ancora saper scrivere, se una parte crescente dello sviluppo può essere affidata all’intelligenza artificiale? E, soprattutto, se deleghiamo la scrittura del codice, a chi rimangono le decisioni e la responsabilità sul prodotto finale?
È una domanda sulla quale sto riflettendo da tempo, perché credo riguardi non soltanto gli sviluppatori, ma più in generale il modo in cui utilizzeremo l’intelligenza artificiale nelle attività professionali. Per provare a capirlo, in SBDI AI LAB abbiamo scelto di fare quello che preferisco quando si parla di nuove tecnologie: invece di limitarci a discuterne, abbiamo provato a costruire qualcosa.
È nato così SBDI FTP Client, un prodotto sperimentale sviluppato per esplorare concretamente quanto l’intelligenza artificiale possa oggi entrare nel processo di progettazione e realizzazione di un software.
L’applicazione è un classico software FTP che serve a gestire connessioni e trasferimenti di file attraverso i protocolli FTP, FTPS e SFTP. Permette di configurare più server, importare profili da Adobe Dreamweaver in piena sicurezza, navigare tra cartelle locali e remote e gestire upload e download attraverso un’interfaccia semplice e intuitiva. È stata pensata come applicazione multipiattaforma per macOS (Silicon e Intel), Windows e Linux.
Fin qui, nulla di particolarmente rivoluzionario. Esistono naturalmente molti client FTP e l’obiettivo del progetto non era inventarne un altro. L’esperimento interessante riguarda piuttosto come è stato sviluppato.
Se l’AI può programmare, cosa rimane da fare a noi?
Lo stack tecnologico scelto comprende Tauri 2 per la realizzazione dell’applicazione desktop multipiattaforma, Rust per il backend e le operazioni sul file system e sulla rete, React e TypeScript per l’interfaccia, oltre alle librerie necessarie per gestire FTP, FTPS e SFTP.
L’AI ha contribuito alla costruzione del frontend, della logica applicativa e delle componenti necessarie alla comunicazione con i server.
Ma la cosa diventa ancora più interessante quando abbiamo introdotto un secondo livello operativo. Il codice, scritto con il supporto del primo modello di IA, è stato sottoposto all’analisi di altri modelli, utilizzati come revisori per cercare errori, anomalie, bug o potenziali vulnerabilità.
Si arriva quindi a una situazione che fino a poco tempo fa sarebbe sembrata piuttosto curiosa: un’intelligenza artificiale contribuisce a scrivere il software e un’altra intelligenza artificiale contribuisce a controllarne i risultati.
A questo punto sarebbe facile arrivare alla conclusione che il ruolo umano si stia progressivamente riducendo. La mia esperienza con questo progetto mi sta portando, invece, verso una considerazione quasi opposta.
Qualcuno, un umano intendo, deve decidere cosa costruire, quali funzioni implementare, quale architettura adottare, quali dipendenze utilizzare, quali operazioni consentire e quali evitare. Lo stesso deve verificare che una funzione apparentemente corretta faccia davvero quello che dovrebbe fare, valutare come vengono gestite le credenziali, considerare sicurezza e privacy, controllare il comportamento dell’applicazione nelle situazioni non previste e decidere quando il risultato prodotto dall’AI è accettabile e quando invece deve essere modificato o scartato.
E queste decisioni non sono semplicemente un’altra forma di programmazione ma trattasi di progettazione a tutti gli effetti.
Delegare la scrittura del codice non significa infatti delegare il progetto. Questo è probabilmente l’aspetto che trovo più interessante dell'intero progetto.
Un modello può essere estremamente efficace nello sviluppo ma non possiede automaticamente la conoscenza del contesto nel quale quel software verrà utilizzato, degli utenti ai quali è destinato, dei rischi che possiamo accettare, degli obiettivi commerciali del prodotto o delle conseguenze di una determinata scelta.
Soprattutto, non possiede la responsabilità della decisione.
Nel corso dello sviluppo di SBDI FTP Client è stato quindi necessario mantenere una supervisione umana sull’intero processo: dall’architettura alla scelta delle tecnologie, dalla verifica delle funzioni alla gestione delle credenziali e dei dati locali, dalla sicurezza alla privacy, fino all’esperienza utente, alla distribuzione e persino al modo in cui il prodotto deve essere presentato e posizionato.
Questo significa che l’intelligenza artificiale può ridurre enormemente il tempo necessario per trasformare una decisione in codice, ma non elimina la necessità di prendere quella decisione.
Anzi, proprio perché produrre codice diventa più veloce, aumenta probabilmente l’importanza di capire quale codice abbia senso produrre. È una differenza che considero fondamentale e che va ben oltre questo piccolo progetto.
La competenza non scompare: si sposta
Per molti anni abbiamo associato la competenza tecnica soprattutto alla capacità di realizzare direttamente qualcosa. Nel software significava, inevitabilmente, conoscere linguaggi, framework, librerie e strumenti e scrivere personalmente una grande quantità di codice.
Quella competenza continua a essere importante, anche perché è difficile valutare qualcosa che non si comprende. Ma con l’intelligenza artificiale una parte crescente del lavoro operativo può essere delegata e questo sposta progressivamente il punto nel quale il contributo umano produce maggior valore.
In altre parole, non basta più soltanto saper fare. Diventa sempre più importante saper dirigere il fare.
Ed è probabilmente una delle trasformazioni più interessanti introdotte dall’intelligenza artificiale nel lavoro professionale. Non riguarda soltanto i programmatori: lo stesso fenomeno sta iniziando a interessare chi scrive, chi progetta, chi analizza dati, chi realizza immagini, chi prepara documenti o chi sviluppa strategie.
Quando una parte dell’esecuzione può essere delegata, la competenza si sposta, o meglio si concentra, sulla capacità di definire, controllare, collegare e valutare.
Da qui nasce un nuovo modo di lavorare.
È una domanda sulla quale sto riflettendo da tempo, perché credo riguardi non soltanto gli sviluppatori, ma più in generale il modo in cui utilizzeremo l’intelligenza artificiale nelle attività professionali. Per provare a capirlo, in SBDI AI LAB abbiamo scelto di fare quello che preferisco quando si parla di nuove tecnologie: invece di limitarci a discuterne, abbiamo provato a costruire qualcosa.
È nato così SBDI FTP Client, un prodotto sperimentale sviluppato per esplorare concretamente quanto l’intelligenza artificiale possa oggi entrare nel processo di progettazione e realizzazione di un software.
L’applicazione è un classico software FTP che serve a gestire connessioni e trasferimenti di file attraverso i protocolli FTP, FTPS e SFTP. Permette di configurare più server, importare profili da Adobe Dreamweaver in piena sicurezza, navigare tra cartelle locali e remote e gestire upload e download attraverso un’interfaccia semplice e intuitiva. È stata pensata come applicazione multipiattaforma per macOS (Silicon e Intel), Windows e Linux.
Fin qui, nulla di particolarmente rivoluzionario. Esistono naturalmente molti client FTP e l’obiettivo del progetto non era inventarne un altro. L’esperimento interessante riguarda piuttosto come è stato sviluppato.
Se l’AI può programmare, cosa rimane da fare a noi?
Lo stack tecnologico scelto comprende Tauri 2 per la realizzazione dell’applicazione desktop multipiattaforma, Rust per il backend e le operazioni sul file system e sulla rete, React e TypeScript per l’interfaccia, oltre alle librerie necessarie per gestire FTP, FTPS e SFTP.
L’AI ha contribuito alla costruzione del frontend, della logica applicativa e delle componenti necessarie alla comunicazione con i server.
Ma la cosa diventa ancora più interessante quando abbiamo introdotto un secondo livello operativo. Il codice, scritto con il supporto del primo modello di IA, è stato sottoposto all’analisi di altri modelli, utilizzati come revisori per cercare errori, anomalie, bug o potenziali vulnerabilità.
Si arriva quindi a una situazione che fino a poco tempo fa sarebbe sembrata piuttosto curiosa: un’intelligenza artificiale contribuisce a scrivere il software e un’altra intelligenza artificiale contribuisce a controllarne i risultati.
A questo punto sarebbe facile arrivare alla conclusione che il ruolo umano si stia progressivamente riducendo. La mia esperienza con questo progetto mi sta portando, invece, verso una considerazione quasi opposta.
Qualcuno, un umano intendo, deve decidere cosa costruire, quali funzioni implementare, quale architettura adottare, quali dipendenze utilizzare, quali operazioni consentire e quali evitare. Lo stesso deve verificare che una funzione apparentemente corretta faccia davvero quello che dovrebbe fare, valutare come vengono gestite le credenziali, considerare sicurezza e privacy, controllare il comportamento dell’applicazione nelle situazioni non previste e decidere quando il risultato prodotto dall’AI è accettabile e quando invece deve essere modificato o scartato.
E queste decisioni non sono semplicemente un’altra forma di programmazione ma trattasi di progettazione a tutti gli effetti.
Delegare la scrittura del codice non significa infatti delegare il progetto. Questo è probabilmente l’aspetto che trovo più interessante dell'intero progetto.
Un modello può essere estremamente efficace nello sviluppo ma non possiede automaticamente la conoscenza del contesto nel quale quel software verrà utilizzato, degli utenti ai quali è destinato, dei rischi che possiamo accettare, degli obiettivi commerciali del prodotto o delle conseguenze di una determinata scelta.
Soprattutto, non possiede la responsabilità della decisione.
Nel corso dello sviluppo di SBDI FTP Client è stato quindi necessario mantenere una supervisione umana sull’intero processo: dall’architettura alla scelta delle tecnologie, dalla verifica delle funzioni alla gestione delle credenziali e dei dati locali, dalla sicurezza alla privacy, fino all’esperienza utente, alla distribuzione e persino al modo in cui il prodotto deve essere presentato e posizionato.
Questo significa che l’intelligenza artificiale può ridurre enormemente il tempo necessario per trasformare una decisione in codice, ma non elimina la necessità di prendere quella decisione.
Anzi, proprio perché produrre codice diventa più veloce, aumenta probabilmente l’importanza di capire quale codice abbia senso produrre. È una differenza che considero fondamentale e che va ben oltre questo piccolo progetto.
La competenza non scompare: si sposta
Per molti anni abbiamo associato la competenza tecnica soprattutto alla capacità di realizzare direttamente qualcosa. Nel software significava, inevitabilmente, conoscere linguaggi, framework, librerie e strumenti e scrivere personalmente una grande quantità di codice.
Quella competenza continua a essere importante, anche perché è difficile valutare qualcosa che non si comprende. Ma con l’intelligenza artificiale una parte crescente del lavoro operativo può essere delegata e questo sposta progressivamente il punto nel quale il contributo umano produce maggior valore.
In altre parole, non basta più soltanto saper fare. Diventa sempre più importante saper dirigere il fare.
Ed è probabilmente una delle trasformazioni più interessanti introdotte dall’intelligenza artificiale nel lavoro professionale. Non riguarda soltanto i programmatori: lo stesso fenomeno sta iniziando a interessare chi scrive, chi progetta, chi analizza dati, chi realizza immagini, chi prepara documenti o chi sviluppa strategie.
Quando una parte dell’esecuzione può essere delegata, la competenza si sposta, o meglio si concentra, sulla capacità di definire, controllare, collegare e valutare.
Da qui nasce un nuovo modo di lavorare.


