The Rules in Priority Order
Las Reglas en Orden de Prioridad
Rule 1 (highest priority): Passes all tests — working software is the foundation. Rule 2: No duplication (DRY) — every piece of knowledge has one authoritative representation. Rule 3: Expresses intent — names, small functions, and clear structure so any reader understands the purpose without a comment. Rule 4 (lowest priority): Fewest elements (YAGNI) — don't add classes, methods, or abstractions speculatively. When rules conflict, higher rules win.
Regla 1 (mayor prioridad): Pasa todas las pruebas — el software funcional es la base. Regla 2: Sin duplicación (DRY) — cada pieza de conocimiento tiene una sola representación autoritativa. Regla 3: Expresa la intención — nombres, funciones pequeñas y estructura clara para que cualquier lector entienda el propósito sin comentarios. Regla 4 (menor prioridad): Mínimos elementos (YAGNI) — no agregues clases, métodos ni abstracciones especulativamente.
Constant Refactoring
Refactorización Continua
Simple design is not a one-time upfront decision — it's the result of continuous refactoring guided by these four rules. After every change, ask: do all tests pass? Is there duplication? Is the intent clear? Is there dead weight? The four rules tell you when to stop adding features and start cleaning.
El diseño simple no es una decisión única al inicio — es el resultado de la refactorización continua guiada por estas cuatro reglas. Después de cada cambio, pregunta: ¿pasan todas las pruebas? ¿Hay duplicación? ¿Es clara la intención? ¿Hay peso muerto?
✏️
Code Challenge
Desafío de Código
Apply Rules 2, 3, and 4 to eliminate duplication, clarify intent, and remove speculative code.
Aplica las Reglas 2, 3 y 4 para eliminar la duplicación, clarificar la intención y eliminar el código especulativo.
💡 Key takeaway
Kent Beck's four rules give you a stopping condition: when your code passes all tests, has no duplication, expresses intent, and has the fewest possible elements — stop and ship.
Las cuatro reglas de Kent Beck te dan una condición de parada: cuando tu código pasa todas las pruebas, no tiene duplicación, expresa la intención y tiene el mínimo de elementos posibles — para y entrega.