Bootcamp
Full Stack Developer

Aprende a desarrollar aplicaciones modernas como un profesional utilizando los lenguajes basados en el stack de Javascript los cuales son los más potentes y masivos de la actualidad

Descripción

En esta carrera de desarrollo Full Stack aprenderás a crear aplicaciones web y móviles desde cero utilizando buenas prácticas de programación. En esta carrera podrás entender y manejarte con ambos lados del mundo de la programación: el frontend y el backend.

Aprenderás a programar con Javascript, React.js y Node.js que te permitirá realizar sitios complejos, dinámicos y escalables.
Al finalizar la carrera podrás trabajar en cualquier empresa que requiera desarrollador Full Stack en Node.js, React y/o React Native.

Requisitos previos

La carrera tiene como objetivo fundamental formarte como profesional en las tecnologías más requeridas del mercado para construir interfaces y aplicaciones modernas en Node.js, React y React Native. Nuestra fundación tiene como principal meta formar a nuevos profesionales o reconvertir a personas que utilizan algunas tecnologías poco utilizadas a lenguajes más demandados.

React es una biblioteca escrita en JavaScript, desarrollada en Facebook para facilitar la creación de componentes interactivos, reutilizables, para interfaces de usuario. Se utiliza en Facebook para la producción de componentes, e Instagram está escrito enteramente en React. Uno de sus puntos más destacados, es que no sólo se utiliza en el lado del cliente, sino que también se puede representar en el servidor, y trabajar juntos.

1.- DOM virtual. La principal ventaja de React es poder generar el DOM (“Modelo de Objetos del Documento”, estructura de los elementos que se generan en el navegador web al cargar una página) de forma dinámica. Esto permite que para poder visualizar los cambios de los datos, no es necesario renderizar toda la página de nuevo, sino solamente el componente que haya sido actualizado. Gracias a esta característica mejora: la experiencia de usuario al navegar por la aplicación web, la rapidez en la carga de las páginas y facilita el mantenimiento de la aplicación.

2.- Amplia comunidad. Al estar basado en JavaScript, cuenta con una amplia comunidad que dispone de un gran número de librerías externas.

3.- Compuesto por componentes. Como ya hemos mencionado anteriormente, las aplicaciones webs desarrolladas con React están basadas en componentes reutilizables. Esto facilita que la aplicación sea más escalable y fácil de mantener ya que los errores sucederán en la propia funcionalidad del componente o en la comunicación con los demás.

4.- ECMAScript 6. Se trata del último estándar para JavaScript. Aporta mayor flexibilidad y versatilidad al código, lo cual facilita el desarrollo del software. Además, para que los navegadores más antiguos no se queden obsoletos, este código de última generación puede ser traducido con Babel, una herramienta que se encarga de transformar el código JavaScript escrito con la especificación ECMAScript 6 en código que cualquier navegador puede interpretar.

5.- Isomórfico. Desde el punto de vista del posicionamiento web, el principal problema de los frameworks es que, debido al desacoplamiento entre la parte del cliente y el servidor, los datos que se van a mostrar en el HTML se obtienen mediante peticiones a la API, que es la que suministra los datos desde el servidor y, una vez el framework obtiene los datos, construye el HTML. De esta manera, cuando Google (o cualquier otro buscador) rastrea la web, el contenido del HTML está vacío y no es capaz de interpretar las palabras claves. Esto provoca que el posicionamiento web de un CMS como WordPress sea más óptimo que el de un desarrollo basado en un framework. Sin embargo, gracias al isomorfismo de React, es posible construir el HTML con el contenido ya renderizado y obtener un posicionamiento web tan óptimo como un WordPress.

6.- Integración con Redux. Al tratarse de una librería, podemos agruparla junto a otras librerías como Redux para conseguir mayor funcionalidad y facilitar el desarrollo. Redux y React encajan muy bien ya que ambos trabajan con estados. Mientras que cada componente React tiene su propio estado (datos de cada componente que se van modificando a lo largo de su ciclo de vida), la función de Redux es emitir actualizaciones de los estados en respuesta a acciones.

7.- React Native. Facilidad para generar aplicaciones móviles usando el mismo código JavaScript de la aplicación web.

Node.js es un ambiente de ejecución de código JavaScript donde se hace uso de V8, el motor de Google Chrome que está escrito C ++ y fue lanzado en el 2009 por Ryan Dahl.

