Hace poco más de un mes, la oficina de Nubank en Vila Leopoldina, São Paulo, se convirtió en el punto de encuentro para la comunidad Clojure de toda Sudamérica y otras regiones. La segunda edición de Clojure South reunió a más de 200 desarrolladores, investigadores y entusiastas del lenguaje durante dos días de intercambio de conocimientos, networking y celebración de la programación funcional.

El evento reforzó el papel de Brasil como uno de los centros más vibrantes para la comunidad Clojure, y el rol de Nubank como un punto focal activo para las comunidades tecnológicas.

Fue en este ambiente de entusiasmo compartido que Alessandra Sierra, Principal Software Engineer en Nubank, inauguró la conferencia con su charla “12 Years of Component” (12 años de Component). En ella, reflexionó no solo sobre la historia de una de las librerías más influyentes de Clojure, sino también sobre su experiencia personal ayudando a definir la forma en que miles de desarrolladores trabajan hoy en día.

Donde comenzó el viaje

La historia de Alessandra se remonta a 2007, cuando asistió a un meetup en la ciudad de Nueva York donde Rich Hickey presentó Clojure públicamente por primera vez. Salió de esa sesión impresionada, ya que Clojure traía el poder de un REPL (Read-Eval-Print Loop) interactivo al ecosistema de la JVM, permitiendo a los desarrolladores inspeccionar y modificar programas en ejecución y recibir retroalimentación inmediata.

Sierra se convirtió en una de las primeras en adoptar Clojure para el trabajo profesional y realizó contribuciones tempranas significativas a su librería estándar. Pocos años después, esto la llevó a unirse a Relevance (más tarde rebautizada como Cognitect), la cual fue adquirida por Nubank en 2020.

Descubre las oportunidades

El poder del REPL y la frustración de las interrupciones

Como consultora en Cognitect, trabajando con equipos que adoptaban Clojure para aplicaciones del mundo real, Sierra notó un patrón recurrente: el REPL otorgaba a los desarrolladores enormes ventajas en retroalimentación y velocidad, pero muchas estructuras de aplicaciones hacían que esa experiencia fuera más difícil de lo necesario.

A principios de la década de 2010, el desarrollo web en Clojure solía centrarse en Ring: simple y elegante, pero con sus desventajas. Ejecutar un servidor Jetty desde el REPL podía bloquear el hilo principal, y recargar el código a menudo dejaba definiciones obsoletas en la memoria. Reiniciar el REPL se volvió algo rutinario y frustrante.

Sierra quería que los desarrolladores mantuvieran el flujo del desarrollo interactivo incluso en sistemas con estado y complejidad. La pregunta central era simple pero fundamental: ¿Cómo puede un sistema seguir funcionando mientras el desarrollador continúa evolucionándolo?

El nacimiento de Component

En lugar de aceptar la fricción causada por reiniciar el REPL cada vez que el código cambiaba, Sierra dedicó los años siguientes a diseñar una nueva disciplina: un flujo de trabajo que eventualmente se conocería como el Reloaded Workflow, nombrado así por su popular artículo de blog “My Clojure Workflow, Reloaded”.

El objetivo era directo pero transformador: los desarrolladores debían poder evolucionar un sistema en ejecución de forma segura, consistente y sin perder el contexto.

Este enfoque combinó la librería tools.namespace con Component, junto con prácticas de diseño que fomentaban las dependencias explícitas, minimizaban el estado global y separaban la lógica pura de los límites con estado. El resultado fue una experiencia de desarrollo centrada en el REPL, donde las aplicaciones podían iniciarse, detenerse, actualizarse e inspeccionarse en tiempo real, sin romper el flujo de trabajo.

Component ofreció una forma ligera de modelar sistemas como partes independientes con ciclos de vida claros, sin sacrificar el diseño funcional. Su pequeña superficie de API y su estabilidad a largo plazo fueron intencionales: los cambios se introdujeron de manera lenta y deliberada, ayudando a que la librería permaneciera simple, accesible y duradera.

Un impacto duradero

Doce años después de su lanzamiento, Component sigue siendo una de las librerías más influyentes en el ecosistema Clojure. Ha sido referenciada más de 13,000 veces en el código fuente de producción de Nubank, sigue dando forma a extensiones y forks, e incluso ha inspirado adaptaciones a otros lenguajes; un nivel de longevidad que rara vez alcanzan herramientas con una huella tan mínima.

Sierra cerró su charla reconociendo lo afortunada que fue al estar en el lugar correcto, en el momento adecuado y con el trabajo indicado mientras Clojure emergía. Ese tipo de sincronía no se puede planificar.

Sin embargo, su consejo para quienes comienzan con Clojure o en el mundo del código abierto fue universal:

“Trabaja en cualquier cosa que te resulte interesante. Encuentra un patrón que sea útil, construye herramientas que ayuden a otros a beneficiarse de él. Pero, sobre todo, simplemente diviértete, porque eso es lo único que puedes elegir”

Descubre las oportunidades