En Nubank, la tecnología no es solo una herramienta: es la forma en que repensamos los servicios financieros, empoderamos a millones de personas en toda América Latina y desafiamos el status quo.

Desde nuestra primera línea de código en 2013, Clojure ha estado en el corazón de esta misión: un lenguaje simple pero poderoso que nos ha ayudado a escalar con calidad, construir sistemas confiables y cultivar una cultura de ingeniería única.

En 2023, Clojure celebró su 15.º aniversario, un hito que refleja no solo su longevidad, sino también su creciente influencia en empresas como Nubank.

Hoy, nos complace anunciar que Christoph Neumann se ha unido a Nubank como el primer Developer Advocate de Clojure. ¡Christoph se enfocará en apoyar a la comunidad de Clojure existente y hacerla crecer mediante iniciativas de difusión y desarrollo!

Christoph tiene experiencia en lenguajes de programación e ingeniería de software. Ha trabajado en manufactura, desarrollo de aplicaciones web y móviles, y en producción de televisión en vivo y deportes. A lo largo de su carrera, pasó del mundo académico a la industria y finalmente al emprendimiento.

Nos reunimos con Christoph para hacerle algunas preguntas mientras asume este importante rol.

¡Bienvenido, Christoph!

¿Cuál fue tu introducción a Clojure y a la comunidad?

Escuché sobre Clojure poco después de que Rich Hickey lo anunciara públicamente. Acababa de empezar a trabajar en HP y un compañero, Keith Irwin, me presentó Clojure y me hizo mi primera demostración. En ese momento pensé que Clojure era solo un juguete divertido para fanáticos de Lisp. ¡No le veía el valor en absoluto!

Antes de HP, yo era estudiante de doctorado en Oregon State y me fascinaba la investigación en lenguajes de programación. En ese entonces, creía que los lenguajes con muchas funcionalidades y sistemas de tipos complejos eran el camino para revolucionar la programación. Para mí, Lisp era algo “viejo” y “ya resuelto”.

¡Me tomó algunos años tomar en serio a Clojure! Keith, que ahora es amigo mío, me ayudó a ver toda la complejidad oculta detrás de los grandes lenguajes y cómo Clojure era mucho más simple. Después de ver la charla de Rich, “Simple Made Easy”, decidí redoblar mis esfuerzos para aprender Clojure, y Keith me ayudó a superar muchos obstáculos.

En esos primeros días, Keith era mi comunidad Clojure. Su persistencia amable me ayudó a ganar confianza, y luego pude recurrir a la comunidad más amplia en línea. Antes de su ayuda, los recursos que encontraba en internet solo me confundían. ¡Clojure era tan distinto a los lenguajes que había usado profesionalmente!

¿Cuáles son las características de Clojure que más útiles te han resultado en tu trabajo y qué te ha mantenido interesado con el tiempo?

¡Podría hablar de esto todo el día! Pero seré breve:

  1. Clojure es seguro
  2. Los datos son ciudadanos de primera clase
  3. Clojure es vivo e interactivo

Clojure es seguro. Por defecto, Clojure no permite modificar datos en su lugar (lo que se conoce como inmutabilidad). Puede sonar como un detalle menor, pero tiene enormes implicaciones. Elimina categorías enteras de errores. Además, te permite razonar con mayor claridad sobre el comportamiento del código a medida que el proyecto crece y escala.

Los datos son ciudadanos de primera clase. Clojure separa la información (los datos) del procesamiento (las funciones). Los datos se representan de forma genérica con estructuras nativas como listas, mapas y conjuntos. Esto permite que el lenguaje tenga una biblioteca extensa de funciones listas para trabajar con datos genéricos. Además, estas estructuras usan una notación amigable para las personas, por lo que es fácil definir, inspeccionar y guardar datos sin código especializado.

Clojure es vivo e interactivo. No necesitas compilar ni reiniciar tu aplicación mientras desarrollas. En cambio, lanzas el entorno de ejecución de Clojure, lo conectas a tu editor y envías código fuente en tiempo real para que se ejecute al vuelo (lo que se llama REPL conectado). Toda la aplicación y su estado están en memoria. Puedes inspeccionar cualquier parte, agregar funcionalidades y redefinir cosas sin reiniciar.

