Saltar al contenido

NodeJS vs.Rails: cómo aprender desarrollo web

Es posible que haya encontrado Ruby on Rails, NodeJS, AngularJS, JavaScript y quizás la pila “MEAN” (MongoDB, ExpressJS, AngularJS, NodeJS) en su investigación de las diferentes tecnologías de programación. Los recién llegados a menudo gravitarán hacia el aprendizaje solo de JavaScript, un solo lenguaje de programación, pero a menudo se confunde con un atajo para convertirse en un desarrollador web completo. Sin embargo, la pila “MEAN” puede proporcionar soluciones más simples a una variedad más amplia de problemas.

Con frecuencia me hacen preguntas como esta:

Si aprendo JavaScript y no la pila “MEAN” (MongoDB, ExpressJS, AngularJS, NodeJS), ¿el desarrollo web será 4 veces más fácil para mí? Si dedico mi tiempo a JavaScript, ¿seré 4 veces mejor que cualquier desarrollador que utilice esas cuatro tecnologías?

Parece intuitivo que estaríamos 4 veces mejor como desarrolladores de JavaScript de pila completa, pero este es un error común. Está bien, exploremos por qué.

Conocimiento específico del dominio

Aprender JavaScript por sí solo no es una vía rápida para el desarrollo web de pila completa. Aprender solo la sintaxis de un lenguaje de programación (conocimiento específico del dominio) no significa que seremos mejores desarrolladores web de pila completa. El conocimiento específico del dominio por sí solo hará que nuestra progresión de habilidades sea una cantidad insignificante más fácil en el gran esquema de la carrera de cualquier desarrollador. Hay un mejor enfoque.

Conocimiento procedimental

La forma inteligente de convertirse en un desarrollador web completo es aprender primero cómo descubrir las cosas que no sabemos (conocimiento de procedimientos) y cómo enseñarnos a nosotros mismos conceptos extranjeros. Si queremos tomar una decisión a largo plazo que beneficiará el crecimiento de nuestras carreras de desarrolladores, debemos pensar en los lenguajes de programación de manera diferente.

Queremos encuentra la mejor herramienta para el trabajo y evaluar diferentes tecnologías en función de sus méritos. Aquí hay una útil analogía de un problema práctico que podemos usar para comprender los tipos de problemas que enfrentamos en el desarrollo web.

¿Cómo construimos una estantería?

Solución n. ° 1: muchas herramientas

Podemos utilizar una amplia variedad de herramientas. Podemos usar una sierra para cortar la madera, clavos para unir las piezas de madera, un martillo para clavar los clavos a través de la madera, pegar en algunos lugares que no son apropiados para clavos. Un simulacro también puede ser útil, dependiendo de los planos que utilicemos.

Solución n. ° 2: una herramienta

Podemos usar un martillo. En lugar de cortar la madera con una sierra, podemos usar el lado opuesto del martillo para partir los trozos de madera en trozos más pequeños. Podemos conectar las piezas de madera con clavos que clavamos en la madera con el martillo. Podemos evitar el uso de planos porque eso significará que tendremos que aprender a usar una nueva herramienta.

En otras palabras, con frecuencia me hacen preguntas como esta:

Si aprendo a usar un martillo y no las herramientas del plano (sierra, clavos, pegamento, taladro), ¿será 4 veces más fácil para mí construir una estantería? Si concentro mi tiempo en cómo usar un martillo, ¿crearé 4 veces más estanterías que cualquiera que use esas cuatro herramientas?

Suena ridículo ahora, ¿verdad? Es posible averiguar cómo cortar madera con un martillo, pero ¿por qué querríamos hacerlo, dado que existen herramientas especiales para el trabajo? Aprender una herramienta en contraposición a cuatro herramientas no es la única consideración para decidirse por un lenguaje de programación.

Aunque NodeJS, ExpressJS, AngularJS y MongoDB son herramientas excelentes, en muchos casos existen otras herramientas que funcionarán mejor para un proyecto de desarrollo web específico. Antes de que podamos decidirnos por una herramienta, primero debemos comprender el problema que queremos resolver. Luego, podemos buscar tecnologías disponibles que completen mejor el trabajo específico. Esto nos ayudará a tomar una decisión informada sobre qué herramienta utilizar.

¿Donde empezamos?

Se necesita tiempo para determinar la herramienta que mejor completa un trabajo específico. Implica aprender cómo las diferentes herramientas resuelven diferentes problemas, cómo funcionan juntas las diferentes herramientas y cómo se construyen estructuralmente las diferentes aplicaciones web.

