Sommario
  1. Storia del Web
  2. I 12 Ruoli del Web
  3. Full Stack Developer
  4. Software Lyfe Cycle
    1. Ritardi nel Ciclo
    2. Gestisci quello che Costruisci
  5. Full Cycle Development
    1. Come Evitare il Burn Out?
  6. Limiti del Full Cycle
    1. Le 3 Forze del Successo
    2. Scopri quanto è Facile il Full Cycle Development con GatsbyJS
    3. Full Cycle Development con Kubernetes e Ambassador
  7. DesignThinking

Full Cycle Development

Muoversi Agilmente dal Planning al Marketing attraverso il DevOps

Realizzare un'idea non é solo ricerca, design, sviluppo e marketing.

Lo scopo del ciclo di vita di un'idea è ottimizzare il "time to value" per convertire efficacemente le idee in prodotti e servizi funzionanti per i clienti. Lo sviluppo e l'esecuzione di un servizio comporta una serie completa di responsabilità.

Il ciclo di vita di un'idea, un sito web, un canale YouTube, non è un percorso lineare da A a B, ma un ciclo appunto, o meglio una spirale che si avvolge su se stessa.

Infatti nell'industria informatica, molto attenta gli standard ed alle metodologie di business development (ed in particolare le metodologie di sviluppo Agile e Rapido), si è affermata la filosofia DevOps il cui simbolo è l'infinito che imprime al simbolo del ciclo un movimento iperdimensionale, come di una spirale che si autoalimenta all'infinito.

Infografica DevOps Loop

Con la filosofia DevOps, il Full Stack Developer diventa ancora più Agile inoltrandosi nel regno del Full Cycle Development.

Storia del Web

Ma prima di inoltrarci negli arcani del Full Stack e del Full Cycle, e per meglio comprendere di che bestie stiamo parlando, facciamo un breve riassunto dello sviluppo web con le pietre miliari dei suoi primi 30 anni di vita:

www.evolutionoftheweb.com

  • 1981: Nasco Io 🥳
  • 1991: Nasce Internet
  • 1992: HTML
  • 1993: MTV online
  • 1994: Yahoo, Amazon e prime pubblicità
  • 1995: eBay, Windows 95 e la battaglia JavaScript vs Internet Explorer
  • 1996: Hotmail e Nokia 9000 come primo cellulare con connesione internet
  • 1997: Netflix appare come azienda
  • 1998: Google
  • 1999: CSS e PHP 4.0
  • 2000: Picco di crescita dell'economia .com
  • 2001: Wikipedia
  • 2002: Wi-fi ed Xbox Live
  • 2003: WordPress, LinkedIn e Skype
  • 2004: MySpace e Firefox
  • 2005: GoogleAnalytics, Reddit e YouTube
  • 2006: AWS, Facebook, Twitter, Google acquista YouTube
  • 2007: MAMP ed altri tools per lo sviluppo
  • 2008: Mobile Era: iPhone, Apple store, Google Chrome e HTML5
  • 2009: Flickr, GitHub, Cloud Computing e Responsive Design
  • 2010: DevOps, Quora, Pinterest e Instagram
  • 2011: MicroServices
  • 2012: Inbound Marketing, Facebook acquista Instagram
  • 2013: Docker
  • 2014: Kubernetes, Facebook acquista WhatsApp
  • 2015: TicTok
  • 2016: Growth Marketing
  • 2017: Influencer Marketing
  • 2018: Full Cycle Development
  • 2020: Boom E-Commerce/E-Learning
  • 2021: ???
Infografica Storia del Web

Il termine “web development” é stato coniato nel 1999 da Darcy DiNucci e reso popolare nel 2004 da Tim O’Reilly e Dale Dougherty.

In questo periodo full stack development è sinonimo di web development.

È da poco uscito WordPress, e lo sviluppo web avviene tramite FTP su server live ma si sente la mancanza di strumenti che aiutano noi sviluppatori a non commettere errori in produzione.

