21 puntos por kciter1 2026-03-28 | Aún no hay comentarios. | Compartir por WhatsApp
  • La afirmación es que la mayoría de los desafíos clave del desarrollo de software surgen no dentro del código, sino en los límites (Boundary) donde se encuentran código con código y sistema con sistema
  • Límite = punto donde se encuentran distintos intereses, responsabilidades y contextos
  • Casi todas las acciones del desarrollo, como separar funciones, modularizar o usar microservicios, son actos de crear límites
  • La ironía: creamos límites para manejar la complejidad, pero el límite en sí se convierte en una nueva fuente de complejidad

Límites que surgen en el código

  • Límite llamador-invocado: ambigüedad del contrato, como devolver null vs lanzar una excepción
  • Límite de interfaz: ley de la filtración de abstracciones; la complejidad oculta tarde o temprano atraviesa el límite
  • Límite de dependencias: las API y bibliotecas externas pueden cambiar sin previo aviso
  • Límite de transformación: como en la incompatibilidad de impedancia objeto-relacional, cada cruce de límite distorsiona o pierde información
  • Límite de confianza: frontera entre datos validados y no validados → vulnerabilidades de seguridad como recibir webhooks sin firma
  • Límite entre diseño e implementación: de requerimientos → diseño → implementación → operación, la pérdida de información se acumula en cada etapa

Límites físicos

  • Límite de orden: el estado puede cambiar entre puntos asíncronos; en sistemas distribuidos es aún más grave
  • Límite de escala: al superar un punto crítico, no ocurre un cambio cuantitativo sino cualitativo
  • Límite de entorno: ocurren situaciones como “en mi máquina sí funciona”
  • Límite de infraestructura: al separar servicios, no se puede garantizar la atomicidad

Límites que surgen entre personas

  • Límite organizacional: ley de Conway; la estructura organizacional determina la estructura del sistema. Cuando se reorganizan equipos, los límites del código y de la organización se desalinean
  • Límite de comunicación: como en el juego del teléfono descompuesto, la intención se deforma cada vez que se transmite un requerimiento, y el conocimiento tácito ni siquiera se transmite
  • Límite usuario-desarrollador: los límites que el desarrollador crea por seguridad se vuelven barreras molestas para el usuario

Cómo gobernar los límites

  • Reconoce los límites ocultos: presta atención a acoplamientos que no se ven en el código, como cuando dos servicios comparten la misma tabla de base de datos
  • Los patrones no son la respuesta: un patrón es solo una “solución efectiva bajo ciertas condiciones”; no debe aplicarse a ciegas
  • Tres preguntas para hacer frente a un límite:
    1. ¿Qué cruza este límite?
    2. ¿Qué pasa si este límite se rompe?
    3. ¿Quién administra este límite?
  • No trazar un límite también es una opción: mantener un monolito, evitar separaciones apresuradas, etc.
  • Los límites evolucionan: se separan y luego se vuelven a unir, o se unen y luego se vuelven a dividir → hace falta una revisión consciente y periódica

Aún no hay comentarios.

Aún no hay comentarios.