lunes, 13 de julio de 2020

La ruta de aprendizaje de un desarrollador Front-end

Antes con sólo saber HTML, CSS y algo de JS hacías una página web decente, pero hoy en día, es imposible pensar algo así.

HTML: Lo básico para todo frontend, deberás aprender a manejar muy bien HTML5 con las nuevas API's (geolocalización, canvas, etc). Si bien muchas webs tienen un html minimalizaste y en un sólo div montan toda la página, es bueno que lo entiendas para luego poder manipular el DOM.

CSS: Desde lo básico, hasta las media queries para crear responsive design. Con CSS3 se incorporan animación, y todo el mundo de Grid y Flexbox que mejoran mucho el resposive design. Existen muchos frameworks CSS que podrías aprender (pero siempre recomiendo aprender las bases del leanguaje) como Bootstrap, Materialize, AnimateCSS (sólo para animaciones). Aunque también existen preprocesadores y postprocesadores CSS como Less, Sass, PostCSS, que vienen perdieron terreno a causa de los frameworks, pero que se pueden combinar perfectamente. Estos últimos procesadores hacen que uses el CSS como un lenguaje de programación (donde puedas usar condicionales, bucles, etc) que luego lo transpila a CSS puro.

Javascript: Desde la aparición de Nodejs, este lenguaje ha crecido muchisimo, y podríamos considerar que es un "lenguaje para todo", esto quiere decir que no sólo puedes aplicar funcionalidad al navegador, sino que ahora se convirtió en un lenguaje de Backend, para crear aplicaciones de escritorio, aplicaciones móviles nativas, hasta manipular hardware.

Aprender Javascript desde las bases es fundamental, recorrer arrays y objetos, manipular el DOM, hacer peticiones AJAX y Fetch API (esencial si vas a consumir una API ya diseñada), distintos aradigmas como programación orientada a objetos, programación funcional, etc. Todo esto llevado a la sintaxis EcmaScript 6 que te permite hacer un lenguaje mucho más moderno.

Una vez que domines estos topicos, podrías pasar a un framework/liberería. Los 3 más populares son React, Angular Vue. No me voy a centrar mucho en ellos, pero puedo decirte que con estos frameworks/librerías ya tienes todas las herramientas necesarias para crear una SPA (Single Page Application) con un estilo profesional. De hecho React fue creada por Facebook y Angular por Google. La filosofía de estos frameworks es que todo es un componente, que puede ser reutilizado una y otra vez (por ejemplo, las distitas entradas de un blog pueden ser consideradas como un componente que se repite con distintos "estados"). En fin, cada framework es un mundo en sí, con su propia ruta de aprendizaje.

Con Nodejs puedes montar un servidor y conectarlo a una Base de Datos con Javascript (antes era impensado). Como la ruta del backend es un tópico que excede esta respuesta, siempre es bueno que todo front aprenda como mínimo las nociones básicas de Nodejs, con su framework Express y su manejador de paquetes como es npm. Los paquetes son módulos que te permiten hacer tu trabajo más fácil para evitar que escribas javascript puro una y otra vez (¿Para qué volver a inventar la rueda?). Algunos ejemplos intersantes son mongoose(para conectar a MongoDB), mysql(para conectarla a MySQL), Electron (para hacer aplicaciones de escritorio), SocketIO(para crear servidores en tiempo real).

A su vez, es esencial que sepas usar GIT/GITHUB, ya que es el controlador de versiones y repositorio más usado. Desde el proyecto más pequeño hasta el más grande puedes manejarlo y subirlo a la página de Github.

Te dejo algunos herramientas de JavaScript para que tengas una noción de que se tratan:

·         Babel: Es un transpilador. No todos los navegadores entienden JS moderno, es decir de ES6 en adelante, por lo que necesitara de esta herramienta para que el JS en desarrollo sea transpilado en producción y sea compatible con todos los navegadores.

·         Webpack: Es un "module-bundler", esto es, permite que todo tu código moderno sea compactado, minificado ( se eliminan los espacios, tabs, comentarios, etc) para que el navegador lo pueda leer. Es muy poderoso, porque permite que en desarrollo puedas importar CSS y HTML dentro de un para que crees una single page application y luego en producción cada archivo será leido por separado. Su configuración inicial puede ser muy compleja, pero te permite utilizar muchisimas herramientas modernas de entrada que luego en salida sólo será html, css y js compatible con los navegadores.

Para no seguir extendiendo, JavaScript también te da la posibilidad de crear Progressive Web Applications (PWA), o aplicaciones móviles nativas a través de React Native, aplicaciones de escritorio con Electron, también está TypeScript que es un lenguaje basado en javascript que permite escalarlo, esto es útil para proyectos grandes.