Nel 2007 appaiono tools come MAMP che consentono di replicare localmente un ambiente di sviluppo e permettono allo sviluppatore di divenire realmente Full Stack: HTML + CSS + JS + PHP + database + server.

Nel 2008 l'avvento dell'iPhone apre l'Era Mobile delle apps e con essa l'esigenza di strumenti e metodologie di Sviluppo Agile e Rapido.

Nel 2010, con l'Era del Cloud, il termine DevOps comincia pienamente a circolare negli ambienti di sviluppo Agile.

Nel Marzo del 2011, nei pressi di Venezia, un gruppo di architetti del software usano il termine microservizio per definire un nascente stile architettonico dei sistemi informatici.

Nel 2013, sotto la spinta della necessità di orchestrare le nuove architetture software basate sui microservizi, Docker innaugura l'Era dei Container aprendo la strada a Kubernetes ed al continuous terraforming di eserciti di cloni di macchine virtuali per tenere il passo con la bulimica crescita del volume di informazioni digitali che ci scambiamo (YouTube, DAZN, Netflix, TicTok) e la sua ulteriore esplosione che partirà col 5G.

Gli ultimi anni vedono un incremento del ruolo dei socials con i suoi influencers e di Big Data come traino per il Design di App sempre più coinvolgenti, o come nel caso del recente TicTok direi "ossessive".

I 12 Ruoli del Web

Spero di essere stato sufficientemente sintetico con le lezioni di storia. Adesso possiamo continuare il nostro approccio al Full Cycle Development riassumendo i ruoli del web.

Chi disegna un sito web, o anche la copertina di un post per la campagna pubblicitarià di un progetto, dovrebbe essere a conoscenza dei ruoli e dell'intero processo produttivo, altrimenti rischia di perdere di vista il motivo stesso del suo lavoro.

Ecco un riepilogo dei ruoli per fare un sito web che funzioni, un sito Agile, che si adatti ai cambiamenti e alle esigenze del mercato:

  • 1 Architetto/Digital Strategist:

    • Product Design, Branding e Comunicazione
  • 2 Project Manager:

    • Agile, Scrum, Kanban ed altre metodologie per la gestione dei progetti
  • 3 UI/UX e Interaction Designer:

    • Realizzazione dei Prototipi di interfacce e interazione
  • 4 Web Designer:

    • Trascrizione dei Prototipi in codice HTML, CSS e JS
  • 5 Sviluppatore e Configuratore di App e Sistemi:

    • Connessione a Facebook, Instagram, Analitycs ed altri Database
  • 6 Tester e Garante della Qualità:

    • Convalida, Test Unitari e Funzionali, Documentazione
  • 7 DevOps:

    • Continua Integrazione e Continua Distribuzione di aggiornamenti
  • 8 Sistemista:

    • Gestione, backup, ripristino e scalabilità dei server
  • 9 Help Desk:

    • Monitoraggio, analisi e correzione Bug
  • 10 Digital Marketer:

    • SEO, SEM, PPC, SocialMedia, Influencers, Growth
  • 11 Content Creator:

    • Copywriting, audio/video virali, post e storie
  • 12 Business Analyst e Data Scientist:

    • Ottimizzazione ed implementazione di nuove funzionalità

Full Stack Developer

Adesso che abbiamo ricapitolato gli ultimi 30 anni di internet ed elencato i ruoli del web development possiamo vedere quali di questi ruoli sono di competenza del Full Stack Developer. Secondo il seguente articolo su HackerNoon, uno sviluppatore full stack è:

"[…] un ingegnere[/artista] in grado di gestire tutto il lavoro di database, server, ingegneria dei sistemi e clients.

Infografica Full Stack Developer

Dal Front-end al Back-end, quindi, con tutte le connessioni ai database e gli altri servizi necessari per il funzionamento di un app, il full stack developer può soddisfare tutte le esigenze tecniche richieste per portare un'idea sul mercato.

Software Lyfe Cycle