Una de las mejores características de Node.js es que es multiplataforma, gracias a esto podemos ejecutar JavaScript en cualquier plataforma ya sea en Servidor, Escritorio, Móvil o Web. También existen otras características que destacan a la hora de elegirlo como tecnología, tales como:

  • Asincronía
  • Orientación a eventos
  • Tiempo real
  • Escalable
  • Expansible
  • No bloqueante
  • La compilación de Node.js se realiza en tiempo de ejecución, Just In Time (JIT), esto trae consigo una mayor optimización a las funciones que más veces sean llamadas.
  • Mediante clusters permite tener una escalabilidad alta.
  • Podemos expandir nuestro código añadiendo módulos de forma fácil gracias al Node Package Manager (NPM).
  • Un alto rendimiento en proyectos donde necesitemos ejecución en tiempo real.
  • En startups o equipos pequeños podremos realizar front-end, back-end y hasta una aplicación móvil con un mismo lenguaje.

 

React Native es un framework JavaScript para crear aplicaciones reales nativas para iOS y Android, basado en la librería de JavaScript React para la creación de componentes visuales, cambiando el propósito de los mismos para, en lugar de ser ejecutados en navegador, correr directamente sobre las plataformas móviles nativas, en este caso iOS y Android. Es decir, en lugar de desarrollar una aplicación web híbrida o en HTML5, lo que obtienes al final como resultado es una aplicación real nativa, indistinguible de la que podrías desarrollar con tu código en Objective-C o Java.

Esa es la teoría, pero veamos cómo propone React Native alcanzar este objetivo.

React Native usa el mismo paradigma fundamental de construcción de bloques de UI (componentes visuales con los que interacciona el usuario) que las aplicaciones nativas reales de Android e iOS, pero gestiona la interacción entre los mismos utilizando las capacidades de JavaScript y React.

  1. Compatibilidad Cross-Platform: ya que la mayoría de las APIs de React Native lo son de por sí, lo cual ayuda a los propios desarrolladores a crear aplicaciones que pueden ser ejecutadas tanto en iOS como Android simultáneamente con el mismo código base.

  2. Funcionalidad nativa: las aplicaciones creadas mediante React Native funcionan de la misma manera que una aplicación nativa real creada para cada uno de los sistemas usando su lenguaje nativo propio. La unión de React Native junto con JavaScript permite la ejecución de aplicaciones más complejas de manera suave, mejorando incluso el rendimiento de las apps nativas y sin el uso de un WebView.

  3. Actualizaciones instantáneas (para desarrollo y/o test): con la extensión de JavaScript, los desarrolladores tienen la flexibilidad de subir los cambios contenidos en la actualización directamente al dispositivo del usuario sin tener que pasar por las tiendas de aplicaciones propias de cada sistema y sus tediosos ciclos de procesos obligatorios previos. Hay que aclarar que este uno es exclusivo de versiones de desarrollo o para test, es ilegal, y puede llegar a conllevar castigos que llegan hasta la retirada definitiva de la aplicación si se realizan cambios directos sobre código con aplicaciones ya publicados y en producción. La tienda de Apple lleva un control muy exhaustivo sobre este tipo de prácticas.

  4. Sencilla curva de aprendizaje: React Native es extremadamente fácil de leer y sencillo de aprender ya que se basa en los conceptos fundamentales del lenguaje JavaScript, siendo especialmente intuitivo tanto para los ya expertos en dicho lenguaje o incluso para las personas sin experiencia en él, ya que nos provee de un rango muy amplio de componentes, incluyendo ejemplo como los mapas y filtros típicos que se han usado siempre.

  5. Experiencia positiva para el desarrollador: si bien la curva de aprendizaje hemos dicho que es sencilla, también el propio lenguaje nos motiva y ayuda a la hora de la evolución según aumentamos nuestro conocimiento y dominio del mismo. Nos ofrece varias características importantes como, por ejemplo, el Hot reloading que nos refresca la app en el momento en que guardamos cambios, y nos ofrece una gran ventaja para el desarrollo y testing de nuevas versiones, como hemos comentado arriba. O el uso del flexbox layout engine gracias al cual nos permite abstraernos de muchos de los tediosos detalles de la generación de cada uno de los layouts correspondientes a iOS y Android. Así como el uso del debugger de las herramientas de desarrolladores del navegador Google Chrome, facilitando de sobre manera la tarea de depuración de código.