Uno de los objetivos de este blog es que puedas aprender a programar y convertirte en un o una Full-stack JavaScript Developer a partir de la mejor documentación.

Te dejaré enlaces para que puedas estudiar desde ya. Cómo no todos los recursos son gratuitos y/o están en Español mi propósito es eventualmente realizar un artículo y/o video de cada uno de los temas.

La guía está pensada para aprender a programar en 16 semanas dedicándole 20 horas semanales pero puede que tome más o menos dependiendo de tu auto-aprendizaje y disciplina o de la ayuda que puedas conseguir mediante un mentor.

Guía de emojis

  • 🧳 Fuente externa
  • 🎈 Fuente interna
  • 🇬🇧 Inglés
  • 💰 Recurso de pago
  • 📺 Video
  • 📰 Lectura
  • 📻 Podcast

Semana 1

Configuración del ambiente de desarrollo

El mundo del Markdown

Uso básico de la Terminal

Git: Control de versiones

Introducción a HTML

Introducción a CSS

Semana 2

Introducción a la programación

JavaScript 101

HTML Semántico

Formularios con HTML

  • Los forms clásicos en HTML
  • inputs en los formularios de HTML
  • Estilos para formularios en HTML
  • Estilos para tus botones de HTML
  • Controles modernos para formularios

JSON, DOM y CSSOM

  • El formato JSON
  • ¿Qué es el DOM?
  • ¿Qué es el CSSOM?

Semana 3

Flexbox y CSS Responsive

  • ¿Cómo funciona Flexbox?
  • Layouts modernas con Flexbox
  • Posicionamiento con CSS
  • ¿Qué es el Responsive Design?
  • Cómo hacer imágenes responsive

Estructura básica de un proyecto

  • Proyectos en tiempo récord con Parcel
  • Webpack y cómo cambió el modo de desarrollar
  • Rollup la alternativa de Webpack

Frameworks de UI

  • Introducción a Bootstrap 5
  • Introducción a Semantic UI
  • Introducción a Tailwind CSS

Semana 4

Librerías de Javascript

  • Introducción a jQuery
  • Introducción a Lodash
  • Introducción a Moment
  • JavaScript Vanilla: sin jQuery, Lodash o Moment

CSS en la practica

  • Extendiendo CSS mediante SASS
  • Evolución de las Arquitecturas de CSS
  • Design Tokens con CSS Custom properties

Semana 5

JavaScript Avanzado

  • Aprende a usar Regex en tu día a día
  • Herencia clásica versus herencia de prototipos
  • Programación funcional en JavaScript
  • Closures y el significado de "this"

Programación asincrona

  • Callbacks y el infierno de los callbacks
  • Las promesas de JavaScript
  • Los generadores en Javascript
  • Async / Await en JavaScript

ES2015 y más alla

  • Template literals y la interpolación de Strings
  • Diferencia de Rest parameters y Spread operator
  • El ABC del destructuring en JavaScript
  • La verdad sobre las arrow functions
  • Map, Set, WeakMap y Weak Set
  • Los for y el protocolo de Iteración
  • Metódos en Array, Number, Object, Boolean, String y Math
  • Encadenamiento opcional y operador nullish coalescing

Semana 6

JavaScript en producción

  • ¿Qué son los Shim y Polyfills?
  • Cómo usar correctamente Babel
  • Minificación del código para producción
  • Uso efectivo de los Source maps
  • Code Splitting y eliminación del código no usado

Introducción a React

  • Introducción a React: JSX, Props Children y Estado
  • Ciclo de vida moderno en React
  • Eventos y Formularios en React

React avanzado

  • Componentes de orden alto en React
  • Patrón Render Props
  • Todo sobres Hooks en React

Semana 7

Manejo de estado con Redux

  • Redux: Acciones, Reducers, Store y Flujo de datos
  • Acciones asíncronas y middlewares en Redux
  • Mejora tu arquitectura con React Redux
  • useRedux al rescate

Creando apps con React

  • Creando un dashboard con Create React App
  • Creando un dashboard con Next.js

Semana 8

Introducción a Node.js

Introducción a Express.js

Bases de datos NoSQL

  • Introducción a MongoDB
  • ¿Cómo conectarse a MongoDB desde Node.js?
  • Las ventajas de usar Mongoose

Semana 9

Bases de datos SQL

  • ¿Qué es el diagrama entidad-relación?
  • ¿Cómo conectarse a MySQL desde Node.js?
  • Consultas esenciales en MySQL

Semana 10

Creando una API

  • Creando una API con Express.js
  • Creando una API con Hapi.js
  • Creando una API con Sails.js
  • Usando Firebase cómo API

Semana 11

Autenticación y usuarios

Semana 12

Introducción a la seguridad Web

  • ¿Que es injection y cómo evitarlo?
  • ¿Cómo implementar autenticación de manera correcta?
  • ¿Cómo evitar exponer datos sensibles en tus apps?
  • Acceso, permisos y correcta configuración en un servidor

Semana 13

Introducción a los servidores

  • Permisos de usuarios y sistema de archivos
  • Conexión SSH a un servidor remoto
  • Manejo esencial de VIM

Servidores como servicio

  • Mi primer servidor en Digital Ocean
  • Cómo despliego mi app en Heroku
  • Despliega más rápido con Vercel

Semana 14

CSS Avanzado

  • Todo sobre tipografía en CSS
  • Transiciones y Animaciones en CSS
  • CSS Grid: La nueva manera de hacer layouts
  • Sistemas de Diseño con CSS

Semana 15

El mundo del testing

  • Los principios del testing
  • Unit testing en nuestras apps
  • Snapshot testing en React
  • Cómo hacer buen mocking con los tests
  • ¿Qué son los tests funcionales o de integración?
  • Tests de integración completa (E2E)

Semana 16

Contenedores

  • Introducción a los contenedores
  • Instalando y configurando Docker
  • Introducción a Kubernetes
  • Usando Kubernetes con Google Cloud Platform

Integración Continua

  • Integración continua y despliegue continuo
  • Configura tu ambiente de Integración continua

Sobre la guía

Esta guía está basada en la experiencia de un Bootcamp de JavaScript que dicté en 9 semanas y una serie de recursos que he consumido a lo largo de mi carrera.

Si tienes una referencia de un recurso que haga falta, o que consideres que es mejor no dudes en escribirme directamente en Twitter para incluirlo.