Al giorno d’oggi diventare uno sviluppatore fullstack richiede competenze in diversi ambiti della programmazione. Chi si avvicina a questo mondo sarà capace di produrre applicazioni server-side e client-side in grado anche di interagire tra loro. Se stai cominciando a muovere i primi passi in questo settore avrai notato che non è semplice trovare la via giusta da seguire per imparare ed ottenere risultati.

L’obiettivo di questo articolo è infatti quello di illustrare in modo molto semplice qual è la strada da intraprendere per diventare uno sviluppatore full stack.

Le basi

Le fondamenta della programmazione web sono senz’altro due: HTML e CSS. Con il linguaggio HTML (Hypertext Markup Language) definirai la struttura delle tue pagine web mentre tramite le istruzioni CSS (Cascading Style Sheets) aggiungerai un po’ di stile al sito. Conoscere almeno le basi di questi due semplici linguaggi è fondamentale per seguire il cammino di uno sviluppatore web.

Linguaggi di programmazione lato client

Andiamo ora appena un po’ oltre. Avrai notato come molti siti abbiano un comportamento per lo più dinamico rispetto ad una semplice pagina HTML. Questo è possibile aggiungendo un livello in più al tuo codice, ovvero JavaScript (o TypeScript).

JavaScript, come HTML e CSS, diventerà molto importante per te giorno dopo giorno. Ti accorgerai presto della sua estrema utilità  ed è alla base dei più famosi framework client side come Angular, React, Vue. JavaScript è un’implementazione dello standard ECMAScript  ed è molto semplice da apprendere. Per questo motivo si tratta di un linguaggio che cresce e si evolve in funzione dell’avanzamento dello standard.

Probabilmente avrai già sentito parlare di ES2015 o ES2017 queste sono proprio le evoluzioni del linguaggio. Ricorda che imparare a destreggiarsi bene con JavaScript ti permetterà  di scrivere codice migliore ed inoltre, come vedrai più avanti, ti darà  la possibilità di programmare lato server usando NodeJs.

TypeScript Si tratta di un linguaggio fondato su JavaScript, con l’aggiunta di alcune funzionalità come l’annotazione dei tipi, classi, interfacce. Tutto ciò che scrivi in Javascript sarà valido anche se lanciato in TypeScript. Il codice finale sarà compilato in JavaScript.

Frontend Framewokrs

Vediamo ora alcuni framework lato client. Ma cerchiamo prima di spiegare di cosa si tratta.

Un framework è uno strumento che semplifica lo sviluppo di siti o web app, mettendo a disposizione un certo numero di funzionalità che si occuperanno di svolgere automaticamente parte del lavoro che altrimenti andrebbe gestito dallo sviluppatore. Utilizzare un framework richiede comunque una conoscenza piuttosto approfondita del linguaggio sul quale esso si basa (per esempio JavaScript).

Prima di scegliere un framework dovrai capirne la struttura che esso implementa e, sulla base delle tue necessità, deciderai quale sarà il più adatto alla tua applicazione.

React

Proveninente dal team di sviluppatori Facebook, è un framework per la creazione di interfacce, basato sull’utilizzo di componenti che possiedono un proprio stato. React effettua il render di ogni singolo componente nel momento in cui questo aggiorna i propri dati. Scrivere applicazioni con quest framework è perciò abbastanza semplice dal momento in cui l’unione di componenti, anche a più livelli, è esattamente ciò per cui React è stato pensato.

Inoltre, creare single-page apps è altrettanto intuitivo usando il modulo react-router, performante e di facile apprendimento. Potrai anche costruire applicazioni più complesse utilizzando Redux, una piccola libreria che permette di centralizzare la gestione degli stati.

Angular

E’ uno dei framework più conosciuti. Permette la creazione di applicazioni client e delle cosidette single-page app.

Angular mette assieme la dependency injection (DI), la possibilità di dividere il codice in moduli e di definire dei template. Ha inoltre un compilatore AoT (ahead of time compilation) che lo ha reso famoso nelle sue ultime verisioni in quanto i tempi di rendering si abbassano notevoltmente e lo script finale risulta molto più leggero.

E’ un progetto in piena evoluzione e sostenuto da Google.

Vue.js

Un framework giovane che si è subito distinto tra gli utenti. Non a caso è in continua crescita e gli sviluppatori lo utilizzano sempre di più, soprattutto per piccole applicazioni. Molto semplice da imparare e con una comunità  in crescita.

Server

NodeJs

Anche le applicazioni più semplici potrebbero aver bisogno di interagire con un server. Ad esempio potresti avere la necessità  di registrare delle informazioni su un database. Potresti aver bisogno di recuperare o salvare dei file o, perchè no, di creare una chat tra utenti. Tutto questo porta allo sviluppo di un server.

Negli anni passati la maggior parte dei programamtori web conosceva PHP, un linguaggio server side di facile apprendimento e che svolgeva abbastanza bene i propri compiti. Oggi le cose sono un po’ cambiate, PHP è sempre molto utilizzato e si evolve ma da alcuni anni è emerso NodeJs. Si tratta di un runtime JavaScript che permette l’esecuzione di codice lato server.

Il sito ufficiale  dice: “As an asynchronous event driven JavaScript runtime, Node is designed to build scalable network applications”. Come dicevamo all’inizio conoscere JavaScript è fondamentale. La semplice gestione dei moduli permette di creare applicazioni davvero molto complesse che possono gestire una grande quantità di casistiche.

Alcuni fra i più famosi moduli sono Express (gestione del routing), MongoDb (database mongodb), Socket.io (gestione dei websocket server-browser).

Oggi è fondamentale saper utilizzare NodeJs per essere appieno uno sviluppatore fullstack.

Altri strumenti

Esistono tanti altri piccoli strumenti (ma di certo non meno importanti) che garantiscono qualità e funzionamento al prodotto finale. Ne elenchiamo alcuni:

  • Gulp, strumento per la gestione di tasks. Lo utilizzerai se avrai la necessità di automatizzare alcuni processi prima del deploy, come la minificazione del codice e tanto altro ancora.
  • Webpack, sarà fondamentale per compilare il tuo codice JavaScript, React o di qualsiasi altro framework in un sorgente interpretabile dal browser.
  • Linter, se vorrai rispettare degli standard per rendere il tuo codice più leggibile, comprensibile e qualitativamente migiore. Testare il codice è fondamentale per prevenire potenziali bug e assicurarsi che quanto hai scritto corrisponde ai prerequisiti. Ci sono diversi metodi di testing in base alle necessità (test unitari, test funzionali) ed esistono molti moduli che ti aiuteranno a scrivere dei test, in base al linguaggio di programmazione e ai framework che stai utilizzando.
  • Git, lo userai sicuramente per gestire le versioni delle tue applicazioni
  • Software di project management. Saranno utili a gestire il tuo progetto nella sua globalità.

Conclusioni

Avrai certamente notato che il mestiere dello sviluppatore web non richiede soltanto la conoscenza di alcuni linguaggi di programmazione, framework e software. Cerca di utilizzare parte del tuo tempo per fare ricerche e approfondire le tue conoscenze. Ma soprattutto, prima di iniziare i lavori per una nuova applicazione, cerca di stilare un progetto che descriva al meglio le tue necessità (vedi Progettare per guadagnare denaro e tempo prezioso) e che risponda pienamente al problema che stai cercando di risolvere. In questo modo potrai decidere quali sono le tecnologie che fanno al caso tuo e potrai concentrarti sullo sviluppo.

Se questo articolo ti è piaciuto lascia un like e condividilo per sostenerci e aiutarci a scriverne di nuovi!