MarioGiron.com

¿Por qué aprender a programar con el Stack MEAN?

12 June, 2020

Si una empresa tecnológica puntera en el sector es capaz de integrar una misma tecnología dentro de sus diferentes aplicaciones o sistemas, nos asegura que dicha tecnología va a tener seguimiento. Nos asegura un soporte robusto durante muchos años y la seguridad de que en torno a estas herramientas surgirá documentación o incluso otras herramientas asociadas de ayuda.

Este es el caso que venimos viviendo desde hace años respecto al lenguaje JavaScript y sobre todo a través de los diferentes stacks de programación que surgen a su alrededor.

El proceso de diseño, la elección de tecnologías

En el proceso de diseño de cualquier software, una de las fases más críticas es decidir qué tecnologías se van a utilizar para alcanzar el objetivo final. Uno de los puntos clave que puede inclinar la balanza es sin duda la experiencia del equipo de trabajo a cargo del proyecto.

Es por eso que, muchas empresas con años de experiencia en el sector, se agarran a una tecnología para todos sus proyectos, porque el equipo del que disponen tiene un alto grado de conocimiento sobre la misma.

La inclusión de un stack más moderno o con menos recorrido dentro de la arquitectura de una empresa incluye un factor de riesgo muy alto y por contra una apuesta fuerte de cara al futuro pero, ¿qué ocurre cuando estamos aprendiendo?

¿Cómo elegir en qué Stack tecnológico formarse?

Una de las preguntas que más me formulan desde que llevo impartiendo clases con el stack MEAN como base es por qué he escogido este grupo de tecnologías para enseñar a programar a personas que no han visto una línea de código en sus vidas. Voy a intentar darte una serie de puntos de por qué creo que, dentro de todas las alternativas disponibles, esta puede ser la que más se ajusta a tus necesidades.

¿Qué es el stack MEAN?

Stack Mean

Como todo stack de programación, MEAN es un conjunto de tecnologías que, usadas de manera conjunta en un proyecto, nos permiten crear una aplicación completa.

En este caso y orientado al mundo del desarrollo web, podemos modificar la definición agregando que gracias a ese grupo de herramientas podemos crear aplicaciones desde la parte del front-end, hasta la parte del back-end usando una misma tecnología como base, lo que aporta al equipo de trabajo la posibilidad de centrarse más en el desarrollo de la aplicación propiamente dicho que en el aprendizaje de las herramientas a utilizar.

Cada stack de programación sugiere la utilización de ciertas herramientas. En este caso, si nos centramos en MEAN, las herramientas que lo componen son: MongoDB, Express, Angular y NodeJS.

¿Por qué debería aprender a programar con el stack MEAN?

El primer punto de este argumentario es el más importante. Todas las tecnologías incluidas en el patrón MEAN tienen el mismo lenguaje de programación como base, JavaScript.

El lenguaje JavaScript

De todos los lenguajes orientados al desarrollo web, JavaScript es quizá el que más ha crecido durante los últimos años, y sin duda, es uno de los que mejor se ha asentado dentro del panorama actual.

Todos los lenguajes son complicados de aprender, sobre todo si no has tenido contacto alguno con el mundo de la programación, pero, JavaScript destaca por su sencillez a la hora de arrancar y sobre todo por la gran comunidad que tiene detrás.

Cada vez más, las empresas del sector requieren especialistas en JavaScript y la comunidad de desarrolladores se vuelca en la creación de herramientas y la organización de eventos que ayudan a que el interés por el lenguaje siga creciendo de manera exponencial.

Adquirir una buena base en un lenguaje de programación te permite dar el salto entre diferentes tecnologías sin demasiados problemas y creo que es el fallo principal de todos aquellos que se lanzan al mundo del desarrollo, lo primero es andar, ya tendrás tiempo para volar.

NodeJS, el back-end

Vamos a empezar por el final. Todo el back-end de nuestra aplicación descansa sobre las espaldas de esta tecnología que ha sido la causante de que ahora mismo estemos hablando del mundo de JavaScript y las múltiples alternativas que nos ofrece.

Gracias a la adaptación del motor V8 de Google Chrome y su salto al mundo del servidor, el desarrollador actual ha sido capaz de alcanzar objetivos que hasta hace pocos años no conseguía. La aceptación de esta tecnología ha sido tan grande que grandes empresas como LinkedIn, PayPal o Microsoft se han lanzado a desarrollar parte de sus productos con NodeJS.

La velocidad y alto rendimiento de los servidores creados con NodeJS ofrecen mejoras sustanciales con respecto a los servidores utilizados tradicionalmente en el desarrollo web.

Tal ha sido el éxito que ha tenido el motor de ejecución que, su creador Ryan Dahl, lleva unos años embarcado en la creación del sucesor de NodeJS, Deno (no se puede decir que sea un especialista en naming). Su intención con este movimiento es la de implantar las nuevas técnicas de desarrollo utilizadas en las nuevas versiones de JavaScript. Una apuesta segura para dentro de unos años.

Express como framework

La utilización de NodeJS por sí solo no te asegura el éxito de cara a crear una aplicación para el back-end de tu proyecto. Es cierto que dispones de múltiples módulos que facilitan la implementación de los procesos más habituales, pero, si necesitas que tu aplicación sea escalable y sobre todo que el mantenimiento con el tiempo no sea un dolor de cabeza, la utilización de un framework como Express es muy importante.

