Concetti di Base:
Credo sia utile ripassare qualche termine, prima di addentrarci nel percorso specifico. Iniziamo quindi ad avere un’idea di cosa si intende per:
SVILUPPO WEB
Per SVILUPPO WEB si intende l’azione di ideare, progettare, realizzare e gestire le interfacce con la quale le persone fisiche e le macchine comunicano tra loro.
Ma non solo. È contemplata anche la realizzazione delle procedure con la quale le macchine possono essere in grado di comunicare tra loro, attraverso l’invio e la ricezione di pacchetti di dati, che al loro interno custodiscono le informazioni.
Questa struttura ha uno schema concettuale simile alle trame di una rete da pesca.
Oppure, come è stata definita dai suoi creatori, ha la parvenza di una ragnatela.
Il termine Ragnatela in inglese si dice: WEB Pertanto l’acronimo W.W.W. che sta per “World Wide Web” significa proprio:
“Ragnatela estesa in tutto il Mondo“.

Come hai modo di osservare, essa è composta da linee che si convergono tutte verso un unico centro, ed altre che le incontrano, quasi a formare dei cerchi, dalla circonferenza variabile sempre più piccola, mano a mano che si avvicinano verso il centro.
Il punto ove le due linee si incontrano (si intersecano) viene definito: NODO
In informatica lo schema è simile.

Solo che i NODI sono rappresentati dai nostri dispositivi con la quale andiamo su Internet.
Sviluppare applicativi web, come dicevo, significa permettere a questi dispositivi di entrare in relazione tra loro e inoltre di avere noi il controllo su di essi, avendo la possibilità di comunicare a loro le nostre direttive.
Esistono diverse forme di Rete.
C’è quella decentralizzata, riportata in (figura 2). Oppure la rete centralizzata, (figura 3).

Ormai è di gergo comune sentir parlare di Bitcoin, moneta digitale, ecc.
Bene sappi che il mondo delle cripto valute si basa su un sistema di rete decentralizzato (figura 2).
Quando invece sentiamo parlare di Netflix, Sky sport, YouTube, ecc. Ci connettiamo in un sistema di rete centralizzato (figura 3).
“Cosa significa?” Ti starai chiedendo.
Bene, te lo spiego partendo dalla (figura 3) ossia dal concetto di SISTEMA DI RETE CENTRALIZZATO.
Abbiamo una Macchina centrale, sempre accesa (24 ore su 24, sette giorni su sette) concedibile a tutti.
E poi ci siamo noi con i nostri dispositivi che vorremmo connetterci ad essa. Ad Esempio perché vogliamo vedere un film su Netflix.
Quella macchina centrale, accesa h24 e 7/7, è il vero aspetto di Netflix. Senza di essa il suo archivio di film e serie TV non esisterebbe. (figura 4)

Questo tipo di macchina, potremmo definirla anche unità o computer oppure calcolatore. Insomma di nomi ne ha molti. Ma il più congeniale è il termine SERVER.
Il Server in realtà è una caratteristica che si conferisce ad un dispositivo, quando vogliamo che esso funga come distributore di dati.
Qualsiasi dispositivo munito di scheda di rete, può essere usato anche come un server, purché abbia installato nel suo sistema operativo i software necessari per renderlo tale.
Pertanto anche i nostri dispositivi potrebbero essere dei server, ma a questao ci arriveremo più in là.

Quindi il Server Netflix contiene al suo interno i film e le serie TV che noi vogliamo consultare. Per farlo, oltre che abbonarci ecc..colleghiamo il nostro dispositivo ad un provider (ossia un altro computer che ci fornisce i permessi di accesso alla rete). Tramite questa connessione, possiamo avviare l’applicazione di Netflix

e tramite la sua interfaccia, comunichiamo con il Server, esponendo la richiesta.
Il Server la elabora e restituisce il risultato.
In questo caso siamo stati fortunati, il film c’è e possiamo vederlo.
I dispositivi che si connettono ai Server, invece vengono definiti CLIENT, in italiano Cliente: ovvero:”Colui che richiede qualcosa” un bene o un servizio.
Quindi ricapitolando:
Un sistema di rete centralizzato coinvolge un dispositivo centrale, detto server, che concede dei dati a dei dispositivi client che si connettono ad esso, per riceverli.
In un SISTEMA DI RETE DECENTRALIZZATO invece, come hai visto in (figura 2), manca il ruolo del dispositivo centrale. Ma il server c’è. Anzi per meglio dire, ci sono!
Per fartelo capire in modo semplice, ti chiedo:
Ti ricordi eMule?

