Blog

Artículos sobre arquitectura, testing y buenas prácticas de desarrollo backend.

RSS

20 artículos

Arquitectura Toma de Decisiones Diseño de Software

Cómo tomar mejores decisiones técnicas

Una mejor decisión técnica rara vez es la que elige la tecnología más brillante. Es la que entiende el problema real, hace explícitas las restricciones, compara opciones honestamente y deja por escrito por qué se eligió. Decidir bien es un proceso, no un golpe de intuición.

· 9 min de lectura
Leer más
Cómo tomar mejores decisiones técnicas
Mis pasatiempos no lo parecen
Open Source Java

Mis pasatiempos no lo parecen

Se supone que un pasatiempo debe alejarte del trabajo. El mío se parece a trabajar gratis: escribir código open source. Esta es la historia de dmx-fun, una biblioteca de programación funcional para Java que empecé hace un año, y de por qué construirla es descanso y no obligación.

· 5 min de lectura
Leer más
Cómo identificar bounded contexts
DDD Arquitectura

Cómo identificar bounded contexts

Identificar bounded contexts no es dibujar cajas en un diagrama ni partir el sistema por tablas. Es encontrar las fronteras donde el lenguaje cambia de significado. Esas costuras ya existen en cómo habla el negocio; el trabajo es escucharlas, no inventarlas.

· 8 min de lectura
Leer más
Muchas capas arquitectónicas no agregan valor
Arquitectura Diseño de Software

Muchas capas arquitectónicas no agregan valor

Añadimos capas por reflejo, convencidos de que separar es siempre desacoplar. Pero una capa que solo reenvía datos de una a otra no aísla nada: agrega ceremonia, costo de navegación y la ilusión de un diseño limpio. Una capa solo se gana su lugar cuando absorbe un cambio que de otro modo se propagaría.

· 8 min de lectura
Leer más
La diferencia entre diseño y arquitectura
Arquitectura Diseño de Software

La diferencia entre diseño y arquitectura

Diseño y arquitectura se usan como sinónimos, pero no lo son. La distinción no está en el tamaño del diagrama ni en el cargo de quien decide, sino en el costo de cambiar una decisión. Entender esa diferencia cambia cómo inviertes tu atención y qué peleas vale la pena dar temprano.

· 8 min de lectura
Leer más
El costo humano de la complejidad técnica
Arquitectura Complejidad

El costo humano de la complejidad técnica

La complejidad técnica no solo se paga en latencia, bugs y horas de mantenimiento. Se paga en personas: en la carga cognitiva que erosiona la atención, en el miedo a tocar el código, en el conocimiento que se concentra en pocas cabezas y en la lenta fuga de la gente que ya no aguanta.

· 7 min de lectura
Leer más
Muchos sistemas distribuidos son problemas organizacionales disfrazados
Arquitectura Sistemas Distribuidos

Muchos sistemas distribuidos son problemas organizacionales disfrazados

Detrás de buena parte de las arquitecturas distribuidas no hay un requisito técnico, sino una estructura organizacional que se volvió código. Cuando un equipo divide un sistema en servicios, muchas veces no está resolviendo un problema de escala — está reproduciendo sus propias fronteras de comunicación.

· 9 min de lectura
Leer más
Seniority más allá del código
Carrera Seniority

Seniority más allá del código

El seniority no se mide en años de experiencia ni en la cantidad de tecnologías que conoces. Se mide en la calidad de tus decisiones, en el impacto que tienes sobre las personas a tu alrededor, y en la capacidad de navegar ambigüedad sin perder el rumbo.

· 9 min de lectura
Leer más
La Ley de Conway y las estructuras organizacionales
Arquitectura Organizaciones

La Ley de Conway y las estructuras organizacionales

Las organizaciones diseñan sistemas que son copias de su estructura de comunicación. La Ley de Conway no es una curiosidad histórica — es una fuerza activa que moldea tu arquitectura, tu documentación, tus planes de carrera y cómo fluye la información dentro de tu empresa.

· 11 min de lectura
Leer más
DDD no se trata de entidades
DDD Arquitectura

DDD no se trata de entidades

