Llamamos 'patrón de diseño' a ciertas soluciones más o menos estandarizadas a problemas recurrentes que sufren los programadores, y que además te permiten ahorrar tiempo al comunicarte con tus compañeros de equipo, al dotaros de un lenguaje común: puedes hablar con ellos de implementar una 'abstract factory' sin necesidad de andar explicando el esquema de funcionamiento del mismo.
Es importante aclarar que un 'patrón de diseño' no es lo mismo que un 'snippet', no se trata de una porción reusable de código ajeno que podamos limitarnos a copiar y pegar en el nuestro propio, sino de un concepto general que resuelve —previa adaptación a nuestro programa— un problema concreto.
Podemos estar programando durante años sin conocer un sólo patrón (lo cual no impedirá que en algún momento lo implementemos sin ser conscientes de ello), pero siempre resultará interesante aprender sobre ellos para saber cómo hacer frente a los problemas que vayamos encontrando. Y hoy os traemos un recurso especialmente interesante para aprenderlos si eres un programador web.
Learning Patterns / Patterns.dev
Se trata de 'Learning Patterns', un libro publicado recientemente —y, más interesante aún, gratuitamente— por Addy Osmani y Lydia Hallie. En su versión libro, cuenta con 41 secciones que —introducción y conclusiones al margen— abordan cada una un problema a resolver y/o patrón de diseño cuando programamos aplicaciones basadas en JavaScript y React.
Podemos obtener el ebook de manera gratuita en plataformas como Apple Books y Google Play, o descargarlos directamente a nuestro PC (tanto en PDF como en ePub) de Archive.org, LeanPub o SpeakerDeck.
Pero la versión web, además de copias de toda la información contenida en las páginas del libro electrónico (complementada con animaciones y ejemplos prácticos alojados en CodeSandbox), alberga también múltiples recursos aportados por la comunidad y referidos a otros frameworks como Vue.js, Angular, Node.js, etc.; además de una enorme selección de vídeos sobre temas relacionados con el contenido del libro.
Autores
Addy Osmani, uno de los dos autores principales de 'Learning Patterns', es un ingeniero de software que trabaja en Google Chrome liderando un equipo centrado en el desarrollo de herramientas como Lighthouse, PageSpeed Insights, los Informes de Experiencia de Usuario de Chrome, etc.
Hace una década ya fue el autor de un libro similar para la editorial O'Reilly: "Learning JavaScript Design Patterns". Recientemente, en el podcast Listen Notes, explicaba cómo terminó escribiendo ambos libros:
Hace unos 10 años, yo estaba desarrollando aplicaciones web para diferentes compañías de la lista Fortune 500, y me di cuenta de que estábamos escribiendo un montón de código espagueti. Por aquel entonces, no contábamos aún con algunas de las características modernas de JavaScript (módulos, clases, etcétera), así que la gente trataba de improvisar basándose en lo que llevaban décadas viendo en otros lenguajes.
Además, en los años noventa la gente había empezado a hablar más a menudo sobre los patrones gracias al libro 'Patrones de Diseño' de Gamma, Helm, Johnson y Vlissidess, una obra realmente influyente, pero que la gente no sabía como aplicar a JavaScript y al front-end en general. Así que traté de crear un libro que lo interpretara, al menos desde mi perspectiva.
Pero creo que, 10 años después, las cosas han cambiado: los frameworks se usan cada vez más para construir aplicaciones complejas, así que pensé que sería interesante echar un nuevo vistazo al tema.
Así, invitó a Lydia Hallie (consultora y formadora de ingeniería de software experta en JavaScript, React, Node, GraphQL y tecnologías sin servidor) y en plena pandemia se lanzaron a dar forma a un nuevo libro; una tarea que esperaron que durase dos meses y terminó llevándoles dos años.