Cuando cambiamos nuestro enfoque hacia la comprensión de los propósitos de las diferentes tecnologías, la exageración en torno a un lenguaje de programación y su “número de búsquedas en Google” de repente se vuelven irrelevantes. Lo dividimos en cuatro partes:

1. Conceptos clave

¿Qué es una aplicación web, una base de datos, front-end y back-end?

2. Desarrollo de front-end

¿Qué es un navegador web, HTML, CSS, JavaScript y frameworks front-end?

3. Sistemas de bases de datos

¿Dónde almacenamos los datos y qué es una base de datos relacional y una base de datos NoSQL?

4. Desarrollo de back-end

¿Qué es un servidor y cómo impulsa nuestra aplicación web?

1. Conceptos clave

Hay una serie de conceptos diferentes de aplicaciones web modernas que todos los desarrolladores de pila completa deben aprender. Pero primero, ¿qué es una aplicación web?

Aplicación web

Una aplicación web es un programa que genera páginas web dinámicas, en constante cambio, para cada solicitud web. A menudo, estos tendrán formularios que aceptan la entrada del usuario. Si queremos hacer algo de lo siguiente, necesitaremos crear una aplicación web:

Ejemplos de aplicaciones web son Facebook, Twitter, Instagram, Pinterest y Yelp.

Una base de datos almacena la información que alimenta nuestra aplicación. Nuestra aplicación web se conecta a nuestra base de datos para utilizar los datos recopilados. Hay muchos tipos diferentes de bases de datos y formas de almacenar los datos ingresados ​​por el usuario.

Interfaz

La interfaz de nuestra aplicación web es lo que la gente ve e interactúa. El código de front-end generalmente está orientado visualmente y cambiar el código en este nivel afectará lo que la gente ve.

Back-end

El back-end de nuestra aplicación web es lo que permite que un programa realice funciones abstractas; una persona que utilice un programa en un navegador web le dirá a la aplicación web que almacene y recupere datos de una base de datos. Aquí es donde vive la lógica más compleja.

2. Desarrollo de front-end

Los navegadores web como Google Chrome, Internet Explorer y Safari comprenden tres lenguajes diferentes: HTML, CSS y JavaScript, conocidos como código de front-end.

JavaScript comunica al navegador web la comportamiento de una página. JavaScript permite que los sitios web creen interacciones, utilizando datos, en una página.

jQuery (JavaScript)

JavaScript es un lenguaje intrínsecamente complejo, y se desarrolló una alternativa llamada jQuery para simplificar el uso de JavaScript. Esta implementación nos permite escribir algunas líneas de código jQuery para lograr el mismo resultado que una docena de líneas de código JavaScript.

Aplicación web

Una aplicación web es un programa funcional cargado por el navegador web mediante HTML, CSS y JavaScript. Cuando creamos aplicaciones web, es posible que necesitemos una interfaz compleja sin tener que volver a cargar la página. Las aplicaciones web como estas se denominan “aplicaciones de una sola página”. Ejemplos de aplicaciones populares de una sola página son:

Marco de interfaz de usuario

Los marcos de front-end son útiles para aplicaciones de una sola página que tienen flujos de usuario complejos y requieren interacciones fluidas sin tener que volver a cargar la página. BackboneJS, AngularJS, EmberJS y ReactJS son algunos marcos que pueden simplificar los flujos de usuarios radicalmente complejos integrados en el lenguaje JavaScript.

Un error común es utilizar un marco donde no es necesario. La creación de una aplicación web con un marco hará que el proceso de desarrollo sea innecesariamente complicado. Si usamos frameworks de front-end en situaciones en las que no son necesarios, es probable que tengamos decenas de archivos con 3-5 líneas del “encantamiento mágico” para que nuestra aplicación funcione. Por el contrario, escribir varias líneas de código en un solo archivo es una solución más sencilla.

Cuando usamos el conocimiento procedimental, podemos entender si un marco es la mejor herramienta para el trabajo.

3. Sistemas de bases de datos

Las aplicaciones web necesitan almacenar datos de usuario para funcionar. En lugar de guardar datos como archivos individuales, las aplicaciones web usan bases de datos para mover datos de manera eficiente dentro y fuera de las tablas. Hay dos categorías principales de bases de datos: una base de datos relacional y una base de datos NoSQL.

Base de datos relacional

Las bases de datos relacionales utilizan un lenguaje llamado SQL (lenguaje de consulta estructurado), un protocolo de programación para bases de datos. Los datos de las aplicaciones web se almacenan en una tabla (columnas y filas) similar a una hoja de Excel. SQL requiere que especifiquemos los encabezados de las tablas antes de almacenar datos. SQL es un lenguaje de base de datos confiable utilizado por muchas aplicaciones web modernas. Tanto Google como Facebook utilizan MySQL de forma extensiva. PostgreSQL, MariaDB, Oracle SQL y Microsoft SQL son varias implementaciones que se utilizan generalmente en producción.