La prima comparsa del termine Full Cycle Development la si trova in un post del 2018 sul blog tecnico di Netflix, e la seguente parte di questo articolo è un estratto della traduzione (molto libera) di questo post:

Con 125 milioni di utenti sparsi intorno al globo che godono di oltre 140 milioni di ore di visione al giorno, le sfide che deve affrontare Netflix non sono poche, ma per quanto fantascientifiche possano sembrare, esse sono anche pionieristiche, battendo le nuove rotte dello sviluppo del futuro.

Un futuro che come abbiamo visto (rileggi le date che ti ho scritto sopra!), arriva e ci sorpassa velocissimo.

Il ciclo da completare a cui fa riferimento l'articolo è il ciclo di sviluppo di un'idea, il cui scopo è ottimizzare il "time to value" per offrire efficacemente valore agli utenti.

Attorno a questo cerchio danzano sei competenze/ruoli specializzati:

  1. Design/Architetto
  2. Develop/Developer
  3. Test/SDET
  4. Deploy/Release Enginer
  5. Operate/Sys Admin
  6. Support/Customer Support

Ritardi nel Ciclo

Questi ruoli specializzati aumentano l'efficienza all'interno di ogni singolo segmento ma aumentano anche il rischio di inefficienza dell'intero ciclo in quanto per poter essere di valore per il cliente, il software deve passare attraverso tutti i livelli.

Per alleggerire questo collo di bottiglia, Agile e DevOps suggeriscono la creazione di team multidisciplinari, ma anche in questo caso, la comunicazione tra i diversi membri del team introduce gli stessi colli di bottiglia.

Gestisci quello che Costruisci

DevOps ha anche un altro asso nella manica.

Guardando al suo simbolo dell'infinito, li dove Dev e Ops si fondono, si esprime il mantra del DevOps: Learning e Feedback!

Quando lo sviluppatore di un sistema diventa responsabile anche del funzionamento e del supporto di quel sistema (invece di esternalizzare questa responsabilità), crea un feedback diretto con il quale puó ottimizzare il processo stesso di sviluppo.

Avvertendo in prima persona le difficoltà operative acquisisce il sapere che gli conferisce di alleviare gli stress modificando il design o il codice del sistema.

Ogni sviluppatore diviene consapevole dei problemi nella messa online, bug nelle prestazioni, esaurimento della memoria, mancanza di monitoraggio e supporto e così via.

Full Cycle Development

Gli sviluppatori Full Cycle applicano la disciplina Agile a tutte le aree del ciclo di vita. Valutano i problemi dal punto di vista dello sviluppatore e pongono questo tipo di domande:

  • come posso automatizzare questo processo?

  • quale strumento risponderà ai miei partner senza il mio intervento?

Questo approccio aiuta a scalare ogni processo focalizzando il design sull'automazione dei sistemi piuttosto che sull'aumento delle risorse manuali.

Passare a questo modello di sviluppo richiede un cambio di mentalità.

Spesso gli sviluppatori considerano la progettazione e lo sviluppo, e talvolta i test, come il modo principale per creare valore.

Ciò porta all'anti-pattern di vedere le operazioni come una distrazione, favorendo soluzioni rapide ai problemi operativi e di supporto in modo da poter tornare presto al proprio "vero lavoro". Ma il "vero lavoro" degli sviluppatori Full Cycle consiste nell'utilizzare la propria esperienza nello sviluppo di software per risolvere i problemi durante l'intero ciclo di vita.

Come Evitare il Burn Out?

Per poter gestire questa complessità bisogna lavorare su alcuni requisiti:

  • Sono necessari strumenti in grado di assistere la distribuzione, i problemi in produzione e le richieste di supporto.

  • Molto tempo deve essere dedicato alla formazione.

  • Gli strumenti devono essere utilizzati e ci si deve investire sù.

  • Bisogna favorire la collaborazione tra gli sviluppatori per riutilizzare i componenti e le soluzioni.

  • Tutti i punti del ciclo di sviluppo devono essere considerati durante le fasi di pianificazione e le retrospettive.

  • Bisogna investire parte dello sviluppo nell'automazione delle risposte ai feedback e parte nello sviluppo di strumenti self service per gli utenti.

