Vai al Contenuto
Questo articolo è stato tradotto dal giapponese utilizzando l'AI
Leggi in giapponese
Questo articolo è di Pubblico Dominio (CC0). Sentiti libero di usarlo liberamente. CC0 1.0 Universal

L'Ingegnere Onnidirezionale nell'Era del Liquidware

È ben noto che l'IA generativa può creare immagini, producendo foto, illustrazioni e dipinti fotorealistici semplicemente seguendo istruzioni.

Nel frattempo, nel mondo degli affari, l'attenzione si concentra sulla capacità dell'IA generativa di generare programmi.

L'IA basata su chat è realizzata tramite modelli linguistici di grandi dimensioni (Large Language Models) fondamentali, il che la rende altamente competente nel conversare in varie lingue e nel tradurre tra esse.

I linguaggi di programmazione, usati per creare programmi, sono anch'essi un tipo di linguaggio. I programmatori umani, in un certo senso, traducono i requisiti software ricevuti verbalmente in linguaggi di programmazione.

Per questa ragione, l'IA generativa conversazionale che utilizza i modelli linguistici di grandi dimensioni è anche molto abile nella programmazione.

Inoltre, la programmazione è un tipo di lavoro intellettuale in cui la correttezza dell'output può essere spesso verificata automaticamente e istantaneamente. Questo perché l'esecuzione del programma creato consente di determinare automaticamente se i risultati desiderati sono prodotti.

Infatti, i programmatori umani spesso creano programmi di test contemporaneamente al programma principale per verificare che quest'ultimo funzioni come previsto, controllandone il comportamento man mano che lo sviluppo procede.

L'IA generativa può anche progredire nella programmazione mentre testa, consentendo un meccanismo in cui, se un essere umano fornisce istruzioni precise, l'IA può iterare e completare automaticamente il programma finché non supera i test.

Naturalmente, a causa dei limiti delle capacità di programmazione dell'IA generativa e dell'ambiguità delle istruzioni umane, ci sono molti casi in cui i test non possono essere superati nemmeno dopo molteplici iterazioni. Inoltre, i test potrebbero essere insufficienti o errati, spesso portando a bug o problemi nel programma completato.

Tuttavia, man mano che le capacità dell'IA generativa migliorano, gli ingegneri umani affinano i loro metodi di istruzione, e la conoscenza di programmazione dell'IA generativa viene migliorata tramite ricerche su internet, l'ambito per la generazione automatica di programmi appropriati sta aumentando di giorno in giorno.

Inoltre, con l'attenzione del mondo degli affari, le aziende leader che conducono ricerca e sviluppo sull'IA generativa si stanno concentrando anche sul miglioramento delle capacità di programmazione dell'IA generativa.

In tali circostanze, si prevede che l'espansione delle aree e dei volumi in cui la programmazione automatica può essere affidata all'IA generativa accelererà.

Ci sono molti casi in cui individui che non hanno mai sviluppato programmi prima hanno impostato un ambiente di sviluppo di base basandosi su informazioni di internet, e poi hanno lasciato che l'IA generativa gestisse la programmazione, completando i programmi in uno sforzo collaborativo.

Io stesso, come programmatore, utilizzo l'IA generativa per la programmazione. Una volta che ci prendo la mano, posso completare il software senza modificare affatto il programma, semplicemente copiando i programmi nei file o tagliando e incollando secondo le istruzioni dell'IA generativa.

Naturalmente, ci sono molte occasioni in cui incontro difficoltà. Queste sono principalmente dovute al fatto che il mio computer o gli strumenti di sviluppo della programmazione hanno impostazioni leggermente diverse dalle configurazioni tipiche, o i componenti software gratuiti sono più recenti di quanto l'IA generativa abbia imparato, portando a un divario di conoscenza, o talvolta il contenuto richiesto è un po' insolito.

Nella maggior parte dei casi, se non ci sono tali piccole differenze o circostanze speciali, e le istruzioni riguardano la creazione di una funzionalità software molto comune, vengono generati programmi appropriati.

