sviluppo webcoder

Sviluppo Web

Realizzare un sito o un'applicazione Web non è mai così semplice, tuttavia esistono tantissimi modi per farlo, con svariate tecnologie e  strumenti che possono essere utilizzati.
Qui sotto elenchiamo una lista dei metodi e degli strumenti più utilizzati nel campo dello sviluppo web.  
Ma prima di far questo dobbiamo distinguere due tipologie di sviluppo; giacché abbiamo a che fare con l'architettura web, parliamo senza dubbio di architetture client-server: questo genere di architettura che lavora su protocollo http con un client(Browser) ed un server(Web Server) che ritorna un contenuto di ipertesto al client che effettua la richiesta, mette sul tavolo, come si può immaginare, tecnologie che si integrano dentro i software client, cioè i browser, e che lavorano su di esso per restituire dei contenuti visivi attraverso l'interfaccia utente, all'utente finale, ma anche tecnologie che lavorano sul lato server, come gli interpreti dei linguaggi di programmazione, le interfaccia di programmazione varie, i supporti per i database relazionali, i supporti che possono integrare e implementare altre funzionalità tramite varie API, che vengono invece implementate dal web server, cioè il software che gestisce e risponde alle richieste del client, dal lato server.
Da quanto descritto si può capire come sia abbastanza complessa e variegata un'architettura web.
A tal fine, per semplificare, possiamo distinguere due grandi gruppi di sviluppo:

- Lo sviluppo di FrontEnd che riguarda tecnologie prettamente legate ai client: html, css, javascript...;
- Lo sviluppo di BackEnd per lo più legato a tecnologie di lato server: php, ruby, python, java,asp.net... database relazionali:mysql, sqlserver, oracle... 
Quindi alla stregua del discorso di cui sopra, possiamo distinguere, anche se il confine non è mai così netto, sviluppatori che lavorano su lato frontend da quelli di backend, chiamando i primi Frontend Developer, i secondi Backend Developer; per lo stesso principio,  uno sviluppatore che invece lavora su entrambi i fronti, non essendo specializzato in nessuno dei due, è definito Full Stack Developer. Per mia natura avendo frequentemente avuto pochi collaboratori nei miei progetti, ho dovuto lavorare spesso su entrambi i fronti, e utilizzare tecnologie e linguaggi di programmazione di entrambi i fronti, quindi sarei definito come un Full Stack Developer anche se la mia natura è di Backend Developer in quanto programmatore di Php, C e Python.

Sviluppo FrontEnd

Vi sono molti strumenti utili nello sviluppo fronted di un sito web, qui sotto ne riportiamo solo alcuni dei più comuni:
  •  WYSIWYG, applicazioni, spesso utilizzate dai designer di interfacce grafiche, dove l'acronimo sta per l'inglese What You See Is What You Get ("quello che vedi è quello che è" o "ottieni quanto vedi"), software quindi utilizzati per creare pagine statiche in html e interfacce grafiche: esempio frontpage o dreamweaver, sono alcuni rappresentanti di questo filone, spesso questi strumenti sono integrati  negli editor dei CMS.
  • Content Management System software, meglio noti sotto il nome dell'acronimo CMS,  che permettono all'utente sviluppatore o al webmaster di risparmiare tantissimo tempo nello sviluppo di numerosissime applicazioni, soprattutto qualora si dovesse trattare di siti piuttosto comuni o con funzionalità richieste frequentemente e dove le performance non siano del tutto necessarie.  Tra questi CMS, annoveriamo software, come i ben noti: wordpress, joomla e drupal. Questi Cms inizialmente erano nati per gestire pagine web statiche e blog dinamici, mentre Magento Pestashop e altri ancora... furono sviluppati per la gestiione di piattaforme ecommerce. Con il passare del tempo questi prodotti, di cui la maggior parte open source, hanno implementato la possibilità di essere estesi via via con l'utilizzo di plugin e moduli fino alla creazione di  vere piattaforme globali in grado di creare ad hoc qualsiasi tipo di applicazione/sito webQuesti strumenti dotati di interfacce user-friendly come gli editor e i wysiwyg che supportano, sono utilizzati sia da sviluppatori backend, che molto spesso implementano nuove funzionalità attraverso plugin per estenderli, ma anche da sviluppatori di frontend che si occupano di realizzare le vesti grafiche dei temi che supportano, e soprattutto dai webmaster, che pur non essendo sviluppatori sono tuttavia in grado di amministrarli sfruttando a pieno le loro risorse.
  • Tecnologie e programmazione Lato Client;
  • framework e librerie: jquery, bootstrap, angularjs, react...