Estas bases de datos pueden conectarse con la mayoría de los lenguajes de programación. Las bases de datos SQL son idénticas, y cada implementación tiene sus propios matices fáciles de captar. Es muy parecido a aprender inglés en el Reino Unido o EE. UU., Hay algunas diferencias, pero los fundamentos son los mismos.

ORM (Object Relational Mappings) es un desarrollo reciente en la escritura de aplicaciones controladas por bases de datos y existe en la mayoría de los lenguajes de programación. Este sistema nos permite convertir código escrito en un lenguaje de programación, en comandos SQL necesarios para comunicarnos con la base de datos escrita en un lenguaje de programación diferente. Los ORM simplifican la escritura de comandos que extraen y empujan datos dentro y fuera de una base de datos.

Base de datos NoSQL

NoSQL es una tecnología reciente y se está adoptando ampliamente en la industria. Esto nos permite tener listas de bases de datos e insertar datos en cada una sin una estructura. Debido a que NoSQL es flexible, pueden existir inconsistencias en cómo se almacenan los datos. Todavía no existe un estándar sobre cómo se deben almacenar los datos dentro de las bases de datos NoSQL, por lo que cada tipo de base de datos NoSQL es considerablemente diferente y no se traducirá bien a otras implementaciones. MongoDB, CouchDB, RavenDB y Redis son diferentes tipos de bases de datos NoSQL.

MongoDB es una implementación popular entre las bases de datos NoSQL. Tiene algunas características interesantes para escalar una aplicación a millones de usuarios, con cientos de solicitudes de bases de datos cada una, creando aplicaciones en “WebScale”. Las características de MongoDB hacen de esta una solución ideal para servidores de anuncios y otras aplicaciones que necesitan manejar cientos de millones de solicitudes por día. Para los sitios web que manejan menos de 10 millones de solicitudes por día, como los mercados y la mayoría de los sitios de comercio electrónico, elegir otra base de datos NoSQL puede ser una solución más simple.

4. Desarrollo de back-end

Un servidor alimenta una aplicación web para almacenar y recuperar datos en una base de datos y cargar el programa en un navegador web. Los servidores entienden los lenguajes de programación y sus marcos, conocidos como código back-end. Exploramos algunas tecnologías populares.

Un código de back-end popular es Ruby. Este lenguaje intuitivo hace que sea accesible para que los principiantes comprendan los fundamentos de la programación.

NodeJS (JavaScript)

JavaScript es un lenguaje de programación que también se puede utilizar para comunicarse con el servidor. Cuando se usa en el back-end, se llama “NodeJS”. JavaScript es un lenguaje intrínsecamente complejo con conceptos informáticos como funciones anónimas, devoluciones de llamada y herencia prototípica.

Marco de back-end

Los marcos de aplicaciones web se utilizan para simplificar muchas líneas de código en unas pocas líneas de código. Esto permite el desarrollo back-end de una aplicación web más eficiente.

Rails – Framework para Ruby

Ruby on Rails es un marco de back-end que se centra en la “felicidad del desarrollador”. El principio central de Ruby on Rails es “la convención sobre la configuración”. Este marco está diseñado para hacer que el desarrollo de back-end sea intuitivo para que los equipos escriban juntos.

ExpressJS – Marco para NodeJS (JavasScript)

ExpressJS es un marco de back-end que se ejecuta en NodeJS, conocido en la industria como un “marco web sin supervisión”.

¿Qué lenguaje de programación utilizamos?

Las comparaciones entre los lenguajes de programación y sus marcos se pueden encontrar en Internet:

Pero si es nuevo en el desarrollo de back-end, JavaScript es un primer idioma muy complicado de aprender. Si aún tiene que aprender los fundamentos de la programación, Ruby será la mejor herramienta para el trabajo.

Al obtener el conocimiento de procedimiento mediante el uso de un lenguaje de programación y un marco, podemos entender fácilmente cómo usar otros lenguajes de programación y sus marcos. Si somos buenos en Rails, podremos adquirir ExpressJS muy rápidamente. Si somos buenos en ExpressJS, podremos aprender Rails rápidamente.

Como principiante, para pensar como un desarrollador web completo, siempre usamos la mejor herramienta para el trabajo. Al comprender el problema y lo que cada herramienta puede resolver, podemos simplificar el desarrollo de una aplicación web.

Este contenido se publicó originalmente aquí.