L’Articolo è stato aggiornato a Novembre 2018
Il lavoro di uno sviluppatore Front End consiste nel plasmare l’esperienza dell’utente all’interno di un sito web, o meglio come i dati provenienti dal back-end vengono visualizzati dall’utente. Ciò include la creazione di un layout di pagina, styling con animazioni e ottimizzazioni sulla navigazione del sito.
In basso un elenco di compiti specifici che uno sviluppatore Front End affronterà:
- Creazione, personalizzazione e manutenzione dell’interfaccia utente (UI)
- Creazione e modifica dei componenti di un framework UI
- Lavorare sullo stile e fornire animazioni alle pagine web
- Lavorare con i graphic designer per trasformare le loro pagine statiche in pagine web
- Lavorare con gli sviluppatori back-end e le API scritte da loro per rendere le pagine web dinamiche
- Modifica e controllo del contenuto che viene visualizzato sul sito web
- Rimanere aggiornato con le tecnologie emergenti e tendenze
Abilità richieste
Le competenze di base necessarie per questo ruolo sono la conoscenza di un linguaggio di markup, i browser web, lo stile e almeno un linguaggio di scripting. Qui ci sono alcune competenze di base specifiche:
- Conoscenza di un Linguaggio di Markup: HTML5 – Ciò include la conoscenza della sintassi, tag e attributi
- Conoscenza di un Linguaggio di Stile : CSS – Ciò include la conoscenza di base dei Cascading Style Sheets (compreso CSS 3)
- Conoscenza di un linguaggio di programmazione lato client: principalmente JavaScript – incluse buone capacità di lavorare con la libreria jQuery
- Conoscenza di software Editor come Atom o Sublime Text
Lista delle Skills (Front End Developer Superstar):
Ecco a voi la lista completa delle competenze che reputo fondamentali per essere considerato uno sviluppatore Front End di successo:
- HTML (XHTML, HTML4, HTML5)
- CSS (2.1, CSS3)
- Javascript / Ajax
- jQuery
- CSS Flexbox
- Framework UI più utilizzati (HTML5 Boilerplate, Bootstrap, Foundation ecc)
- Flat Design
- Material Design (Framework UI di esempio: Material Components)
- Software Editor (es. Atom, Sublime Text, Dreamweaver, Google Web Designer)
- Framework JavaScript (Angular, VueJS, ecc)
- Angular Material
- Reactive Programming (RxJS)
- Miglioramento progressivo / Graceful Degradation
- Specifiche HTML e CSS (W3C / WHATWG)
- Griglie CSS
- Principi di UX / UI / Usabilità
- Conoscenza dei paradigmi di programmazione JavaScript (OOP, Programmazione funzionale ecc.)
- Conoscenza dei principali Design Pattern utilizzabili con JavaScript (Observer Pattern, Facade Pattern, MVC ecc.)
- Responsive Web Design
- Sviluppo App mobile ibride iOS e Android (Ionic Framework, Onsen UI ecc.)
- Modernizr
- Strumenti di editing (Photoshop, Fireworks, etc)
- Web Font Embedding / Licensing
- OOCSS | BEM / SMACSS (architettura modulare)
- Website Speed / Performance
- Strumenti di sviluppo / debug (Chrome Dev Tools, Firebug, ecc)
- YUI Library
- Dojo / MooTools / Prototype
- Sviluppo Cross-Browser / Cross-Platform
- Document Object Model (DOM)
- Cross-browser Bugs e incongruenze (soprattutto IE6-8)
- CSS Pre-Processor (LESS / Sass)
- Controllo di Versione GIT e ralativi Tools (es. GitLab / BitBucket / GitHub)
- API HTML5 (Canvas, Geolocalizzazione, video, ecc)
- Web App Offline
- Scaffolding, Task Runner e Package Manager (Yeoman, Grunt, Bower)
- Architettura REST
- Unit testing
- Accessibilità / WAI-ARIA
- Microdata / Microformats
- HTML5/CSS3 polyfills
- Formato di dati (ad esempio JSON, XML)
- Internazionalizzazione / Localizzazione (es. i18next)
- Content Strategy
- GSAP – Animazioni ad Alte Prestazioni
- CoffeeScript, Dart o TypeScript
- SVG
- Haml
- Conoscenza delle dinamiche legate alla compatibilità dei browser; testing e debugging
- La conoscenza di ottimizzazione delle performance utilizzando strumenti come PageSpeed
Competenze aggiuntive
Sono caratteristiche che costituiscono titolo preferenziale ma non obbligatorio, per essere considerati un Front End Developer “puro”
- La conoscenza base di Photoshop e di un CMS come WordPress
- Conoscenza base di linguaggi server per lo sviluppo web (es. NodeJS, PHP, Java, Ruby, Python ecc.)
- .Htaccess
- Espressioni regolari (RegEX)
- Familiarità con i principali database relazionali e non (es. MySQL, MongoDB ecc.)
- La conoscenza SEO (Search Engine Optimization)
- Buona conoscenza della lingua Inglese
Completano il profilo le cosidette Soft Skills:
- Spirito di squadra
- Adattabilità e disponibilità
- Capacità analitiche e di Problem solving
- Orientamento al risultato
- Flessibilità nell’apprendimento di nuove tecnologie e capacità di imparare nuovi linguaggi in maniera autonoma
- Buone capacità relazionali e attitudine al lavoro in team
- Ottime capacità di comunicazione orale e scritta
Mi piacerebbe sapere cosa ne pensate, ma soprattutto se credete che debba essere aggiunto qualcosa nella lista delle skills.
Saper trovare rapidamente le informazioni
Vorrei che pensasse alla vostra giornata lavorativa media. Pensate alle volte in cui avete bisogno di lasciare il vostro strumento preferito per la scrittura di codice per andare a cercare nel browser. Quante volte accade nell’arco della vostra giornata lavorativa? 5 volte? 100 volte? Non importa la frequenza, succede più volte ogni singolo giorno. Saper trovare rapidamente le informazioni di cui avete bisogno riduce notevolmente il tempo che avete a disposizione al di fuori del vostro ambiente di programmazione. (Vale per gli Sviluppatori di qualsiasi tecnologia)
Per il Futuro: Campi di applicazione e prospettive di lavoro
Il numero di persone che utilizzano internet è triplicato negli ultimi cinque anni. Quindi Internet è qui per rimanere. La crescita della globalizzazione ha portato ad un grande bisogno di servizi come outsourcing, assistenza clienti 24 ore al giorno e di e-commerce. Questi servizi hanno attraversato le barriere del tempo e la posizione geografica.
Così l’ambito dello sviluppo web è molto ampio. Nessuna azienda può sopravvivere senza internet. Pertanto, il ruolo di un Front End Developer risulta essere vitale per qualsiasi impresa. Hanno una grande richiesta in multinazionali, agenzie pubblicitarie, media editoria, studi di progettazione, produttori, istituti educativi e qualsiasi impresa che possiede un sito web.
Per affrontare qualsiasi tipo di colloquio
Di seguito la serie di articoli scritti da Eric Elliott che aiuteranno ogni sviluppatore ad affrontare un colloquio dedicato alla posizione di “Senior Front End Developer.
Anche se non state cercando un nuovo lavoro, consiglio comunque la lettura, perché ogni Sviluppatore Front End dovrebbe sapere cos’è una Closure o la differenza tra Programmazione a Oggetti e Programmazione Funzionale”