App Development, Cloud Apps and Internet of Things

Perché l'IA non può sostituire gli sviluppatori

Written by nicola | 14-gen-2024 23.00.00

Introduzione

Tra i numerosi articoli che elogiano i notevoli progressi nel campo dell’intelligenza artificiale, crescono le preoccupazioni per le società di sviluppo software sulla loro potenziale sostituzione da parte dell’intelligenza artificiale. Molti immaginano un futuro in cui AI e genAI creeranno direttamente i prodotti desiderati senza il coinvolgimento di ruoli tradizionali come designer, sviluppatori e software house.

Gli sviluppatori hanno paura!

Ovviamente no. Come possiamo leggere da questo articoloI veri problemi sono solitamente incentrati su ciò che il software dovrebbe fare. La parte più difficile nella creazione di software non è scrivere codice; ma consiste nel creare i requisiti e i requisiti dei software sono ancora definiti dagli esseri umani.”

In una software house sono i designer e gli sviluppatori a svolgere le operazioni più importanti. E, quando parliamo di “operazioni più importanti”, non parliamo di creare la user experience, l’interfaccia utente e il codice. Queste sono operazioni importanti, ma non le più importanti.

Le operazioni più importanti riguardano la comunicazione, la creatività, l’innovazione e le decisioni prese nei momenti di incertezza.

Quindi possiamo dire che:

  • L’intelligenza artificiale non è brava a comunicare: designer e sviluppatori lavorano in team e incontrano clienti e utenti per comprendere i requisiti del progetto. Devono essere poi in grado di comunicare in modo efficace con le altre parti interessate nello sviluppo del software. L’intelligenza artificiale è fondamentalmente matematica complessa e la matematica non è molto brava nella comunicazione!
  • L’intelligenza artificiale non è brava a gestire l’incertezza: designer e sviluppatori spesso devono affrontare l’incertezza e prendere decisioni nel processo di sviluppo del software. L’intelligenza artificiale non è molto brava a gestire le decisioni senza conoscere tutto il contesto, quindi non è adatta per questo tipo di situazioni.
  • L’intelligenza artificiale non è brava con la creatività: designer, e talvolta gli sviluppatori, devono essere creativi per poter trovare nuove soluzioni ai problemi. L’intelligenza artificiale non è molto brava nella creatività, perché dà risposte basate sulla probabilità, quindi non può immaginare cose nuove.
  • L’intelligenza artificiale non è brava nell’innovazione: designer e sviluppatori sono in continuo apprendimento, leggono notizie, leggono articoli e così via. Possono scoprire le innovazioni prima che un’intelligenza artificiale le possa implementare e di conseguenza utilizzarle in un modo migliore. Ultimo, ma non meno importante, le innovazioni richiedono creatività e, in base a quanto detto prima, l’intelligenza artificiale non eccelle nella creatività, quindi pecca nel trovare nuove innovazioni.

Se scrivi prima il codice, consegni per ultimo

La fretta porta a errori. Nonostante ciò, molti clienti pensano che iniziare prima a programmare equivalga ad avere il progetto perfetto e pronto in tempi brevissimi.

Niente di più lontano dalla verità!

Iniziare a scrivere codice senza comprendere i requisiti finisce sempre in un disastro completo. Prima di tutto non è chiaro nemmeno al cliente stesso cosa vuole davvero. Potrebbero poi verificarsi incomprensioni comunicative che aggiungono ulteriore casualità nel risultato finale. Costruire un’app, o un software, è come costruire una casa. Avete mai visto un cliente che spiega direttamente al muratore le esigenze della casa e come costruirla? Ogni volta il progetto deve partire da un architetto o da un geometra. Ciò significa che le case devono essere ideate, comprese e progettate prima di essere realizzate.

Lo stesso vale per il software. Ecco perché l’intelligenza artificiale non può sostituire le software house. L’intelligenza artificiale può scrivere codice come una (grande) stampante 3d può costruire case. Ma senza un progetto, input specifici, coordinamento e supervisione la casa stampata in 3D non potrebbe esistere. Così anche il software non può esistere senza progettisti, sviluppatori e ingegneri esperti che comprendano e progettino il sistema.

Analizziamo un metodo di una software house che ci permette di creare un prodotto nel modo corretto!

Come una una società di sviluppo software (dovrebbe) gestire i requisiti

Per gestire la parte più importante della creazione di un software, DuckMa investe molto tempo e impegno in workshop con i clienti. Questo è il modo migliore per comprendere i requisiti del progetto e avviare l’analisi di fattibilità.

L’analisi è divisa in due fasi: Frame e Discovery.