El error más común al adoptar Domain-Driven Design es creer que se trata de anotar clases con @Entity y modelar tablas en objetos. DDD es una disciplina de diseño estratégico, y las entidades son apenas una pieza menor del rompecabezas.

· 9 min de lectura
Leer más
BigDecimal no siempre es la decisión correcta
Java Arquitectura

BigDecimal no siempre es la decisión correcta

La regla 'usa BigDecimal para dinero y finanzas' está tan arraigada que dejamos de cuestionarla. Un issue abierto en una librería de finanzas cuantitativas me obligó a replantearme el dogma.

· 8 min de lectura
Leer más
Testing por capas: menos mocks, más contratos y entornos reales
Testing Calidad

Testing por capas: menos mocks, más contratos y entornos reales

Prueba lo que te puede romper en producción, no solo lo que es fácil de testear. El 80% de los bugs vienen de integración, configuración, datos y concurrencia — exactamente lo que el unit test aislado no cubre. Una guía práctica de testing por capas.

· 9 min de lectura
Leer más
Architecture Decision Records: documentar no solo el qué, sino el porqué
Arquitectura ADR

Architecture Decision Records: documentar no solo el qué, sino el porqué

Los ADRs son una práctica simple pero poderosa para capturar las decisiones arquitectónicas de un sistema. No se trata de documentación burocrática, sino de preservar el contexto que hace comprensible la arquitectura a lo largo del tiempo.

· 9 min de lectura
Leer más
Deuda técnica: el costo invisible de vivir solo de sprint en sprint
Deuda Técnica Arquitectura

Deuda técnica: el costo invisible de vivir solo de sprint en sprint

La deuda técnica no es el enemigo. El problema es ignorarla. Cómo balancear entrega continua con salud técnica sin paralizarte ni resignarte.

· 9 min de lectura
Leer más
Outbox pattern: integra sin perder mensajes
Arquitectura Mensajería

Outbox pattern: integra sin perder mensajes

Si actualizas la base de datos y luego notificas a sistemas externos, hazlo con outbox. Guardar en DB y luego mandar falla en el peor momento: guardaste, no enviaste, nadie sabe, y ya no puedes reconstruir.

· 8 min de lectura
Leer más
El ecosistema también es el producto
Arquitectura Diseño de software

El ecosistema también es el producto

El mérito técnico aislado no garantiza adopción. Una pieza de tecnología puede ser excelente en abstracto y aun así fracasar si no encaja con el resto del mundo. Por qué el ecosistema no es un detalle de implementación, sino parte central del diseño.

· 7 min de lectura
Leer más
Liderazgo Reflexiones

Experiencias que marcan

Hace más de 16 años viví una de las experiencias profesionales que más me han marcado: despedir a mi equipo por falta de presupuesto, y luego verlos regresar cuando la empresa se recuperó. Una historia de confianza, liderazgo y resiliencia.

· 3 min de lectura
Leer más
Observabilidad desde el día 1: logs útiles, métricas mínimas, trazas cuando duela
Observabilidad Arquitectura

Observabilidad desde el día 1: logs útiles, métricas mínimas, trazas cuando duela

Si no lo puedes medir, no lo puedes operar. El bug más caro es el que no puedes reproducir. Observabilidad no es ver que falló, es entender por qué y cómo. Una guía práctica de logs estructurados, métricas que importan y trazas distribuidas.

· 9 min de lectura
Leer más
Orquestación vs Coreografía en sistemas distribuidos: cómo elegir sin sufrir
Arquitectura Coreografía

Orquestación vs Coreografía en sistemas distribuidos: cómo elegir sin sufrir

Orquestación vs coreografía no es una pelea filosófica, es una decisión de operabilidad y control de fallas. Si tu proceso tiene alto costo de error, muchas ramas o necesita auditoría: orquesta. Si tu sistema vive de extensiones por eventos y el flujo es simple: coreografía.

· 6 min de lectura
Leer más
Cómo diseño backends Java que no se rompen: 10 principios pragmáticos (sin dogmas)
Arquitectura Java

Cómo diseño backends Java que no se rompen: 10 principios pragmáticos (sin dogmas)

10 principios prácticos que uso para diseñar backends Java que aguantan producción. No es una religión. Es una lista de decisiones que reducen sorpresas.

· 6 min de lectura
Leer más