Existen muchos frameworks, o herramientas de desarrollo, que pueden realizar el trabajo que desempeña Express, pero volviendo a recoger los mismos aspectos de antes, quizá es la mejor alternativa por el largo recorrido que tiene y la comunidad que se ha montado a su alrededor.

Cualquier paso que vayamos a dar a la hora de crear nuestras aplicaciones podemos estar seguros que ya lo han dado otros antes y por lo tanto dispondremos de documentación suficiente sobre cualquier error que obtengamos.

Cabe destacar las múltiples herramientas que se han generado en torno a Express por parte de la comunidad de desarrolladores. Herramientas y utilidades que mejoran la experiencia de uso del framework en el momento de crear nuestras propias aplicaciones. Todas estas herramientas agilizan el desarrollo y facilitan la implementación de nuevas funcionalidades, ya que, se suelen encontrar completamente probadas y documentadas por parte de sus creadores.

La cercanía que nos ofrecen las aplicaciones creadas con Express con respecto al core de NodeJS es reseñable y de mucha utilidad cuando queremos ahondar más en profundidad en los desarrollos que generamos.

Stack Mean

MongoDB, la base de datos

Durante este artículo he marcado muchos de los puntos como críticos a la hora de decidir qué tecnologías utilizamos dentro de nuestros proyectos, los aspectos que engloban la elección de la base de datos no podrían ser menos, al fin y al cabo, se trata del espacio donde vamos a almacenar lo más sensible de nuestras aplicaciones, los datos.

Personalmente no soy un defensor de encerrarse bajo el paraguas de una misma tecnología para nuestras bases de datos. Creo que es importante entender en las primeras fases de diseño de nuestras aplicaciones, las necesidades que tenemos y, en función de eso, seleccionar la tecnología que más se adapte en cada caso.

¿Podemos utilizar MongoDB en cualquier proyecto? Rotundamente no.

Siempre que hablo del stack MEAN, me gusta apuntar que la M no es descabellado que también la podamos asociar a bases de datos MySQL. Creo que utilizando un stack de este tipo y unas tecnologías tan flexibles no debemos agarrarnos a la posibilidad de usar otro tipo de bases de datos. Si la gestión del modelo de nuestra aplicación es claramente relacional, MySQL es una gran alternativa y se integra a la perfección con cualquiera de las tecnologías nombradas anteriormente.

¿Es MongoDB una base de datos a tener en cuenta actualmente? Sí

La velocidad que tenemos a la hora de interactuar con una base de datos MongoDB, la flexibilidad que nos ofrece trabajar con sus colecciones y documentos y las mínimas dependencias que requiere, la convierten en una alternativa destacada frente a las bases de datos tradicionales. Comparte la base del lenguaje con el resto de herramientas del stack y por lo tanto, la curva de aprendizaje para poder manejar este tipo de bases de datos es mínima.

El problema viene si confundimos en fases tempranas del proyecto el tipo de base de datos a utilizar. Puede llegar un momento en el que la escalabilidad de los datos nos juegue malas pasadas y tengamos que pivotar hacia otras alternativas, con la consiguiente pérdida de tiempo y de recursos dentro del proyecto.

Angular, creando el front

Me dejo lo mejor para el final, el plato fuerte. Solo hay que hacer una búsqueda sencilla por internet para descubrir los miles de escritos que existen comparando Angular y React como herramientas para la creación del front de nuestros proyectos.

Mi opinión sobre por qué se debería aprender Angular cuando entrar en el mundo del desarrollador Full Stack está basada en la experiencia que he adquirido después de pasar más de dos años enseñando a personas de diferentes ámbitos cómo pueden entrar en el mundo del desarrollo web.

Parto de la idea de que React me parece una herramienta estupenda y con un recorrido impresionante y particularmente creo que óptima para desarrolladores algún tiempo de experiencia en la programación.

Si es verdad que Angular genera aplicaciones muy robustas, en algunos casos poco flexibles y muy dependientes de sus propias librerías. Pero por contra, esa rigidez del framework nos permite tener una clara diferenciación entre los diferentes elementos que conforman nuestros componentes. La división entre Modelo, Vista y Controlador está clarísima con los diferentes ficheros que vamos generando.

Esta forma de organizar el código ayuda a que la persona que llega con conocimientos básicos de maquetación y de programación con JavaScript se sienta más cómoda a la hora de afrontar una tarea mayor.

Los conceptos que maneja cualquier aplicación Angular para crear aplicaciones web son muy parecidos a los que puede manejar cualquier otro framework, por lo que adquirir unos fuertes fundamentos con esta tecnología te permite dar el salto a cualquier otra sin demasiado sufrimiento. He vivido muchas experiencias de personas que destacan lo sencillo que es aprender a programar con React una vez manejas todos los entresijos que te ofrece Angular.

En definitiva, tenemos ante nosotros una gran grupo de tecnologías que juntas conforman uno de los stacks más potentes en la actualidad y posiblemente en el futuro para creación de aplicaciones web. Llegar a comprender cada una de las etapas del desarrollo de un proyecto de este calado implica ganar experiencia para poder cambiar de tecnología de manera más ágil y por lo tanto poder ser un activo más interesante dentro del mundo laboral.

Publicado en Blog Neoland


Perpetrado por Mario Girón, desarrollador Full Stack y formador Senior
Puedes seguirme en: Twitter | Linkedin | Github

© 2020, Hecho con mucho ☕️