Parlo ogni giorno con i clienti di Iaas e PaaS e di come aiutarli a traghettarli dall’IT tradizionale al cloud computing ma spesso mi trovo di fronte a situazioni decisamente imbarazzanti sullo stato delle loro risorse (umane) che si occupano di sviluppo software e i progetti falliscono ancora prima di partire.

Lo sviluppatore vecchia maniera

Molti sviluppatori hanno iniziato a produrre codice quando ancora non si parlava neanche di sviluppo ad oggetti, alcuni hanno iniziato con il Cobol o con il Basic… e magari ancora usano strumenti di questo genere per portare avanti il proprio lavoro.

Intendiamoci, non ho nulla contro queste persone, ma un conto è se stanno ancora mantenendo del software su un Mainframe o su un AS/400 (ora iSeries), un altro è se stanno cercando di lavorare con applicazioni web o cloud.
Ecco, nel secondo caso non vanno bene sia il cobol che il basic ma non vanno bene neanche le tecniche di programmazione tradizionale o il codice scritto particolarmente male.

Oggetti, questi sconosciuti

La programmazione a oggetti? Bella, ma spesso applicata nel peggiore dei modi. Codice scritto con tecniche da programmazione procedurale, garbage collection lasciato al caso (nel migliore dei casi), ecc., ecc.
Negli anni passati, si sono viste cose pessime e codice scritto in modo non proprio appropriato ma ci si è passati sopra perché bastava comprare hardware più potente: il prezzo dell’hardware era in calo e ci si poteva permettere di sopperire con la forza bruta alla mancanza di intelligenza. Un altro bel danno lo hanno fatto i tool di sviluppo rapido che, spesso, hanno immesso molte funzioni standard e poco ottimizzate creando codice sempre più pesante e poco gestibile.
Non posso evitare anche di menzionare i danni fatti dagli sviluppatori autodidatti che hanno iniziato a fare il copia e incolla (e relativi smanettamenti) di codice PHP (ma anche javascript e altri) sul proprio web server, per convincersi poi di essere diventati sviluppatori (questi sono fra i peggiori).
Alla fine questo approccio ha iniziato a mostrare i suoi limiti ma in pochi hanno avuto il coraggio, i soldi o le capacità di riscrivere le applicazioni.

Il disastro viene con il cloud

La scalabilità veritcale non esiste, le applicazioni devono essere disegnate (o convertite) per ragionare con architetture che spesso sono stateless e dove non sono previsti meccanismi per gestire il fail (cluster HA). Infine, ultimo ma non ultimo, si paga per quello che si consuma!
Quindi, per godere dei vantaggi del cloud è necessario conoscere a fondo l’architettura dei diversi cloud provider e delle architetture cloud in genere… cosa che gli sviluppatori tradizionali spesso ignorano!

La mancanza di cultura

Di cultura se ne trova poca, crearla o condividerla costa… gli imprenditori e le software house si guardano bene dall’investire (spesso i gestionali sono stati sviluppati negli anni 80 e 90 e ora chi aveva fatto il lavoro è vecchio e guarda più a monetizzare il più possibile e puntare alla pensione piuttosto che fare nuovi investimenti (magari investimenti sui giovani)!
E’ vero c’è internet, quindi il giovane sviluppatore potrebbe anche “autoformarsi” ma, da un lato capisco sia comunque difficile, dall’altro ha un costo.
Inoltre, e questo è un dato di fatto, è inutile pensare di investire personalmente per diventare uno vero “sviluppatore per il cloud” quando poi non si ha la possibilità di mettere a disposizione il proprio sapere ed essere valorizzati per per le proprie capacità: l’entusiasmo si spegne presto se non lo sia alimenta con sfide e successi!

Nota finale

ok, ho lanciato la provocazione e ci tengo a precisare che non sono uno sviluppatore (mi sono dedicato ad altro già da tanti anni dopo aver fatto le mie esperienze su Assembler, C, Basic e un po di scriptame con diverse shell… e, forse, dopo aver capito che non ero un granché in quel ruolo).

Se ci sono degli sviluppatori che mi leggono vorrei il loro punto di vista su quello che ho scritto e magari anche quello di qualche imprenditore del software.
Ogni commento è sempre il benvenuto.