Dopo radiologi e autisti, ora ad essere sostituiti dall’Artificial Intelligence in particolare nella sua versione “generativa”, sarebbero gli stessi programmatori informatici.

Stando alle ragioni addotte a giustificazione di tale affermazione, ci sono tuttavia buoni motivi per dubitare della affidabilità dell’ennesima predizione altisonante, avanzata al solito con la sicumera tipica degli indovini, formulata dagli “evangelisti” tecnologici, assertori della “inevitabile” superiorità dell’AI rispetto agli umani nei ruoli più vari, finora ritenuti appannaggio esclusivo di questi ultimi.

Come del resto già accaduto per le previsioni (puntualmente disattese) che decretavano la fine “prematura” di mestieri quali i radiologi (memorabile la profezia fatta in tal senso già nel 2015 da uno degli storici “padrini” dell’AI) e autisti (i quali sarebbero prossimi al pensionamento anticipato per causa delle automobili a “guida autonoma”), anche per i programmatori la ventilata ipotesi di andare ad accrescere l’esercito dei senza lavoro potrebbe rivelarsi non solo errata, ma persino di buon auspicio.

Vediamo perchè.

Ormai neanche un meme ci salverà

Come spesso capita, ad alimentare l’ironia su questioni divisive e controverse è spesso un meme, che solitamente viene confezionato allo scopo precipuo di rivelare in forma satirica delle “verità” che si reputano condivise, ancorchè non adeguatamente evidenziate.

Stavolta però il meme che in questi giorni sta impazzando sul web non sembra cogliere nel segno.

La facile ironia sulla necessità di definire in maniera esaustiva e dettagliata le esigenze e i requisiti funzionali da parte dei clienti che commissionano lo sviluppo del software, non rappresenta la garanzia per gli sviluppatori di non vedersi sfilare dalle mani il proprio lavoro da parte degli algoritmi generativi, che di quella esaustività e completezza informativa sembrerebbero potersi avvantaggiare ben più degli stessi programmatori.

Se è vero che esiste da sempre un dissidio perenne tra programmatori e clienti, i quali si trovano spesso a confrontarsi in maniera dialettica sulle diverse interpretazioni “autentiche” da attribuire ai requisiti utente, tale dissidio tuttavia non è il mero riflesso della proverbiale “scontrosità” di carattere dei programmatori, da un lato, e della “indeterminatezza” e/o indecisione dei clienti nel definire quali debbano essere le effettive priorità da assegnare agli sviluppatori, e le conseguenti caratteristiche funzionali da prevedere nelle implementazioni tecniche, dall’altro.

La verità è che tale dissidio è connaturato alla natura stessa dello sviluppo del software, ed è il riflesso della difficoltà di modellare in termini computazionali la complessità della realtà concreta, che a causa della propria dinamicità e mutabilità, mal si presta ad essere “ingessata” nel paradigma tipicamente manicheo della logica binaria, secondo il quale tutta la realtà deve poter essere ricondotta necessariamente alle sole declinazioni antitetiche del “vero/falso”, zero/uno ecc.

Non di solo codice vive il programmatore

Ridurre pertanto il lavoro dei programmatori alla mera scrittura di codice vuol dire non aver compreso qual è il reale ruolo a questi devoluto, che consiste più in generale nel dare concretezza alle esigenze di problem solving delle aziende clienti.

Tali esigenze, pertanto, vanno ben al di là della produzione di codice “un tanto al chilo”, e la stessa pretesa di voler delegare agli algoritmi generativi tale produzione, rischia di tradursi in un clamoroso boomerang per quelle aziende che dovessero subire la fascinazione di seguire una simile scorciatoia “digimagical”.

Questo per una serie di ragioni, distinte ma tra loro correlate.

In primo luogo, perchè a dispetto di quel che si voglia (far) credere, le AI generative non sono in grado di produrre codice affidabile a prescindere, data la loro propensione a riciclare codice già scritto da altri, non sulla base di analogia di esigenze e quindi di soluzioni, ma sulla base di “assonanza” con quello che statisticamente appare all’algoritmo essere più pertinente al problema specifico ad esso sottoposto.

In secondo luogo, perchè nessuna tecnologia di automazione è in grado da sola di dirimere la complessità del contesto in cui i codici prodotti vanno ad inserirsi (per farsene un’idea, basti pensare alla quantità di software “legacy” che ordinariamente costituisce il cosiddetto “debito” tecnologico di ogni azienda, con il quale ogni nuovo software introdotto deve inevitabilmente fare i conti).

In terzo luogo, perchè la produzione stessa di codice contribuisce a far emergere la complessità nascosta nei dettagli implementativi, e pertanto assume un ruolo “rivelatore” e di scoperta per l’azienda, che nel confronto dialettico con gli sviluppatori guadagna maggiore consapevolezza delle proprie specificità ed “idiosincrasie” (non solo) tecnologiche.

Per tutta questa serie di ragioni, l’introduzione delle AI generative può verosimilmente rappresentare più un’opportunità di valorizzare le prerogative e le competenze dei programmatori, piuttosto che costituire una minaccia al loro fututo lavorativo.