Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Arquitectura Limpia60 XP6 min

La Matriz de Eisenhower en el Desarrollo

La arquitectura es importante pero rara vez urgente. Los desarrolladores deben defender la buena estructura frente a la presión del negocio.

Por qué importa

La Matriz de Eisenhower divide las tareas en cuatro cuadrantes basados en urgencia e importancia. Robert C. Martin la aplica directamente al desarrollo de software: la arquitectura y la buena estructura son importantes pero casi nunca urgentes. Los bugs urgentes, los plazos de funcionalidades y los problemas de clientes ocupan el cuadrante "urgente" — y siempre desplazan el trabajo "importante" si los desarrolladores lo permiten.

Las partes interesadas del negocio siempre presionarán a los desarrolladores para priorizar lo urgente sobre lo importante. El argumento de Martin es que los desarrolladores son las únicas personas en la sala que entienden ambas dimensiones — y por lo tanto tienen la responsabilidad profesional de proteger la arquitectura incluso cuando parece que puede esperar. El desorden creado al dejar que se acumulen victorias urgentes se compone exponencialmente hasta que todo el sistema se detiene.

✗El problema

Code written under deadline pressure skips abstraction and tests. Every shortcut is a future tax paid with interest — the "urgent" feature becomes permanent technical debt.

Bad

def get_tax_rate(country: str) -> float:
    # TODO: load from config — no time, deadline tomorrow
    return 0.21  # hardcoded for Spain only

def calculate_invoice(subtotal: float, country: str) -> float:
    tax = subtotal * get_tax_rate(country)
    return subtotal + tax
function getTaxRate(_country: string): number {
  // TODO: load from config — skipped to hit deadline
  return 0.21; // breaks for every country except Spain
}

function calculateInvoice(subtotal: number, country: string): number {
  return subtotal + subtotal * getTaxRate(country);
}

✓La solución

Doing the important work right, even when it feels slower, keeps future change cheap. An abstracted, testable design costs little more up front and pays dividends forever.

Good

class ConfiguredTaxStrategy:
    def __init__(self, rates: dict[str, float]):
        self._rates = rates

    def rate(self, country: str) -> float:
        if country not in self._rates:
            raise ValueError(f"No tax rate for '{country}'")
        return self._rates[country]

class InvoiceCalculator:
    def __init__(self, tax):
        self._tax = tax

    def total(self, subtotal: float, country: str) -> float:
        return subtotal * (1 + self._tax.rate(country))

rates = ConfiguredTaxStrategy({"ES": 0.21, "DE": 0.19, "UK": 0.20})
calc  = InvoiceCalculator(rates)
print(calc.total(100.0, "DE"))  # 119.0
class ConfiguredTaxStrategy {
  constructor(private rates: Record<string, number>) {}
  rate(country: string): number {
    if (!(country in this.rates))
      throw new Error(`No tax rate for '${country}'`);
    return this.rates[country];
  }
}

class InvoiceCalculator {
  constructor(private tax: ConfiguredTaxStrategy) {}
  total(subtotal: number, country: string): number {
    return subtotal * (1 + this.tax.rate(country));
  }
}

const rates = new ConfiguredTaxStrategy({ ES: 0.21, DE: 0.19, UK: 0.20 });
const calc  = new InvoiceCalculator(rates);
console.log(calc.total(100, "DE")); // 119

💡Conclusión clave

Las tareas urgentes se sienten apremiantes; las importantes construyen el futuro. Solo los desarrolladores entienden la diferencia — y eso convierte defender la arquitectura en una responsabilidad profesional, no solo en una buena práctica.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Las tareas urgentes pero no importantes destruyen la arquitectura. Las importantes pero no urgentes la construyen.

✗ Tu versión

La Matriz de Eisenhower en el Desarrollo — CleanKata — CleanKata