Seleccionar página

En aras de la productividad el mundo del desarrollo se ha ido ampliado de forma constante con funciones, módulos, librerías, paquetes, frameworks y entornos de desarrollo cada día más completos, complejos y sofisticados: Angular, React, Vue, Express, Socket.io, Meteor, etc. Esta pléyade de código desarrollado por personas muy inteligentes, juiciosas y experimentadas nos hacen cada día la vida más fácil. De esta forma podemos centrarnos en los requisitos de nuestros clientes, usuarios o product owners y olvidarnos de los procesos internos que realizan estos códigos. Es sin duda algo muy positivo.

El problema es que el uso continuado de este código nos aísla de la base, de lo básico y, con el tiempo, llegamos a olvidarlo. Ya casi nadie sabría programar en un navegador sin en omnipresente JQuery o se plantearía desarrollar un servidor HTTP en NodeJS sólo con la librería nativa. No es algo necesariamente malo, pero debemos ser conscientes de que cada día estamos un poco más alejados del desarrollo base, aquel que se hace sin complementos, sólo con lo que nos ofrece un editor de texto y las funciones y funcionalidades que dispone nuestro navegador o en NodeJS sin incluir otras dependencias.

Es recomendable desarrollar de vez en cuando -por ejemplo, una vez al año- un pequeño proyecto con cero dependencias, programando por nosotros mismos todo lo que necesitamos. Es seguro que deberemos sacrificar la productividad, pero volveremos a recordar lo básico de la programación, volveremos a comprender las bases de nuestro entorno y, seguramente, seremos más conscientes de la gran cantidad de cosas que están en el fondo de nuestra caja de herramienta y, por falta de costumbre, hemos olvidado.

Por ejemplo, el recordaremos el uso de document.querySelector() en vez del casi universal $(), descubriremos que los módulos incluidos en NodeJS tienen una gran cantidad de funcionalidades y que no siempre hay que utilizar NPM. Volveremos a descubrir un mundo sin Gulp, Grunt, Webpack, Babel, etc. Veremos que, por ejemplo, mientras nosotros usábamos Babel para todo, el soporte de ES6 está cada día más extendido y la necesidad de un compilador es, en ocasiones, menor de lo que pensábamos.

Seguramente también nos encontraremos con alguna funcionalidad verdaderamente difícil de abordar sin echar mano de una librería externa bien desarrollada. Por ejemplo, en el último ejercicio que estamos abordado sin dependencias nos hemos encontrado con la dificultad de desarrollar un servidor WebSocket desde cero. En estos casos es una buena idea copiar y adaptar un código de otros, siempre con el objetivo de comprender como funciona. Hay que recordar que estamos haciendo un ejercicio para aprender o recordar lo que se nos había olvidado después de trabajar todos los días con funcionalidades de mayor nivel.

Ahora que empieza la parte más calurosa del verano en el hemisferio norte, y entramos en la parte más fría del invierno en las tierras australes, es un buen momento para darnos este pequeño respiro y trabajar por unos días sin dependencias externas, o casi -que tampoco hay que ser extremista. Estamos seguros de que disfrutareis y aprenderéis al desarrollar un proyecto con cero dependencias.

Novedades

Superando la comprobación estricta en Set y Map

Set y Map son unas de los mejores y más útiles manejadores de estructuras de datos que nos ofrece Javascript. No obstante tienen una limitación, la unicidad de sus claves se establece por medio de una comparación estricta y con los objetos esto no puede ser lo que necesitamos. Te proponemos una forma de superar esta limitación.

Retrospectiva de la función equal() tras varios años de uso

Vamos a repasar las lecciones aprendidas después de un par de años utilizando una función de comparación universal que comprueba si dos elementos de Javascript son equivalentes entre sí. Muchas de las conclusiones de esta restrospectiva pueden ser de utilidad a la hora de plantearte el diseño de una función con vocación de reutilización generalista.