Tecnologie e Programmazione Lato Client
  • AJAX,  una tecnologia javascript per le chiamate asincrone sul server.
  • WebSocket, tecnologia web implementata sui browser moderni che attraverso un protocollo standard RFC 6455 permette connessione full-duplex tra client e server.
  • Adobe Flash Player onnipresente piattaforma client-side.
  • JavaScript, una delle tecnologie principali e note lato client;

Sviluppo Backend:

Anche sul lato backend disponiamo di strumenti e tecnologie piuttosto numerose, qui sotto elenchiamo alcuni degli strumenti più utilizzati:
  • IDE, ossia un software che integra al suo interno diversi strumenti utili allo sviluppatore, come editor, debugger,compilatori etc. Ci sono tantissime IDE, sviuluppate per vari ambienti , sia private che open source, tra le più famose, utilizzate in ambito web abbiamo: Eclipse, Netbeans, Visual Studio...;
  • Software per caricamento e distribuzione: composer, client ftp, github;
  • framework lato server: zend, laravel, symphony, cakephp, yii framework, phalcon...
  • Tecnologie e programmazione lato server;
  • Strumenti di amministrazione di database: phpmyadmin, workbench...


Tecnologie e Programmazione Lato Server
  • ASP 
  • ColdFusion 
  • CGI e/o Perl (open source)
  • Java, Java EE o WebObjects
  • PHP 
  • Python 
  • .NET (di proprietà Microsoft) 
Database
  • Oracle
  • DB2 (di proprietà IBM)
  • Microsoft SQL Server
  • MySQL
  • Firebird SQL
  • PostgreSQL
  • SQLite
E' chiaro che lo sviluppo web non è solo creare delle interfacce grafiche, delle applicazioni o inserire dei contentuti testuali o multimediali, cosa di cui si occupa in genere il webmaster, uno sviluppatore deve tenere sempre in mente anche in via di progettazione il target dell'utenza, l'usabilità, l'accessibilità e soprattuto la sicurezza informatica.
Un prodotto seppur bello da vedere, ma che non abbia una buona accessibilità, usabilità e soprattutto una certa sicurezza, generalmente non può essere qualificato come un buon prodotto.
Il target dell'utenza è importantissimo quando si deve progettare un sito/applicazione web, perchè l'usabilità e l'accessibilità deve essere riferita alle loro competenze e non a quello di un target diverso. Quindi un sito di una comunità scientifca deve per forza avere una struttura differente da un sito di social media, questo è ovvio.
L'applicazione deve essere funzionante il più possiile, un'applicazione, o un sito, completamente priva di bugs  è praticamente un obiettivo impossibile da raggiungere, perchè questi rappresentano un po' i nei che ci portiamo addosso, tuttavia un buon prodotto deve avere comunque una buona robustezza. 
Chiaro che ad uno sviluppatore non è chiesto di imparare tutti gli strumenti e i linguaggi di programmazione, e quindi tutte le competenze possibili, perchè sarebbe come avere uno chef che può preparare tutti i piatti del pianeta, sia salati che dolci, praticamente impossibile, ma certo è che uno sviluppatore non curioso non può essere considerato un buon sviluppatore/programmatore. Una delle cose che accomuna coloro che lavorano sul web sia nello sviluppo backend che nel frontend, o nel design grafico a qualsiasi livello, è la curiosità, la creatività e la voglia di conoscere sempre e comunque, perchè se non fosse stato questa la nostra prerogativa non avremmo mai potuto fare questo lavoro che si basa essenzialmente su questo e sull'evoluzione delle tecnologie, ma soprattutto del pensiero, cioè l'approccio al problem solving.

Sicurezza

Con l'aumento del traffico è chiaro che gli sviluppatori web debbano tenere conto della sicurezza informatica,e questo è uno dei motivi per il quale oggi si utilizzano framework robusti per creare applicazioni complesse, piuttosto che partire da zero. Troppe cose da tenere in conto e reinventare la ruota non è sempre la migliore cosa da fare per uno sviluppatore, anche se migliora la sua creatività. Sql iniections, xss, csrf etc. sono alcuni degli attacchi più frequenti da tenere in considerazione in fase di sviluppo.

Lo sviluppo web che di solito intraprendo, o che in genere tende ad intraprendere uno sviluppatore, segue un iter che parte dalla pianificazione del progetto dove necessita primariamente:

- la scelta dell'obiettivo e del target, tutto in funzione del budget ;
- lo stabilire approssimativamente i tempi di sviluppo;
- le eventuali implementazioni future da apportare;
- e chiaramente la conoscenza delle tecnologie che si utilizzano per fare quello di cui sopra nei tempi e costi stabiliti.

In base a questi punti salienti da tenere in considerazione nella fase di progettazione vengono selezionati i metodi e gli strumenti ottimali al fine di raggiungere lo sviluppo del sito o applicazione richiesta.