Limiti del Full Cycle

Questo modello di sviluppo richiede una conoscenza molto ampia di strumenti e linguaggi.

Non tutti gli sviluppatori hanno questo tipo di attitudine, alcuni preferiscono iperspecializzarsi su un campo specifico, e questa iperspecializzazione é fondamentale in determinate aree di sviluppo.

Altri sviluppatori apprezzano l'ampiezza di respiro offerta dalla visuale sull'intero ciclo. Ma questa ampiezza aumenta il carico cognitivo dello sviluppatore.

Una buona gestione e rotazione delle responsabilità mitiga questi problemi.

Qui termina la traduzione libera e sintetica dell'articolo sul blog tecnico di Netflix.

Le 3 Forze del Successo

Adesso facciamo qualche passo avanti giocando un po' con forme e colori.

Ricapitolando quando appreso fino ad ora dalla storia del web e dalle ultime tendenze suggerite da Netflix possiamo immaginare che per materializzare una visione bisogna equilibrare la forza attiva dello sviluppo con la capacità di adozione del mercato.

Infografica Full Cycle Development

Marketing e Progettazione devono quindi essere visualizzati contemporaneamente.

Alla base di questi due movimenti si fonda il ciclo infinito del Dev/Ops che continuamente sviluppa la visione in nuovo valore che gli utenti possono adottare.

Infografica Full Cycle Development

Il piano per procedere dalla visione allo sviluppo prevede l'analisi del mercato ed il disegno del prodotto da realizzare.

Il ciclo Dev/Ops fornisce una continua distribuzione di nuovo valore attraverso il testing automatico del prodotto sviluppato.

La comunicazione attiva con gli utenti fornisce ulteriori possibilità di assistere ed innovare la visione.

Infografica Full Cycle Development

Quindi Ricapitolando:

  • Pianificazione: Fase concettuale riguardante il business e gli obiettivi
    • Visione - Desiderabile | Ragiungibile | Sostenibile
    • Analisi - Interviste agli Stakeolders e Posizionamento sul Mercato
    • Design – Prototipazione di Interfacce Utente e Design dell'interazione
  • Dev/Ops: Processo di produzione dei servizi
    • Sviluppo – Scrittura del codice, integrazione con sistemi esterni
    • Test e Q. A. – Validazione dei requisiti e della correttezza tecnica
    • Distribuzione – Server fisici o virtuali che ospiteranno il prodotto
  • Marketing: La terza vita del prodotto, dall'adozione al riciclo
    • Adozione - Strategie di Marketing e Crescita
    • Assistenza – Monitoraggio e Ottimizzazione dell'esecuzione
    • Innovazione – Implementazione di aggiornamenti e nuove funzionalitá
Infografica Full Cycle Development

Sembra un albero di Natale

Ma non dimentichiamo che è un ciclo

Infografica Full Cycle Development

O meglio tre forze costantemente in relazione ciclica tra loro.

Infografica Full Cycle Development

Wow! Sei arrivato fino a qui?

Spero tu senta nascere in te il desiderio di provare queste metodologie oltre a quel senso di mal di mare che tutti questi giri ci possono aver lasciato, a ben vedere potrebbe trattarsi di mal di terra.

In ogni caso non credere che tutto questo sia troppo fantascientifico o fuori dalla tua portata, del resto sono passati ormai ben due anni da quel blog post di Netflix, tra poco questa roba diventa pure vecchia!

Se ti è piaciuto questo post mandami un messaggio, ti avviserò quando saranno pronti i prossimi:

Scopri quanto è Facile il Full Cycle Development con GatsbyJS

E per i più audaci:

Full Cycle Development con Kubernetes e Ambassador

Bonus:

DesignThinking