Para mí, desarrollar en Clojure ha sido una experiencia completamente diferente comparada con otros lenguajes. El desarrollo se siente rápido y visual. Puedo encontrar una solución inicial rápidamente y hacerla evolucionar hacia algo fácil de entender y mantener.

¿Cómo crees que podemos introducir Clojure a nuevas personas?

Clojure es bastante diferente de los lenguajes más populares, por eso es todo un reto presentarlo a nuevos desarrolladores. Como mencioné, yo necesitaba que alguien me guiara y me ayudara a “entenderlo”. Muchas cosas son distintas. Algunas diferencias son obvias, como la sintaxis, pero otras no lo son, como el flujo de trabajo con live coding.

Clojure es un lenguaje de programación puramente funcional, así que las diferencias van más allá del tooling, la sintaxis o el flujo de trabajo. Este segundo nivel de aprendizaje requiere un cambio de mentalidad, pero abre puertas a arquitecturas y soluciones que mejoran la mantenibilidad, el rendimiento y la reutilización a largo plazo.

Creo que la mejor forma de introducir Clojure es mostrar el paquete completo, empezando en pequeño y escalando a partir de ahí: sintaxis, datos genéricos, conceptos funcionales, herramientas, edición estructural y el flujo de trabajo con REPL conectado.

¿Cuál es tu enfoque para equilibrar educación, difusión y recopilación de feedback en el trabajo de advocacy?

Los tres elementos son esenciales y están conectados. Sin difusión, nadie se entera; pero cuando alguien escucha, necesita aprender. Para aprender, se necesitan recursos, y esos recursos no pueden mejorar sin retroalimentación. Es un ciclo constante de creación, compartición y mejora, todo al servicio de una misión central.

Mi misión es asegurarme de que los desarrolladores tengan una experiencia fenomenal con Clojure desde el inicio, y que esa experiencia siga siendo positiva a medida que crecen y aprenden.

Cuando una comunidad crece, los efectos en red entran en juego. Por eso, el trabajo de advocacy también implica organización para fomentar esos efectos indirectos. Es necesario construir sistemas, estructuras y asociaciones que ayuden a la comunidad a crear y compartir su propio contenido de forma eficaz y sostenible.

Pero incluso cuando la comunidad está prosperando, es fundamental continuar con el trabajo de la misión central, porque ningún lenguaje puede prosperar si sus nuevos miembros se frustran y se van.

¿Qué es lo que más te entusiasma en este nuevo rol?

Oh, eso es fácil. Lo que más me emociona es conocer a desarrolladores que están comenzando con Clojure. Si sientes curiosidad, estás dando tus primeros pasos o incluso si eres escéptico (como lo fui yo), me encantaría escucharte.

¡Por supuesto, también me encanta la comunidad de Clojure en general! Me gustaría saber cómo ha sido tu experiencia con el lenguaje y la comunidad. ¡Encuéntrame online!

¿Dónde pueden encontrarte en línea?

El mejor lugar para contactarme es como @neumann en el Slack de Clojurians (http://clojurians.net/). ¡Es un lugar amigable tanto para principiantes como para desarrolladores experimentados!

Si quieres más información sobre mí y mi misión, visita christophneumann.dev.

Construyendo el Futuro Juntos

En Nubank, creemos que las comunidades sólidas y el conocimiento compartido de forma abierta son clave para impulsar el progreso tecnológico significativo. La llegada de Christoph como nuestro primer Clojure Developer Advocate marca un capítulo emocionante en nuestro compromiso con el ecosistema Clojure y con el empoderamiento de desarrolladores en todo el mundo.

Nos emociona seguir contribuyendo al crecimiento y evolución de Clojure — no solo como lenguaje, sino como una comunidad vibrante de pensadores, constructores e innovadores.

Si tienes curiosidad por Clojure o deseas colaborar, no dudes en contactar a Christoph o a cualquiera de nosotros en Nubank. Juntos, sigamos construyendo el futuro de Clojure.

Descubre las oportunidades