Il Frame è la prima analisi di fattibilità. Coinvolgiamo un desginer e un ingegnere esperto in infrastrutture software in un workshop di 2 ore. In questo workshop studieremo e analizzeremo tutte le tue idee e richieste e ti forniremo alcuni consigli. Dopo l’incontro rielaboriamo gli appunti e forniamo un workbook che descrive in modo chiaro tutte le richieste e le idee. In più contiene le macro funzionalità del progetto, le opportunità e le criticità e un primo preventivo di progetto per far conoscere al cliente l’investimento previsto.

Il Discovery è un’analisi più approfondita con focus sulle macro funzionalità decise nel Frame. In questa fase ci sono altri due workshop in cui progettiamo la user journey dell’app e analizziamo meticolosamente ogni pagina del sistema. Creeremo poi un documento di progetto che descrive cosa conterrà il software. Per essere sicuri di aver compreso le tue esigenze creeremo anche il wireframe dell’app, che definisce il contenuto e il flusso di ogni schermata.

Ultimo, ma non per importanza, creiamo la user story dell’app, che descrive tutte le possibili azioni che un utente può fare nell’app.

A conclusione della fase di analisi c’è una terza fase, il Plan, fondamentale per programmare le fasi di design e codifica. Questa è una parte interna del processo che consente agli sviluppatori di scrivere un documento tecnico e di test. Durante questo processo i designer e gli sviluppatori dividono il progetto in milestones e creano una roadmap con le date di consegna. In queste date ti forniremo una versione di prova dell’app, che potrai iniziare a provare, per monitorare lo stato di avanzamento dei lavori.

Quanto lavoro abbiamo fatto finora e non abbiamo ancora scritto una sola riga di codice!

Scrivi il codice per ultimo, consegna per primo

Ma questo è il contrario di quanto dicevamo prima!

Giusto, perché ora siamo sicuri su come iniziare a svilupparlo. Costruiamo il progetto una milestone alla volta, creando prima il design e poi implementandolo. Quando il codice è pronto per essere testato facciamo i primi test per assicurarci che tutto funzioni.

Come puoi vedere il codice è l’ultima cosa fatta, subito prima di testarlo. Lavorare in questo modo permette di velocizzare moltissimo tutti i processi di sviluppo. I requisiti sono chiari, il cliente è allineato con il team e tutti conoscono tutti i dettagli del progetto.

Iniziare progettando consente di discutere ogni possibile problema prima di iniziare a scrivere il codice. In questo modo il flusso implementativo non viene interrotto da criticità non considerate. E, risolvendo in progettazione anche molte altre cose, le date di consegna non verranno ritardate dall’insorgere di nuovi problemi.

Procedere passo dopo passo permette al cliente di vedere il lavoro in corso e dare feedback durante la fase di codifica. Gli sviluppatori che stanno lavorando su un progetto sono molto più veloci nel risolvere le piccole correzioni che emergono durante lo sviluppo.

Non preoccuparti, l’intelligenza artificiale non è inutile!

Nonostante quanto detto sull’importanza degli sviluppatori, l’intelligenza artificiale sta diventando sempre più importante nel supporto al lavoro. Ad esempio, durante l’analisi di fattibilità l’IA può essere usata per controllare la documentazione e ottenere riepiloghi. Nella fase di sviluppo l’intelligenza artificiale può essere utilizzata dagli sviluppatori per aiutarli a scrivere parti standard di codice o per verificare se ci sono errori nel codice scritto… e così via. In questo modo le software house possono utilizzare l’intelligenza artificiale come “dipendente virtuale” a supporto degli sviluppatori.

È importante non confondere l’intelligenza umana con quella artificiale. I nuovi linguaggi e modelli di intelligenza artificiale sono più grandi e potenti, ma lontani dall’intelligenza umana. I computer eseguono operazioni matematiche discrete e finite, i neuroni non eseguono la matematica di per sé, ma siamo lo stesso in grado di compiere astrazioni di pensiero per superare gli esami di matematica!

Conclusione

Come risultato, designer e sviluppatori dovranno continuare a svolgere un ruolo chiave nella raccolta e analisi dei requisiti. Devono essere in grado di lavorare con il cliente, comprendere i suoi bisogni e devono essere in grado di tradurre le richieste in requisiti chiari e concisi.

È improbabile che l’intelligenza artificiale sostituisca gli sviluppatori in tempi brevi. Gli sviluppatori hanno ancora un ruolo fondamentale nel processo di sviluppo del software, in particolare nel aree di analisi, raccolta e debug dei sistemi. Tuttavia, l’intelligenza artificiale può essere utilizzata per aiutare gli sviluppatori a essere più produttivi ed efficienti.

A causa del suo miglioramento continuo, è possibile che un giorno, in futuro, l’intelligenza artificiale sarà in grado di sostituire gli sviluppatori. Tuttavia, per i prossimi anni, gli sviluppatori continueranno a essere necessari per creare software e le aziende di sviluppo saranno felici di continuare ad assumerli!