Verso l'Era del Liquidware

Come sviluppatore di software, posso rilasciare il software che sviluppo. E il software che noi ingegneri rilasciamo viene utilizzato da vari utenti.

Il futuro in cui chiunque potrà effettuare questo sviluppo software con l'IA generativa è un'estensione della discussione finora condotta.

Tuttavia, questo non è solo un cambiamento sul lato dello sviluppo software. Un cambiamento significativo avverrà anche sul lato utente.

Istruire verbalmente l'IA generativa per aggiungere o modificare automaticamente funzionalità al software può essere fatto non solo durante la fase di sviluppo prima del rilascio del software, ma anche mentre è in uso. Inoltre, può essere fatto dagli stessi utenti del software.

Gli sviluppatori di software dovranno semplicemente definire gli intervalli consentiti e immodificabili e rilasciare il software con una funzione di personalizzazione alimentata dall'IA generativa.

Ciò consentirebbe agli utenti di chiedere all'IA generativa di modificare piccoli problemi di usabilità o preferenze di design dello schermo.

Inoltre, sarebbe possibile aggiungere funzioni convenienti trovate in altre app, eseguire una combinazione di più operazioni con un singolo clic, o visualizzare le schermate frequentate su un unico display.

Dal punto di vista dello sviluppatore di software, consentire tale personalizzazione da parte dell'utente offre vantaggi significativi. Elimina la necessità per loro di aggiungere funzionalità basate sulle richieste degli utenti, e considerando che potrebbe aumentare la popolarità del software evitando feedback negativi e insoddisfazione riguardo all'usabilità, è un grande vantaggio.

Quando gli utenti possono liberamente cambiare schermi e funzioni in questo modo, il concetto si discosta significativamente da ciò che tradizionalmente chiamavamo "software".

