Damián hablando por un micrófono en el escenarioRuby on Rails

Hola, soy Damián.

Publiqué mi primera web en 2006 y, desde 2011, trabajo sobre todo en aplicaciones Ruby on Rails. He visto una gran variedad de retos con Rails. Hoy podemos usar agentes de código increíbles para convertir cualquier app Rails en una obra maestra.

Me encanta cuestionar las ideas, del bajo nivel (DevOps) a la perspectiva del usuario final (UI).

Hoy me centro en las buenas prácticas de ingeniería de software y en los agentes de código para mejorar las apps Rails a todos los niveles.

Los problemas de Rails que no dejan de volver.

Una lista no exhaustiva de lo que me gusta resolver en apps Rails, además, por supuesto, de diseñar y lanzar nuevas funcionalidades.

  1. Una app que se vuelve más lenta a medida que crece

    Perfilo las peticiones lentas, corrijo las consultas N+1 y los índices que faltan, y reduzco los cuellos de botella de renderizado y de memoria.

  2. Actualizaciones y parches de seguridad que se van retrasando

    Actualizo Ruby, Rails y cada gem, incluidas las dependencias transitivas, con revisión de avisos de seguridad, tests y comprobaciones de compatibilidad.

  3. Una cobertura de tests que no detecta los fallos reales

    Cubro los recorridos críticos, los permisos y los datos inesperados, mejoro las fixtures y arreglo los tests inestables para que el verde signifique algo.

  4. CI lenta y tiempos de arranque dolorosos

    Recorto los builds lentos y el arranque de Rails, simplifico la preparación de los tests y equilibro los workers en paralelo para tener feedback más rápido.

  5. Entornos de QA que bloquean al equipo

    Creo previews aisladas por rama, con configuración reproducible y datos realistas y seguros, para que los revisores puedan probar antes del merge.

  6. Assets pesados o que se rompen al desplegar

    Simplifico los pipelines de assets, reduzco el peso del CSS y del JavaScript, y corrijo los assets obsoletos o que faltan tras un despliegue.

  7. Una interfaz que parece varios productos

    Unifico componentes, espaciados e interacciones en un design system coherente, con layouts responsive y comprobaciones de accesibilidad.

  8. Una codebase que nadie quiere tocar

    Desenredo modelos, controladores y callbacks con pequeños refactorings, con tests de regresión que protegen el comportamiento actual.

  9. Background jobs e integraciones que fallan en silencio

    Hago que los jobs se puedan reintentar sin riesgo, gestiono los fallos de las API y monitorizo las colas para que el trabajo atascado sea visible y recuperable.

  10. Despliegues y migraciones que parecen arriesgados

    Escalono los cambios de esquema, separo los backfills grandes y refuerzo las comprobaciones de despliegue y los planes de rollback para reducir el riesgo de cada release.

  11. Los mismos problemas en cada code review

    Convierto el feedback recurrente en convenciones compartidas, comprobaciones automáticas y reviews asistidas por agentes, manteniendo el criterio humano en las decisiones.

  12. Conocimiento atrapado en la cabeza de la gente

    Documento las reglas de negocio y las convenciones, y hago que la instalación sea reproducible, para que desarrolladores y agentes trabajen con confianza.

También me encanta trabajar en la UI.

Trabajo tanto en Rails como en la UI, desde los modelos y las API hasta pantallas rápidas y claras que la gente disfruta usando.

La IA me ayuda a explorar e implementar ideas de diseño manteniendo un producto coherente y un código mantenible.

Panel de Spark Pixel con gráficos de ventas, cifras de ingresos y una tabla de transacciones

IA, Ruby y mi forma de trabajar.

Fui de los raros que creían en el desarrollo agéntico a principios de 2025. Hoy lo uso para mejorar grandes aplicaciones Rails.

Los agentes trabajan con objetivos claros, reglas y entornos seguros. Yo reviso el código, tomo las decisiones de arquitectura y afino la siguiente ejecución.

