Una nuova frontiera della programmazione

Penso che l’ambito della programmazione e dello sviluppo applicativo si stia trasformando con le stesse modalità con cui la progettazione dell’infrastruttura si è modificata. Parliamo ti tempi che, nel nostro campo, corrispondono ad ere glaciali; gli anni 70-90 per l’infrastruttura, mentre per lo sviluppo applicativo vedo un ciclo iniziato timidamente i primi di questo secolo e che ha avuto un’accelerazione improvvisa negli ultimi 5-8 anni. 

Due tendenze opposte

Le aziende che si occupano di IT si sono sempre confrontate con due spinte contrapposte: da una parte l’esigenzatra del clienti di avere sempre di più sistemi chiavi-in-mano che siano integrati con la loro realtà; dall’altra l’esigenza di concentrarsi su quelle attività in cui l’azienda si esprime al meglio.

Ad esempio un’azienda che vuole, per i suoi uffici, una LAN completa si rivolgerà sceglierà una ditta in grado di fornirgli gli switch, i cavi, le canaline, i pannelli patch ed eventuali armadi rack, le prese per le scrivanie ecc. ecc. L’azienda fornitrice dovrà operare su una serie di livelli con persone che hanno competenze diverse: elettricisti, informatici e forse anche muratori. Se paragoniamo questi livelli al modello OSI potremmo dire che questa azienda lavorerà sui livelli 1-3. Se poi il cliente mette anche requisiti di sicurezza sul tavolo, facilmente l’azienda fornitrice dovrà occuparsi di prodotti e relative configurazioni spingendosi anche sui livelli 4 e 6 con le rispettive competenze.  

Sono competenze che si posizionano, per conoscenze e costi, a livelli proporzionali con quelli del modello OSI. Ossia un elettricista, un informatico in grado di configurare degli switch o uno in grado di configurare un firewoll avranno costi (e profitti) differenti. 

Con il tempo è stato più difficile avere direttamente in azienda tutte quelle figure necessarie per fornire la soluzione richiesta dal cliente. Quindi le aziende IT (di infrastruttura) hanno intrapreso il percorso che le portava a focalizzarsi sui livelli di offerta a maggior valore (livelli alti dell’OSI) integrando da esterni quelle attività necessarie per i livelli più bassi. Chi ha lavorato nelle aziende, dagli anni 70 ad oggi, ha vissuto direttamente queste trasformazioni. Io colloco fino alla metà degli anni ’90 questa tendenza che separava nettamente gli aspetti infrastrutturali da quelli applicativi. Per chi si occupava di infrastruttura il livello applicativo era un mistero a parte, e per gli applicativi quello che si doveva realizzare, per far usare il loro codice agli utenti, era quasi un rito segreto di cui non si capivano i gesti. 

Perché lo sviluppo applicativo è diventato precipitoso?

Sono convinto che l‘esigenza di far incontrare questi due mondi, farli lavorare ad una rapidità maggiore rispetto alle loro abitudini, sia nata in un periodo ben preciso e a seguito di una novità specifica. Parlo dell’avvento e diffusione dei cellulari nella seconda metà degli anni ’90. Attenzione, parlo dei primi cellulari non degli smartphone come li intendiamo oggi.

In questo nuovo mercato le aziende di telecomunicazione hanno sempre avuto l’esigenza di effettuare delle campagne di marketing per superare la concorrenza. Quindi fin dagli inizi ci sono state un susseguirsi di offerte del tipo 500 mintui e 5000 SMS inclusi a soli xx€/mese. Ma cosa significava realizzare queste campagne? In pratica si dovevano attuare le modifiche applicative e distribuirle in contemporanea su sistemi del tutto differenti. Nel momento che si compra una SIM ci sono dei sistemi dedicati che la attivano in modo che questa possa essere riconosciuta dalle varie antenne e possa essettuare le telefonate. I dati delle telefonate si passano ad altri sistemi che devono imputarle ai vari clienti. Questi dati poi passano ai sistemi di fatturazione che li trasformano in euro da fatturare.

Pensate ad una persona del marketing che si sveglia una mattina dei primi di Novembre e dice “per Natale facciamo un’offerta in modo che tutte le SIM di una famiglia abbiamo SMS e Telefonate illimitate tra di loro”. Bene e ora? Meno di due mesi per cambiare tante cose e metterle in produzione! Penso che questa sia stata la spinta per trovare differenti modalità di sviluppo applicativo.

Come programmare in modo differente?

La progettazione applicativa è stata rivista e rivoluzionata continuamente nel nuovo secolo. Nuove metodologie per produrre risultati in poco tempo, nuovi paradigmi per sviluppare applicazioni sui dispositivi mobili e qulasisi cosa potesse far risparmiare tempo. Si perché nel fare una nuova applicazione il tempo dedicato effettivamente alle sue funzionalià viene conteso tra lo scrivere codice necessario al database, all’interfaccia grafica e alle funzionalitò richieste. Ma è interessante vedere che inizialmente, per quanto di nuovo si è cercato di mettere in campo, la realizzazione di applicazioni viene fatta scrivendo con un editor righe e righe di codice in vari linguaggi, facendo cioè quello che in ingelse vine chiamato il coding.

È nel 2014 che per la prima volta Forrester conia il termine Low-code per identificare quelle piattaforma di sviluppo che si focalizzano sulla semplicità di programmare. Sono piattaforme che permettono non solo ai programmatori ma anche agli utenti di sviluppare applicazioni senza avere la necessità di conoscere linguaggi e tecniche di codifica.  Forrester le definisce in questo modo:

“Low-code platforms enable rapid delivery of business applications with a minimum of hand-coding and minimal upfront investment in setup, training, and deployment”

E anche Gartner ne da una definizione simile: 

“Low-code development both describe platforms that abstract away from code and offer an integrated set of tools to accelerate app delivery” 

e prevede che entro il  2024, le aziende utilizzeranno queste piattaforme per più del 65% del loro sviluppo applicativo.

Low-code e No-code

Quasi subito ha preso piede una suddivisione tra le piattaforme Low-code, che necessitano comunque una  parte di codifica tradizionale e le piattaforme No-code, che si pongono l’obiettivo di non dover fare alcun tipo di codifica. È iniziata una diffusione impressionante di piattaforme di cui non tutti, nemmeno chi sviluppa applicazioni per mestiere, ne ha conoscenza. Una diffusione paragonabile ad un incendio di un bosco d’estate in una giornata ventosissima.

Una rappresentazione interessante di questa diffusione è visibile nella pagina di NoCodeJournal dove è riportato un inventario di tutte (almeno quelle che sono riusciti a censire) queste piattaforme. Riporto un collage della pagina, aggiornata al 2021, solo per dare l’idea della vastità di proposte, ma vi consiglio di leggere il sito.

Cosa significa per i programmatori e come ci si può orientare in questo mare di offerte?

Per chi è abituato a scrivere righe e righe di codice passando ore dietro an un editor sarà necessario un cambiamento di approccio mentale. Il tempo speso nel capire cosa deve fare l’applicazione sarà maggiore del tempo speso a progettare come lo deve fare. Si dovranno solamente organizzare, con gli strumenti messi a disposizione della piattaforma low/no-code, le attività e le operazioni che dovrà eseguire l’utente.

Penso che questo non significherà la scomparsa dei programmatori e non accadrà che gli utenti (almeno la maggior parte) si scriveranno da soli le applicazioni. Per essere più chiaro, forse non ci saranno più i programmatori come li conosciamo oggi, ma ci saranno sempre degli “organizzatori” con capacità analitiche che orchestreranno le logiche applicative per gli utenti.  

more insights