Sarebbe appropriato chiamarlo "liquidware" per significare che è ancora più fluido e adattabile del software (che è flessibile rispetto all'hardware), e che si adatta perfettamente all'utente.

In passato, le funzioni erano realizzate unicamente dall'hardware, ma poi è emerso il software sostituibile, consentendo la realizzazione delle funzioni tramite una combinazione di hardware + software.

Da lì, possiamo pensare all'emergere del liquidware, che si riferisce a parti che possono essere modificate dall'IA generativa. Così, le funzioni complessive sarebbero realizzate da hardware + software (fornito dagli sviluppatori) + liquidware (modifiche dell'utente).

In questa era del liquidware, le idee di modifica lato utente esploderanno.

Un'idea di modifica innovativa inventata da un utente potrebbe diventare un argomento di tendenza sui social media, portando altri a imitare e modificare vari liquidware.

Inoltre, è destinato a emergere il liquidware in grado di integrare e gestire vari tipi di software. Questo consentirebbe agli utenti di visualizzare timeline da diverse piattaforme SNS in un'unica app, o integrare risultati di ricerca da numerose piattaforme.

In questo modo, in un mondo in cui il liquidware è prevalente, vari dispositivi, inclusi PC e smartphone, forniranno funzioni che si adattano perfettamente alla vita e alle attività di ogni individuo.

Un Fenomeno Attuale

Ciò che è importante per gli ingegneri software come me è che il liquidware non è un concetto futuristico o qualcosa che si realizzerà tra diversi anni.

Questo perché un liquidware molto semplice è già realizzabile.

Per esempio, supponiamo che io sia un ingegnere che sviluppa un'applicazione web per il sito di e-commerce della mia azienda.

Tali applicazioni web tipicamente dispongono di database, sistemi di gestione delle vendite e sistemi di spedizione dei prodotti su server gestiti dall'azienda o su servizi cloud in outsourcing. Quando un utente effettua un acquisto, questi sistemi si collegano per raccogliere i pagamenti e spedire i prodotti.

I sistemi centrali e i database per queste operazioni non possono essere modificati arbitrariamente.

Tuttavia, se il design del sito web di e-commerce che gli utenti vedono viene modificato per la convenienza di ciascun utente, di solito ciò causa pochi problemi. Certo, se le modifiche di un utente influenzano la schermata di un altro utente, quello è un problema, ma le personalizzazioni individuali specifiche per l'utente vanno bene.

Sono concepibili varie modifiche: ingrandire il testo, cambiare lo sfondo in un tono scuro, spostare i pulsanti usati frequentemente in posizioni facilmente accessibili con la mano sinistra, ordinare gli articoli per prezzo in una schermata di elenco, o visualizzare i dettagli di due prodotti affiancati.

Tecnicamente, queste modifiche possono essere realizzate alterando i file di configurazione e i programmi come HTML, CSS e JavaScript che visualizzano la schermata sul browser.

In termini di sicurezza, questi file originariamente vengono eseguiti nel browser web, quindi sono modificabili da ingegneri che hanno familiarità con le applicazioni web. Pertanto, gestiscono solo funzioni e dati che sono sicuri da modificare.

Così, lato server dell'applicazione web di e-commerce, si potrebbero memorizzare questi file separatamente per ogni utente autenticato, aggiungere una schermata per la conversazione con un'IA di chat, e creare un meccanismo per modificare i file HTML, CSS e JavaScript di quell'utente sul server in base alle sue richieste.

Se si fornisce questo testo, insieme alle informazioni di configurazione e al codice sorgente di un'applicazione web di e-commerce esistente, all'IA generativa, questa probabilmente fornirà i passaggi e i programmi necessari per aggiungere tale funzionalità.

In questo modo, il liquidware è già un argomento attuale; non sarebbe sorprendente che fosse un fenomeno in corso.

Ingegnere Onnidirezionale

Anche se l'ambito della programmazione automatica basata sull'IA si espande e l'era del liquidware è già iniziata, lo sviluppo software non può ancora essere condotto unicamente dall'IA generativa.

Tuttavia, è certo che il peso della programmazione nello sviluppo software diminuirà significativamente.

Inoltre, per sviluppare software in modo fluido, è necessaria un'ampia gamma di conoscenze e competenze ingegneristiche, non solo la programmazione generale, ma anche l'infrastruttura cloud, le reti, la sicurezza, le piattaforme, i framework di sviluppo e i database, coprendo l'intero sistema da cima a fondo.

Il personale con tali conoscenze e competenze è chiamato ingegnere full-stack.

Fino ad ora, alcuni ingegneri full-stack si occupavano della progettazione complessiva, mentre i restanti ingegneri si concentravano esclusivamente sulla programmazione o si specializzavano in aree specifiche non legate alla programmazione all'interno dello stack di sistema, condividendo i ruoli in questo modo.

Tuttavia, man mano che l'IA generativa si farà carico della parte di programmazione, i costi di sviluppo software saranno significativamente ridotti, portando alla pianificazione di vari nuovi sviluppi software.

Di conseguenza, ogni progetto di sviluppo richiederà pochissimi ingegneri che possano semplicemente scrivere codice; invece, sarà necessario un gran numero di ingegneri full-stack.

Inoltre, in questa situazione, il semplice possesso di conoscenze e competenze full-stack sarà insufficiente. Questo perché i vari progetti di sviluppo software richiederanno tipi diversi di software, il che significa che lo sviluppo non sarà sempre richiesto all'interno dello stesso stack di sistema. Inoltre, la domanda di sistemi compositi che richiedono più stack di sistema è destinata ad aumentare.

Ad esempio, lo stack di sistema per un'applicazione web differisce da quello per sistemi aziendali o core. Pertanto, a un ingegnere full-stack di applicazioni web non può essere affidato un progetto di sviluppo di un sistema core.

Inoltre, le applicazioni web, le app per smartphone e le applicazioni per PC hanno stack di sistema diversi. Nel mondo del software embedded, come l'IoT, lo stack di sistema cambia completamente a seconda del dispositivo in cui è incorporato.

Tuttavia, se l'enfasi sulla programmazione diminuisce e il costo complessivo dello sviluppo software si abbassa, lo sviluppo di sistemi compositi che combinano software con stack di sistema diversi dovrebbe aumentare.

Sebbene ciò richiederà l'assemblaggio di più ingegneri full-stack separati per lo sviluppo, gli ingegneri che possono supervisionare l'intero quadro ed eseguire la progettazione di base avranno una posizione cruciale.

Ciò significa che gli ingegneri con conoscenze e competenze onnidirezionali attraverso numerosi stack di sistema, trascendendo i confini dei singoli stack di sistema, saranno molto richiesti.

Tali ingegneri saranno probabilmente chiamati ingegneri onnidirezionali.

E proprio come la domanda di ingegneri che sanno solo programmare diminuirà a causa dell'IA generativa, arriverà un'era in cui anche la domanda di ingegneri full-stack confinati a un singolo stack di sistema diminuirà.

Se desideri rimanere attivo come ingegnere IT in quell'era, devi iniziare subito a impegnarti per diventare un ingegnere onnidirezionale.

Il Ruolo dell'Ingegnere Onnidirezionale

I linguaggi di programmazione, le piattaforme e i framework da sviluppare sono diversi.

Tuttavia, questo non significa che si debbano imparare tutti. Questo perché l'ingegnere onnidirezionale può anche ricevere assistenza dall'IA generativa.

Se affidato all'IA generativa, anche linguaggi di programmazione, piattaforme o framework che non si sono mai usati personalmente possono essere generati semplicemente fornendo istruzioni verbalmente.

Naturalmente, esiste il rischio di introdurre bug o falle di sicurezza, o di accumulare debito tecnico che potrebbe rendere difficili le modifiche future.

Per identificare e mitigare questi rischi, è necessaria la conoscenza del linguaggio o della libreria specifica. Tuttavia, tale conoscenza può anche essere ottenuta dall'IA generativa. L'ingegnere onnidirezionale deve solo essere in grado di costruire in modo approfondito le procedure e i meccanismi per rilevare e prevenire questi problemi, o per gestirli a posteriori.

Queste procedure e meccanismi non cambiano in modo significativo con le differenze nello stack di sistema. Se si possono formalizzare le procedure e i meccanismi per sopprimere l'introduzione di bug e falle di sicurezza, e per garantire la futura estensibilità durante lo sviluppo, allora il resto può essere affidato all'IA generativa o a ingegneri esperti in quelle particolari aree.

L'ingegnere onnidirezionale non ha bisogno di possedere conoscenze dettagliate o esperienza a lungo termine con ogni singolo stack di sistema.

Inoltre, uno dei ruoli principali di un ingegnere onnidirezionale è quello di progettare come le funzioni sono distribuite e come interagiscono all'interno di software complessi che operano in modo collaborativo su più, diversi stack di sistema.

In aggiunta, considerare come l'intero software debba essere sviluppato e gestito diventa anch'esso un ruolo importante per l'ingegnere onnidirezionale.

Software Onnidirezionale

Consideriamo che tipo di sviluppo software richiede un ingegnere onnidirezionale.

In precedenza, ho fatto l'esempio dello sviluppo di un'applicazione web per l'e-commerce.

Sotto la direzione di un dirigente responsabile, al quale la direzione generale dell'azienda ha ordinato di revisionare questa applicazione web di e-commerce, il team di pianificazione potrebbe presentare i seguenti requisiti:

Conversione in Piattaforma di Comunità Utente. Ciò significa non solo un'app o un sito specifico per l'e-commerce, ma fornire una piattaforma dove gli utenti dei prodotti possano interagire tra loro sui prodotti stessi e sul loro utilizzo. L'obiettivo è la fidelizzazione degli utenti, l'effetto passaparola, l'arricchimento dei contenuti tramite i contributi degli utenti e l'integrazione del feedback sullo sviluppo dei prodotti (sia positivo che negativo) con la pianificazione di nuovi prodotti e il marketing.

Compatibilità Omni-dispositivo. Ciò consente l'accesso alla comunità utente e alle informazioni sui prodotti non solo da applicazioni web ma anche da app per smartphone, assistenti vocali, dispositivi indossabili, elettrodomestici intelligenti e tutti gli altri dispositivi.

Compatibilità Omni-piattaforma. Questo include non solo la piattaforma della comunità utente dell'azienda, ma anche, ad esempio, le liste dei prodotti e la condivisione di recensioni su siti di e-commerce generici, l'integrazione con i social media e il collegamento funzionale e informativo con vari strumenti di IA.

Aggiornamento del Sistema Aziendale. Pur collegandosi temporaneamente ai sistemi esistenti di gestione delle vendite e di consegna dei prodotti, anche questi sistemi verranno aggiornati. Dopo l'aggiornamento, sono previsti l'aggregazione dei dati di vendita in tempo reale, la previsione della domanda e l'integrazione con i sistemi di gestione dell'inventario. Inoltre, man mano che progredirà l'integrazione graduale con i sistemi di inventario distribuiti regionalmente e i servizi di spedizione dei prodotti forniti dalle aziende di consegna, i sistemi informativi dovranno anche integrarsi gradualmente di conseguenza.

Compatibilità Liquidware. Naturalmente, tutte le interfacce utente saranno compatibili con il liquidware. Inoltre, tutte le interfacce utente interne, come quelle per l'aggregazione delle informazioni e il feedback per lo sviluppo e la pianificazione dei prodotti, i reparti di gestione del sistema e i rapporti di gestione, saranno anch'esse convertite in liquidware.

Se venisse presentato un piano di sviluppo per un software così complesso, un team di sviluppo software tradizionale probabilmente non lo accetterebbe immediatamente. Oppure, durante il processo di affinamento delle specifiche del sistema, dimostrerebbero logicamente la necessità di enormi costi e tempi di sviluppo, e spingerebbero per significative riduzioni delle specifiche.

Tuttavia, cosa succederebbe se l'IA generativa potesse automatizzare la maggior parte della programmazione, e più della metà degli stack di sistema presentati fossero familiari a qualcuno del team, e il team avesse già esperienza nel successo dell'introduzione di nuovi stack di sistema, piattaforme e framework da zero con l'assistenza dell'IA generativa? E cosa succederebbe se tu, come ingegnere onnidirezionale, avessi già intrapreso questo percorso e intendessi continuarvi?

Da questa prospettiva, dovrebbe apparire come un progetto molto attraente. Potresti lavorare con un team di pianificazione che propone ambiziose proposte sotto la direzione della leadership di pianificazione, e un team di sviluppo con il potenziale per crescere in un team di sviluppo software onnidirezionale.

C'è anche la rassicurazione dei sistemi esistenti. È anche un progetto che consente processi di sviluppo agili, dove le funzionalità ad alto impatto possono essere costruite rapidamente, e il sistema può crescere in modo incrementale con il feedback degli utenti early adopter.

Considerando ciò, lo sviluppo di questo software onnidirezionale dovrebbe apparire come un progetto attraente.

In Conclusione

Grazie alla programmazione automatica tramite IA generativa, il liquidware e lo sviluppo di software onnidirezionale stanno già diventando realtà attuali.

In una tale situazione, gli ingegneri IT sentono sempre più il bisogno di andare oltre il concetto di full-stack e puntare a diventare ingegneri onnidirezionali.

Inoltre, oltre a ciò, il loro campo d'azione si espanderà all'ingegneria aziendale onnidirezionale, che ingegnerizza in modo completo le attività organizzative connettendo clienti, dipendenti interni e IA al di là dell'ambito dei sistemi IT, e all'ingegneria di comunità onnidirezionale.

E ancora più in là, credo che emergerà un campo chiamato ingegneria sociale onnidirezionale, mirato a migliorare in modo completo la società.