ProblemaLo que hice
Las reviews repiten los mismos detalles Analicé las últimas 500 pull requests de un gran monolito Rails y extraje 40 reglas recurrentes para un primer agente Code Reviewer.
Los tests no detectan los datos que rompen producción Amplié un conjunto de fixtures de RSpec con datos deliberadamente malformados para detectar antes los casos límite. Prefiero la “Data coverage” a la “Test coverage”.
El trabajo de entrega le quita tiempo a las decisiones de producto Los agentes pueden crear un entorno de QA por rama, acelerar la CI, refactorizar componentes centrales y mejorar su propia precisión y su consumo de tokens.

El modelo adecuado para cada tarea.

Uso varias herramientas según el trabajo: Codex, Claude y Cursor, además de OpenRouter para probar nuevos modelos. Cada modelo es bueno en tareas distintas, y me gusta que critiquen el trabajo de los otros, como Opus revisando código escrito por GPT.

Reutilizo skills existentes, pero me encanta escribir los míos: fáciles de revisar, fáciles de ajustar y hechos a medida para el proyecto en el que trabajo.

  • Claude
  • Codex
  • Cursor
  • OpenRouter

Las herramientas a las que vuelvo una y otra vez.

Lo que siempre llevo en la mochila: las librerías y el stack con los que trabajo.

  • Framework Rails 5+ · Ruby 2.7+
  • Bases de datos PostgreSQL · MySQL · Redis · Elasticsearch
  • Background jobs Sidekiq · Solid Queue · Good Job · Delayed Job
  • Tests RSpec · Minitest · FactoryBot · Fixtures · A medida
  • Autenticación Devise · OmniAuth · A medida
  • Autorización Pundit · CanCanCan · A medida
  • JavaScript frontend Hotwire · Turbo · Stimulus · Vue.js · React · JS a medida
  • CSS frontend Tailwind · Bootstrap · Material Design · CSS a medida
  • Pipelines de assets Importmap · Sprockets · Propshaft · Webpacker
  • API GraphQL · REST · Jbuilder
  • Despliegue Docker · Kubernetes · Kamal · AWS · Azure · GCP · A medida
  • CI / CD GitHub Actions · Slack
  • Subida de archivos Active Storage · CarrierWave · Shrine
  • Paneles de administración ActiveAdmin · Administrate · RailsAdmin · A medida
  • Monitorización Sentry · Bugsnag · Datadog

Me encanta ayudar a los equipos a subir de nivel juntos.

Enseñar forma parte de mi forma de trabajar. Comparto lo que aprendo, explico el razonamiento detrás de una decisión y ayudo a todo el equipo a ganar confianza con la codebase.

Damián presentando una charla de Ruby en RULU Lyon
RULU Lyon, 2012

15 años de Rails.

Cada proyecto es una excusa para aprender algo nuevo.

  1. 2011–2020 HashtagBattle, mi primer producto Rails en producciónEscalado a miles de usuarios por minuto y mantenido durante ocho años
  2. 2013–2016 Geeksters, una de las primeras agencias Ruby en MarruecosCreamos The House Of Geeks en Agadir, donde enseñé Ruby on Rails e hice crecer el equipo de 2 a 15 desarrolladores full-stack
  3. 2017 Due diligence de Rails para la adquisición de Loco2Una auditoría de calidad de una gran aplicación Rails crítica para el negocio
  4. 2017–2019 Ruby y Sidekiq a gran escalaPostgreSQL, Sidekiq Enterprise, Kubernetes, API y un pipeline de CI reducido de 45 a 4 minutos
  5. 2017–hoy Localtower, un Rails Engine para migraciones de base de datosCreado para soportar aplicaciones de Rails 5.2 a Rails 8 y destacado en Ruby Weekly
  6. 2023–2026 kelvin, un gran monolito RailsMi experiencia Rails más reciente, trabajando con una codebase de producción consolidada
  7. 2026 Una contribución mergeada en RailsPull request #56967 en el repositorio de Rails

Hagamos avanzar tu aplicación Rails.

Reservar una llamada de 15 minutos

Hablo con fluidez español, francés e inglés.

Damián sentado en el escenario, hablando por un micrófono