Quando interrogavi il suo pannello di ricerca della sua interfaccia, lui ti cercava la risorsa e poi ti permetteva di scaricarla, connettendoti a tanti altri computer. Questo perché la risorsa era stata frammentata e distribuita in tutti i dispositivi che componevano quella sottorete.
Quindi anziché attingere la risorsa da un’unico dispositivo, in questo sistema di rete, l’informazione è frammentata e distribuita in tutti i dispositivi connessi alla sottorete, tra cui anche il tuo.
Questo fa si che tutti i dispositivi connessi a quella rete possono e devono essere necessariamente sia Client che Server. Decentralizzando l’informazione.
Un sistema identico lo possiamo trovare nella sottorete Torrent:

Oppure nelle ‘moderne’ blockchain come il famoso Bitcoin.

Tutte queste operazioni vengono ideate, progettate, realizzate e gestite dalla figura professionale dello sviluppatore web o anche detta Web Developer.
Ora, questa figura professionale può suddividersi in tre sotto categorie:
SVILUPPATORE FULL-STACK !!!
Detto anche Sviluppatore web o in inglese Web Developer. Si occupa di tutto ciò che riguarda la progettazione dei sistemi di rete. Venendo coinvolto sia nelle operazioni di BACK-END che di FRONT-END. Qui si richiede professionalità, serietà e capacità. È un impiego ben retribuito. Ma si hanno, sulle proprie spalle, molte responsabilità.
Sarà una bella sfida per chi avrà il fegato di finire questo corso formativo. Sarà dura arrivare al cospetto dell’ultimo concetto. Ma vi assicuro che infine gli sforzi saranno ben ripagati.

Invece se capisci di essere più portato/a per una categoria rispetto che l’altra, puoi sempre specializzarti in una anziché l’altra.
Per esempio, potresti concentrarti sul ruolo dello SVILUPPATORE BACK-END.
Per BACK-END si intende la progettazione e la gestione delle connessioni che avvengono fra server e che non coinvolgono le persone.
Quindi ti verrà chiesto di sapere i linguaggi come il Ruby oppure il Pyton; il Java o il PHP.
E di saperli mettere in relazione con l’SQL, ossia il linguaggio tipico dei Server, mezzo con il quale si interroga il Database.
Non guadagneresti all’anno 33.900€, però il compenso medio di uno SVILUPPATORE BACK-END ammonta a:

Se ti interessa di più progettare le interfacce con la quale i server si rapportano con le persone. Potresti optare per specializzarti in SVILUPPATORE FRONT-END.
Si occupa di tutta la parte visiva e interattiva che viene messa a disposizione del pubblico (ovvero noi persone).
Detto in gergo più tecnico, si occupa di progettare e gestire le strutture ideali che formeranno le pagine dei siti web o delle interfacce di applicazioni e software.

Siamo quasi giunti alla fine con la mia esposizione dei concetti di base. Ne restano giusti due o tre, che andrò a trattare immediatamente, ponendoti questa domanda:
Che cosa si intende per interfaccia?
Risposta:
Sia che è destinata ad un sito web oppure ad un’applicazione per dispositivi mobile o ad un software per PC, essa è sempre una sorta di scatola che contiene cose.

Queste cose possono essere unicamente tre tipologie di oggetti. Ossia:
Contenuti testuali:
come titoli, paragrafi, didascalie, ecc.
Contenuti ipertestuali:
come collegamenti a link esterni, tasti, ecc.
File multimediali:
come immagini, video, audio, documenti, ecc.
Il FRONT-END DEVELOPER ha il ruolo di progettare l’intestazione delle pagine che compongono l’applicazione, il sito o il programma e inoltre, colloca questi tre strumenti a seconda dell’impostazione che ha deciso di volergli dare oppure che prevede la commissione aziendale che lo ha assunto.
ATTENZIONE !!! IMPORTANTE !!!
Non confondere il ruolo del Front-End Developer con quello del Web Designer, perché hanno permessi diversi.
Per capire bene la distinzione, basta ricordare questa frase:
“SE NON VI FOSSE STATO UN FRONT-END DEVELOPER A PROGETTARE IL TASTO INVIO, IL WEB DESIGNER NON AVREBBE OGGI POTUTO CAMBIARNE IL COLORE.“
Significa che il Front-End Developer progetta e realizza le funzionalità che costituiranno il sito, l’applicazione o il software…
Il web designer invece si occupa solo di modificare l’aspetto grafico in base alle funzionalità che il Front-End Developer gli ha messo a disposizione.
Il Web Designer non può implementare nuove funzionalità dell’interfaccia web.
Quindi mentre il Front-End Developer potrebbe svolgere le stesse mansioni del web designer, cambiando l’aspetto del progetto anche dal punto di vista grafico.
Un Web Designer NON può svolgere le stesse mansioni di un Front-End Developer.
FINE LEZIONE – STARTER
a cura di Giuseppe Gioia
